博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
更新k8s镜像版本的三种方式
阅读量:4503 次
发布时间:2019-06-08

本文共 3924 字,大约阅读时间需要 13 分钟。

原文:

一、知识准备

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

二、环境准备

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

三、准备镜像

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

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

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

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

四、更新镜像的三种方法

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

root@k8s-master:~# more image_update.yamlapiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: image-deploymentspec:  replicas: 1  template:    metadata:      labels:        app: image-update    spec:      containers:      - name: nginx        image: registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1        imagePullPolicy: Always---apiVersion: v1kind: Servicemetadata:  name: nginx-servicespec:    selector:      app: image-update    ports:    - protocol: TCP      port: 10080      targetPort: 80

简单验证一下:

root@k8s-master:~# kubectl apply -f image_update.yamldeployment.extensions "image-deployment" createdservice "nginx-service" created
root@k8s-master:~# kubectl get svcNAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGEnginx-service   ClusterIP   10.254.240.225   
10080/TCP 1mroot@k8s-master:~# kubectl get pod -owideNAME READY STATUS RESTARTS AGE IP NODEimage-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: v1hostname: 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.yamldeployment.extensions "image-deployment" configuredservice "nginx-service" unchangedroot@k8s-master:~# kubectl get pod  -owideNAME                                READY     STATUS              RESTARTS   AGE       IP              NODEimage-deployment-55cb946d47-7tzp8   0/1       ContainerCreating   0          16s       
k8s-node1image-deployment-58b646ffb6-d4sl7 1/1 Terminating 0 11m 10.10.169.131 k8s-node2

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

root@k8s-master:~# kubectl get pod  -owideNAME                                READY     STATUS    RESTARTS   AGE       IP              NODEimage-deployment-55cb946d47-7tzp8   1/1       Running   0          1m        10.10.36.119    k8s-node1root@k8s-master:~# curl http://10.254.240.225:10080----------version: v2hostname: image-deployment-55cb946d47-7tzp8

成功更新为v2

(2)使用patch命令

首先找到deployment:

root@k8s-master:~# kubectl get deployNAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGEimage-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: v1hostname: 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: v2hostname: image-deployment-55cb946d47-zsdc6

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

五、小结

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


至此,本文结束

在下才疏学浅,有撒汤漏水的,请各位不吝赐教...

posted on
2019-04-08 14:54 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10670477.html

你可能感兴趣的文章
Python微信
查看>>
Oracle 存储过程起步
查看>>
python变量和作用域
查看>>
将AJAX返回值纵向排序赋值给Table标签
查看>>
MacOS下brew的安装和使用 lua环境搭建 lua http请求
查看>>
Java自学成长路线(转载)
查看>>
UITableView的section header view悬停的方法
查看>>
Codeforces Round #568 (div. 2)
查看>>
asp.net(C#)链接Oracle连接字符串
查看>>
【深度学习笔记】Anaconda及开发环境搭建
查看>>
CentOS虚拟机不能联网状况下yum方式从本地安装软件包(转载的)
查看>>
INF文件中的HKR
查看>>
007-Python-列表,元祖,字典,字符串,装饰器,可变长度参数
查看>>
企业网络信息安全建设的方法论
查看>>
linux初学者-普通磁盘分区篇
查看>>
MySQL order null 0 - 把null和0(零)排在最后
查看>>
jsoup
查看>>
android SD卡浏览器
查看>>
ComboBox 中 DisplayMember 和 ValueMember 都是具体干什么的?
查看>>
[mobile开发碎碎念]手机页面上显示PDF文件
查看>>