kubernetes deployment升级和回滚

a.创建deployment pod

kubectl run mynginx --image=docker.io/nginx:1.13 --replicas=4 --record

准备svc文件

apiVersion: v1
kind: Service
metadata:
  name: nginxsvc
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
  selector:
    run: mynginx    #修改为需要关联pod的lable参数,‘kubectl describe deploy/mynginx‘查看

创建nginx-svc

kubectl create -f nginx-svc.yaml
[root@master01 ~]# kubectl get all -o wide
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/mynginx   4         4         4            4           14m

NAME             CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE       SELECTOR
svc/kubernetes   10.254.0.1      <none>        443/TCP        1d        <none>
svc/nginxsvc     10.254.198.39   <nodes>       80:30080/TCP   9m        run=mynginx

NAME                    DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)               SELECTOR
rs/mynginx-1186046214   4         4         4         14m       mynginx        docker.io/nginx:1.13   pod-template-hash=1186046214,run=mynginx

NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE
po/mynginx-1186046214-0q0cg   1/1       Running   0          4m        172.16.43.4   192.168.29.203
po/mynginx-1186046214-7g99g   1/1       Running   0          4m        172.16.22.3   192.168.29.202
po/mynginx-1186046214-bzjn2   1/1       Running   0          4m        172.16.43.3   192.168.29.203
po/mynginx-1186046214-g9dd1   1/1       Running   0          4m        172.16.22.4   192.168.29.202

b.升级mynginx,nginx:1.13 > nginx:1.15

kubectl set image deploy/mynginx mynginx=docker.io/nginx:1.15  #升级
[root@master01 ~]# kubectl get all -o wide
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/mynginx   4         4         4            4           35m

NAME             CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE       SELECTOR
svc/kubernetes   10.254.0.1      <none>        443/TCP        1d        <none>
svc/nginxsvc     10.254.198.39   <nodes>       80:30080/TCP   30m       run=mynginx

NAME                    DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)               SELECTOR
rs/mynginx-1186046214   0         0         0         35m       mynginx        docker.io/nginx:1.13   pod-template-hash=1186046214,run=mynginx
rs/mynginx-1335861512   4         4         4         2m        mynginx        docker.io/nginx:1.15   pod-template-hash=1335861512,run=mynginx

NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE
po/mynginx-1335861512-7h3hc   1/1       Running   0          2m        172.16.43.5   192.168.29.203
po/mynginx-1335861512-cp080   1/1       Running   0          2m        172.16.22.2   192.168.29.202
po/mynginx-1335861512-k6kkb   1/1       Running   0          2m        172.16.43.4   192.168.29.203
po/mynginx-1335861512-xg6cr   1/1       Running   0          2m        172.16.43.3   192.168.29.203

c.回滚升级

kubectl rollout history deploy/mynginx  #查看操作历史
[root@master01 ~]# kubectl rollout history deploy/mynginx
deployments "mynginx"
REVISION    CHANGE-CAUSE
1        kubectl run mynginx --image=docker.io/nginx:1.13 --replicas=4 --record
2        kubectl set image deploy/mynginx mynginx=docker.io/nginx:1.15
kubectl rollout undo deploy/mynginx --to-revision=1  #回滚
[root@master01 ~]# kubectl rollout undo deploy/mynginx --to-revision=1
deployment "mynginx" rolled back
[root@master01 ~]# kubectl get all -o wide
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/mynginx   4         4         4            4           39m

NAME             CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE       SELECTOR
svc/kubernetes   10.254.0.1      <none>        443/TCP        1d        <none>
svc/nginxsvc     10.254.198.39   <nodes>       80:30080/TCP   35m       run=mynginx

NAME                    DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)               SELECTOR
rs/mynginx-1186046214   4         4         4         39m       mynginx        docker.io/nginx:1.13   pod-template-hash=1186046214,run=mynginx
rs/mynginx-1335861512   0         0         0         6m        mynginx        docker.io/nginx:1.15   pod-template-hash=1335861512,run=mynginx

NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE
po/mynginx-1186046214-4z1f5   1/1       Running   0          51s       172.16.43.3   192.168.29.203
po/mynginx-1186046214-f1qzz   1/1       Running   0          52s       172.16.22.4   192.168.29.202
po/mynginx-1186046214-ks19b   1/1       Running   0          52s       172.16.22.3   192.168.29.202
po/mynginx-1186046214-xqxj6   1/1       Running   0          50s       172.16.43.6   192.168.29.203
[root@master01 ~]# kubectl rollout history deploy/mynginx
deployments "mynginx"
REVISION    CHANGE-CAUSE
2        kubectl set image deploy/mynginx mynginx=docker.io/nginx:1.15
3        kubectl run mynginx --image=docker.io/nginx:1.13 --replicas=4 --record

原文地址:https://www.cnblogs.com/omgasw/p/10567376.html

时间: 2024-08-30 14:04:41

kubernetes deployment升级和回滚的相关文章

k8s中helm安装部署,升级和回滚(chart,helm,tiller,StorageClass)

一.Helm介绍 helm是基于kubernetes 的包管理器.它之于 kubernetes 就如 yum 之于 centos,pip 之于 python,npm 之于 javascript 那 helm 的引入对于管理集群有哪些帮助呢? 更方便地部署基础设施,如 gitlab,postgres,prometheus,grafana 等 更方便地部署自己的应用,为公司内部的项目配置 Chart,使用 helm 结合 CI,在 k8s 中部署应用一行命令般简单 1.Helm用途 Helm把Kub

K8s资源对象的基本管理(升级、回滚、扩容、缩容)

博文大纲:一.资源创建二.解决客户端无法访问k8s内部pod所运行的服务三.搭建私有仓库,并自定义镜像四.版本扩容.缩容五.服务的升级与回滚 一.资源创建 本次博文主要介绍如何使用命令行的方式创建资源! [[email protected] ~]# kubectl run test --image=nginx:latest --replicas=5 //基于httpd的镜像创建一个deployment类型的控制组,名称为test,并指定副本数量为5 [[email protected] ~]#

k8s资源对象的升级、回滚、扩容、缩容

一.资源创建的方式之一,命令的方式创建资源,理解命令运行之后的动作,通过查看资源的方式,总结Pod名称的由来. 当我们执行创建资源的命令后,deployment这个控制器会通过replicaset控制器去管理pod,下面通过一个实例来分析,当我们执行创建资源的命令后,k8s都做了些什么(通过其NAME即可发现规律)? 运行一个deployment [[email protected] ~]# kubectl run test01 --image=nginx:latest --replicas=2

Pod 升级和回滚

Pod 滚动升级(Deployment) 参考链接 使用kubernetes 进行升级的时候并不需要停止业务,kubectl 支持滚动升级的方式,每次更新一个pod,而不是同时删除整个服务.目前的kubernetes 版本只支持Replication Controllers的方式实现滚动升级.然而,官方推荐的方式是使用Deployments. Deployments是一个更高级别的控制器,它以声明方式自动执行应用程序的滚动更新,因此推荐使用.这里将重点介绍使用Deployment的方式. 创建一

K8S的名称空间创建&amp;&amp;版本的升级、回滚操作(回滚到指定版本)

创建一个私有仓库. #运行一个registry容器 [[email protected] ~]# docker run -tid --name registry -p 5000:5000 --restart always registry:latest #在所有需要使用私有仓库的的节点上进行以下配置: [[email protected] ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H un

在Linux上升级、回滚和卸载SQL Server 2017

升级mssql-server包到最新版本 sudo yum update mssql-server 该命令下载最新包,并替换/opt/mssql/下的二进制文件.用户生成的数据库和系统数据库不会受该操作的影响. 回滚SQL Server到之前的某个版本 1. 识别你想降级到的SQL Server版本号.对应的版本号列表,查看这里. 2. 降级到之前的一个SQL Server版本.将<version_number>替换为步骤1中的版本号. sudo yum downgrade mssql-ser

k8s核心资源对象& NameSpace(指定版本回滚)

k8s核心的资源对象: Pod:是运行以及调度的原子单位,也就是k8s中最小的资源单位,同一个pod可以同时运行多个container,多个container之间共享:(UTS(主机名和域名),IPC(消息队列和共享内存),NET(网络栈,端口等),namespace(名称空间)),但USR(用户和组),MNT(挂载点),PID(进行编号)是相互隔离的.pod有两种类型的pod:一类是由控制器控制的pod,一类是自主式pod(不受控制器管理,自己管理自己) Deployment:最常见的pod控

Kubernetes Deployment与Replica Set

Deployment相对于RC的优势 RS与Deployment主要用于替代RC.RS的全称为Replica Set.相对于RC,RS与Deployment的优势如下: RC只支持基于等式的selector,如env=dev或者environment!=qa.但在RS中,还支持新的基于集合的selector,如version in (v1.0,v2.0)或者env not in (dev,qa).这给复杂的运维管理带来方便 使用Deployment升级Pod只需要定义Pod的最终状态,k8s会为

jenkins结合ansible用shell实现自动化部署和回滚

最近用jenkins+gitlab+ansible做持续化集成,自动化部署和版本回滚.然而deploy plugin没能做到增量升级和回滚操作,折腾了很久决定自己写个脚本来简单实现. 环境: centos 7.0 64位 gitlab:v2.9.0 git:2.9 jenkins 1.651.3.git plugin.GitLab Plugin.Dynamic Parameter Plug-in等 ansible:2.1.0.0 各工具职能: 1.gitlab做版本管理 2.jenkins根据指