Kubernetes 容器更新

mac2024-05-15  53

K8S最终管理的对象是Docker容器,生产环境中,Docker容器经常会更新数据和内容

将更新的内容通过kubectl cp或者docker cp至新的容器将新的容器数据Commit提交为新镜像通过Dockerfile方案制作新的镜像

将更新的内容通过kubectl cp或者docker cp至新的容器

docker cp方式

测试页面内容 [root@localhost ~]# cat index.html <h1>Jeff Test</h1> 在Node上执行 [root@localhost ~]# for i in `docker ps -a | grep nginx | grep -v pod | cut -d " " -f 1`;do docker cp index.html $i:/usr/share/nginx/html/;done 修改结果

kubectl 方式 4. 测试页面内容

[root@localhost ~]# cat index.html <hr> <h1>Jeff </h1> <hr> 在Master上执行 [root@localhost ~]# for i in `kubectl get pods --namespace default |grep nginx | awk '{print "default/"$1}'`;do kubectl cp index.html $i:/usr/share/nginx/html/;done 修改结果

回到目录

将新的容器数据Commit提交为新镜像

直接修改容器中的内容 提交镜像 [root@localhost ~]# docker ps | grep sh-nginx-vv1-1570628498-1q5c3 04d2c563d188 nginx "nginx -g 'daemon ..." About an hour ago Up About an hour k8s_sh-nginx-vv1.1462080_sh-nginx-vv1-1570628498-1q5c3_default_0d15b030-fa26-11e9-8bc7-000c29580217_24b057b3 06e4f3ea0c15 registry.access.redhat.com/rhel7/pod-infrastructure:latest "/usr/bin/pod" About an hour ago Up About an hour k8s_POD.ae8ee9ac_sh-nginx-vv1-1570628498-1q5c3_default_0d15b030-fa26-11e9-8bc7-000c29580217_41e4e058 [root@localhost ~]# docker commit 04d2c563d188 sha256:be7992562e3ee292d7d1667e29a6b211867ec69c1c53159d693edd11c204673c 修改镜像名称 [root@localhost ~]# docker tag be7992562e3e 127.0.0.1:5000/nginx:v1 # 上传至私有仓库 [root@localhost ~]# docker push 127.0.0.1:5000/nginx:v1

访问web,查看是否上传成功 http://192.168.197.11:5000/v2/_catalog

修改部署

回到目录

通过Dockerfile方案制作新的镜像

基于Dockerfile方案跟Docker commit类似的操作,更新方法完全一样

基于Kubectl命令行更新 将nginx-v1部署应用的镜像修改为最新的镜像名称:nginx:v1,命令如下:

[root@localhost ~]# kubectl get deployments -n default NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-v1 2 2 2 2 2h [root@localhost ~]# kubectl -n default set image deployments/nginx-v1 nginx-v1=192.168.197.11:5000/nginx:v1

回滚

[root@localhost ~]# kubectl -n default rollout undo deployments/nginx-v1

查看回滚是否成功

[root@localhost ~]# kubectl -n default rollout status deployments/nginx-v1

查看更新的版本信息

[root@localhost ~]# kubectl rollout history deploy/nginx-v1

查看具体某个版本信息

[root@localhost ~]# kubectl rollout history deploy/nginx-v1 --revision=4 deployments "nginx-v1" with revision #4 Labels: app=nginx-v1 pod-template-hash=44819141 Containers: nginx-v1: Image: docker.io/nginx Port: Volume Mounts: <none> Environment Variables: <none> No volumes.

回滚到某个具体的版本

[root@localhost ~]# kubectl -n default rollout undo deployment/nginx-v1 --to-revision=4 deployment "nginx-v1" rolled back

回到目录

最新回复(0)