全部产品

修改 Pod 镜像保持 IP 不变

更新时间:2019-12-10 20:18:15

背景

当您在Virtual-Node节点部署一个bare pod应用,在程序迭代过程解决一些bug或者增加一些特性后,制作新镜像,需要更新bare pod镜像,同时需要保证Pod的IP不变。您可以参考此文档。

前提条件

  1. 您需要开通弹性容器实例 ECI 服务、访问控制 (RAM) 服务。并完成对弹性容器实例 ECI 服务的 RAM 角色授权。
  2. 在本地安装kubectl命令,同时保证kubectl可以与您的kubernetes集群交互。可以参考通过 kubectl 连接 Kubernetes 集群

通过命令创建Pod

准备一个简单的Pod:

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: nginx
  5. namespace: default
  6. spec:
  7. nodeName: virtual-kubelet
  8. containers:
  9. - image: nginx:1.7.9
  10. imagePullPolicy: Always
  11. name: nginx

执行命令创建Pod:

  1. kubectl create -f nginx.yaml

通过命令查询Pod信息

  1. $ kubectl get pod/nginx -n default -o wide
  2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  3. nginx 1/1 Running 0 7m34s 192.168.0.29 virtual-kubelet <none> <none>

通过ECI控制台查询Pod信息

eci_detail_1

通过命令修改Pod镜像

通过kubectl修改bare pod的镜像或者镜像tag可以采用一下几种方式:

  • kubectl patch
  • kubectl edit
  • kubectl apply

演示将Pod的镜像nginx:1.7.9修改为nginx:1.9.6

kubectl apply方式

修改容器镜像tag

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: nginx
  5. namespace: default
  6. spec:
  7. nodeName: virtual-kubelet
  8. containers:
  9. - image: nginx:1.9.6
  10. imagePullPolicy: Always
  11. name: nginx

执行kubectl apply:

  1. kubectl apply -f nginx.yaml

执行kubectl验证镜像和IP:

  1. $ kubectl get pod/nginx -n default -o wide
  2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  3. nginx 1/1 Running 0 8m27s 192.168.0.29 virtual-kubelet <none> <none>

kubectl edit方式

执行edit命令进入交互模式,修改Pod镜像:

  1. kubectl edit pod/nginx -o yaml

执行kubectl验证镜像和IP:

  1. $ kubectl get pod/nginx -n default -o wide
  2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  3. nginx 1/1 Running 0 9m11s 192.168.0.29 virtual-kubelet <none> <none>

kubectl patch方式

执行patch命令修改Pod内容器镜像:

  1. kubectl patch pod nginx -p '{"spec":{"containers":[{"name": "nginx","image": "nginx:1.9.6"}]}}'

执行kubectl验证镜像和IP:

  1. $ kubectl get pod -n default -o wide
  2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  3. nginx 1/1 Running 0 9m43s 192.168.0.29 virtual-kubelet <none> <none>

通过ECI控制台验证

Pod执行完镜像更新操作后,可以去ECI控制台查看ContainerGroup详情,确认镜像是否修改成功。

eci_detail_2