zoukankan      html  css  js  c++  java
  • 更新k8s镜像版本的三种方式

    一、知识准备

    更新镜像版本是在k8s日常使用中非常常见的一种操作,本文主要介绍更新介绍的三种方法


    二、环境准备

    组件 版本
    OS Ubuntu 18.04.1 LTS
    docker 18.06.0-ce

    三、准备镜像

    首先准备2个不同版本的镜像,用于测试(已经在阿里云上创建好2个不同版本的nginx镜像)

    docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
    docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2
    

    这两个镜像只有版本号不同,其他的都一样

    root@k8s-master:~# docker run -d --rm -p 10080:80 nginx:v1
    e88097841c5feef92e4285a2448b943934ade5d86412946bc8d86e262f80a050
    root@k8s-master:~# curl http://127.0.0.1:10080
    ----------
    version: v1
    hostname: f5189a5d3ad3
    

    四、更新镜像的三种方法

    我们首先准备一个yaml文件用于测试:

    root@k8s-master:~# more image_update.yaml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: image-deployment
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: image-update
        spec:
          containers:
          - name: nginx
            image: registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
            imagePullPolicy: Always
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
        selector:
          app: image-update
        ports:
        - protocol: TCP
          port: 10080
          targetPort: 80
    

    简单验证一下:

    root@k8s-master:~# kubectl apply -f image_update.yaml
    deployment.extensions "image-deployment" created
    service "nginx-service" created
    
    root@k8s-master:~# kubectl get svc
    NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
    nginx-service   ClusterIP   10.254.240.225   <none>        10080/TCP   1m
    root@k8s-master:~# kubectl get pod  -owide
    NAME                                READY     STATUS    RESTARTS   AGE       IP              NODE
    image-deployment-58b646ffb6-d4sl7   1/1       Running   0          1m        10.10.169.131   k8s-node2
    
    root@k8s-master:~# curl http://10.254.240.225:10080
    ----------
    version: v1
    hostname: image-deployment-58b646ffb6-d4sl7
    

    已经正常工作了,并且当前版本是v1

    下面介绍修改镜像的方法

    (1)修改配置文件

    这应该是最常用的方法了

    修改配置文件,将nginx:v1改成nginx:v2

    root@k8s-master:~# sed -i 's/nginx:v1/nginx:v2/g' image_update.yaml
    
    

    应用配置文件:

    root@k8s-master:~# kubectl apply -f image_update.yaml
    deployment.extensions "image-deployment" configured
    service "nginx-service" unchanged
    root@k8s-master:~# kubectl get pod  -owide
    NAME                                READY     STATUS              RESTARTS   AGE       IP              NODE
    image-deployment-55cb946d47-7tzp8   0/1       ContainerCreating   0          16s       <none>          k8s-node1
    image-deployment-58b646ffb6-d4sl7   1/1       Terminating         0          11m       10.10.169.131   k8s-node2
    

    等待一段时间之后,v2版本ready之后

    root@k8s-master:~# kubectl get pod  -owide
    NAME                                READY     STATUS    RESTARTS   AGE       IP              NODE
    image-deployment-55cb946d47-7tzp8   1/1       Running   0          1m        10.10.36.119    k8s-node1
    root@k8s-master:~# curl http://10.254.240.225:10080
    ----------
    version: v2
    hostname: image-deployment-55cb946d47-7tzp8
    

    成功更新为v2

    (2)使用patch命令

    首先找到deployment:

    root@k8s-master:~# kubectl get deploy
    NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    image-deployment   1         1         1            1           20m
    

    通过patch更新:

    root@k8s-master:~# kubectl patch deployment image-deployment --patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image":"registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1"}]}}}}'
    deployment.extensions "image-deployment" patched
    

    等待一段时间之后:

    root@k8s-master:~# curl http://10.254.240.225:10080
    ----------
    version: v1
    hostname: image-deployment-58b646ffb6-hbzk9
    

    通过patch更新之后,镜像版本更新回v1

    (3)使用set image命令

    使用set image命令将镜像版本更新到v2

    root@k8s-master:~# kubectl set image deploy image-deployment *=registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2
    
    root@k8s-master:~# curl http://10.254.240.225:10080
    ----------
    version: v2
    hostname: image-deployment-55cb946d47-zsdc6
    

    等待一段时间之后,版本又更新到v2

    五、小结

    ● 本文介绍了3种方法更新镜像版本,分别是:配置文件;patch方式;set image方式



    至此,本文结束
    在下才疏学浅,有撒汤漏水的,请各位不吝赐教...

  • 相关阅读:
    Pandas之groupby分组
    Pandas之isna,fillna
    Spark算子
    Spark算子
    常见排序算法
    Ubuntu18关机时出现 A stop job is running for ...导致关机很慢
    攻防世界-crypto-Decode_The_File(base64隐写)
    攻防世界-crypto-Decrypt-the-Message(Poem Codes-诗歌密码)
    ubuntu 安装比特币钱包
    netapp 常用命令
  • 原文地址:https://www.cnblogs.com/MrVolleyball/p/10315698.html
Copyright © 2011-2022 走看看