本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

修改ECI Pod的鏡像並保持IP不變

更新時間:2024-07-05 23:28

對於部署在虛擬節點上的Pod應用,在應用迭代過程中,因為解決bug或者增加功能特性而製作新的鏡像後,您可能需要修改鏡像,同時為了不影響業務,需要保持Pod的IP不變。本文介紹如何通過kubectl命令修改Pod的容器鏡像,並保持Pod的IP不變。

前提條件

已準備好要更新的鏡像,且已將鏡像上傳到鏡像倉庫中。

操作步驟

下文以部署Nginx的Pod為例,介紹如何通過kubectl命令,將容器鏡像從nginx:1.7.9修改為nginx:1.9.6,並保持Pod的IP不變。

說明

體驗以下樣本請確保叢集所屬VPC已建立公網NAT Gateway並配置SNAT,以便可以拉取公網鏡像。

  1. 建立一個ECI Pod。

    kubectl create -f nginx.yaml

    nginx.yaml的內容樣本如下,使用的容器鏡像為nginx:1.7.9

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: default
      alibabacloud.com/eci: "true" 
    spec:
      containers:
      - image: nginx:1.7.9
        imagePullPolicy: Always
        name: nginx
  2. 查詢Pod資訊。

    1. 查詢Pod的IP。

      kubectl get pod/nginx -n default -o wide

      返回樣本如下,可以看到Pod的IP為172.16.22.193。

      NAME    READY   STATUS    RESTARTS   AGE    IP              NODE                           NOMINATED NODE   READINESS GATES
      nginx   1/1     Running   0          5m5s   172.16.22.193   virtual-kubelet-cn-beijing-e   <none>           <none>
    2. 查詢Pod的鏡像tag。

      kubectl get pod/nginx -n default -o=custom-columns='IMAGE:spec.containers[*].image'

      返回樣本如下,可以查看Pod的容器鏡像為nginx:1.7.9

      IMAGE
      nginx:1.7.9
  3. 選擇以下一種方式修改鏡像。

    • kubectl patch

      執行kubectl命令直接修改容器鏡像tag。

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

      執行kubectl edit命令編輯Pod,直接修改容器鏡像tag。

      kubectl edit pod/nginx -o yaml 
    • kubectl apply

      開啟Pod對應的nginx.yaml設定檔,修改容器鏡像tag,然後執行kubectl apply命令重新部署Pod。

      kubectl apply -f nginx.yaml 
  4. 查看修改後的Pod資訊。

    1. 查詢Pod的IP。

      kubectl get pod/nginx -n default -o wide

      返回樣本如下,可以看到Pod的IP與修改前一致,為172.16.22.193。

      NAME    READY   STATUS    RESTARTS   AGE   IP              NODE                           NOMINATED NODE   READINESS GATES
      nginx   1/1     Running   1          19m   172.16.22.193   virtual-kubelet-cn-beijing-e   <none>           <none>
    2. 查詢Pod的鏡像tag。

      kubectl get pod/nginx -n default -o=custom-columns='IMAGE:spec.containers[*].image'

      返回樣本如下,可以查看Pod的容器鏡像已經修改為nginx:1.9.6

      IMAGE
      nginx:1.9.6
  • 本頁導讀 (1, M)
  • 前提條件
  • 操作步驟
文檔反饋