模块 6 - 更新你的应用

难度: 初级 预计时间: 10 分钟

本场景的目标是使用 kubectl set image 命令更新已部署的应用,并使用 rollout undo 命令回滚。

步骤 1 - 更新应用版本

要列出你的部署,运行 get deployments 命令

kubectl get deployments

要列出正在运行的 Pod,运行 get pods 命令

kubectl get pods

要查看应用的当前镜像版本,运行 describe pods 命令并查找 Image 字段

kubectl describe pods

要将应用镜像更新到版本 2,使用 set image 命令,后跟部署名称和新镜像版本

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/k8s-minikube/kubernetes-bootcamp:v2

该命令通知 Deployment 为你的应用使用不同的镜像,并启动了滚动更新。使用 get pods 命令检查新 Pod 的状态,并查看旧 Pod 正在终止。

kubectl get pods

步骤 2 - 验证更新

首先,检查应用是否正在运行。要查找公开的 IP 和端口,运行 describe service 命令

kubectl describe services/kubernetes-bootcamp

Docker Desktop 用户注意: 由于 Docker Desktop 网络限制,默认情况下你无法直接从主机访问 Pod。运行 minikube service kubernetes-bootcamp,这将在 Pod 和你的主机之间创建一个 SSH 隧道,并在你的默认浏览器中打开一个连接到该服务的窗口。可以通过按 Control-C 终止隧道,然后继续执行 curl $(minikube ip):$NODE_PORT 命令之后的教程。

创建一个名为 NODE_PORT 的环境变量,其值为分配的节点端口

export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
echo NODE_PORT=$NODE_PORT

接下来,对公开的 IP 和端口执行 curl 命令

curl $(minikube ip):$NODE_PORT

每次运行 curl 命令,你都会命中一个不同的 Pod。请注意,所有 Pod 都正在运行最新版本 (v2)。

你还可以通过运行 rollout status 命令来确认更新

kubectl rollout status deployments/kubernetes-bootcamp

要查看应用的当前镜像版本,运行 describe pods 命令

kubectl describe pods

在输出的 Image 字段中,验证你正在运行最新的镜像版本 (v2)。

步骤 3 - 回滚更新

我们再执行一次更新,部署一个标记为 v10 的镜像

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/k8s-minikube/kubernetes-bootcamp:v10

使用 get deployments 查看部署的状态

kubectl get deployments

请注意,输出中没有列出所需的可用 Pod 数量。运行 get pods 命令列出所有 Pod

kubectl get pods

请注意,一些 Pod 的状态为 ImagePullBackOff

要深入了解问题,运行 describe pods 命令

kubectl describe pods

在受影响 Pod 的输出 Events 部分中,请注意 v10 镜像版本在仓库中不存在。

要将部署回滚到上次工作的版本,使用 rollout undo 命令

kubectl rollout undo deployments/kubernetes-bootcamp

rollout undo 命令将部署恢复到上一个已知状态(镜像的 v2 版本)。更新是版本化的,你可以回滚到部署的任何先前已知状态。

再次使用 get pods 命令列出 Pod

kubectl get pods

有四个 Pod 正在运行。要检查这些 Pod 上部署的镜像,使用 describe pods 命令

kubectl describe pods

部署再次使用应用的稳定版本 (v2)。回滚成功。


最后修改于 2024 年 6 月 6 日:site: 更新教程图片 (b02c349ed)