[k8s]kubenets基于rc滚动升级

来源:互联网 发布:迷你音响推荐 知乎 编辑:程序博客网 时间:2024/06/05 18:57


本文讲的是使用rc滚动升级,



其他关于k8s的文字


一步一步学习k8syaml


k8s的command和args



k8s-proxy浅析



k8s高可用和ingress




https://kubernetes.io/docs/tasks/run-application/rolling-update-replication-controller/ 

你运行的是version 1.7.9 of nginx:

apiVersion: v1kind: ReplicationControllermetadata:  name: my-nginxspec:  replicas: 5  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: nginx:1.7.9        ports:        - containerPort: 80

使用kubectl rolling-update --image 指定一个镜像升级:

$ kubectl rolling-update my-nginx --image=nginx:1.9.1Created my-nginx-ccba8fbd8cc8160970f63f9a2696fc46
另开一个窗口观察升级过程:

$ kubectl get pods -l app=nginx -L deploymentNAME                                              READY     STATUS    RESTARTS   AGE       DEPLOYMENTmy-nginx-ccba8fbd8cc8160970f63f9a2696fc46-k156z   1/1       Running   0          1m        ccba8fbd8cc8160970f63f9a2696fc46my-nginx-ccba8fbd8cc8160970f63f9a2696fc46-v95yh   1/1       Running   0          35s       ccba8fbd8cc8160970f63f9a2696fc46my-nginx-divi2                                    1/1       Running   0          2h        2d1d7a8f682934a254002b56404b813emy-nginx-o0ef1                                    1/1       Running   0          2h        2d1d7a8f682934a254002b56404b813emy-nginx-q6all                                    1/1       Running   0          8m        2d1d7a8f682934a254002b56404b813e
注:新镜像的名字会有一个hash后缀,用来和原来的镜像区分

kubectl rolling-update 升级过程如下

Scaling up my-nginx-ccba8fbd8cc8160970f63f9a2696fc46 from 0 to 3, scaling down my-nginx from 3 to 0 (keep 3 pods available, don't exceed 4 pods)Scaling my-nginx-ccba8fbd8cc8160970f63f9a2696fc46 up to 1Scaling my-nginx down to 2Scaling my-nginx-ccba8fbd8cc8160970f63f9a2696fc46 up to 2Scaling my-nginx down to 1Scaling my-nginx-ccba8fbd8cc8160970f63f9a2696fc46 up to 3Scaling my-nginx down to 0Update succeeded. Deleting old controller: my-nginxRenaming my-nginx-ccba8fbd8cc8160970f63f9a2696fc46 to my-nginxreplicationcontroller "my-nginx" rolling updated

如果升级过程报错了,你可以用 --rollback:

尼玛,这里怎么会报错?是创建pod的过程,如果创建新pod报错,我估计新版的image问题吧,不应该到生产才发现啊.

$ kubectl rolling-update my-nginx --rollbackSetting "my-nginx" replicas to 1Continuing update with existing controller my-nginx.Scaling up nginx from 1 to 1, scaling down my-nginx-ccba8fbd8cc8160970f63f9a2696fc46 from 1 to 0 (keep 1 pods available, don't exceed 2 pods)Scaling my-nginx-ccba8fbd8cc8160970f63f9a2696fc46 down to 0Update succeeded. Deleting my-nginx-ccba8fbd8cc8160970f63f9a2696fc46replicationcontroller "my-nginx" rolling updated
以上只是针对镜像的升级, 

如果相对镜像+启动参数+环境变量升级,那你应该新建一个配置

apiVersion: v1kind: ReplicationControllermetadata:  name: my-nginx-v4spec:  replicas: 5  selector:    app: nginx    deployment: v4  template:    metadata:      labels:        app: nginx        deployment: v4    spec:      containers:      - name: nginx        image: nginx:1.9.2        args: ["nginx", "-T"]        ports:        - containerPort: 80
然后开始升级

$ kubectl rolling-update my-nginx -f ./nginx-rc.yamlCreated my-nginx-v4Scaling up my-nginx-v4 from 0 to 5, scaling down my-nginx from 4 to 0 (keep 4 pods available, don't exceed 5 pods)Scaling my-nginx-v4 up to 1Scaling my-nginx down to 3Scaling my-nginx-v4 up to 2Scaling my-nginx down to 2Scaling my-nginx-v4 up to 3Scaling my-nginx down to 1Scaling my-nginx-v4 up to 4Scaling my-nginx down to 0Scaling my-nginx-v4 up to 5Update succeeded. Deleting old controller: my-nginxreplicationcontroller "my-nginx-v4" rolling updated










原创粉丝点击