模块 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

该命令通知部署为你的应用程序使用不同的镜像,并启动滚动更新。 使用 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)