k8s灰度更新_K8s系列之扩缩容与灰度发布

3273133c239b7a384dd716e907320b0d.png

K8s教程之扩缩容和灰度发布

  • 扩容和缩容
[root@master ~]# kubectl scale --replicas=5 deployment myappdeployment.extensions/myapp scaled[root@master ~]# kubectl get podsNAME READY STATUS RESTARTS AGEclient 1/1 Running 0 48mmyapp-848b5b879b-6kqp2 1/1 Running 0 14mmyapp-848b5b879b-f99n4 1/1 Running 0 36smyapp-848b5b879b-gcx2r 1/1 Running 0 36smyapp-848b5b879b-hd5l4 1/1 Running 0 36smyapp-848b5b879b-vg8sm 1/1 Running 0 14mnginx-deploy-5b595999-xgh9r 1/1 Running 0 36m[root@master ~]# kubectl scale --replicas=3 deployment myapp deployment.extensions/myapp scaled[root@master ~]# kubectl get podsNAME READY STATUS RESTARTS AGEclient 1/1 Running 0 48mmyapp-848b5b879b-6kqp2 1/1 Running 0 14mmyapp-848b5b879b-f99n4 1/1 Running 0 49smyapp-848b5b879b-hd5l4 0/1 Terminating 0 49smyapp-848b5b879b-vg8sm 1/1 Running 0 14mnginx-deploy-5b595999-xgh9r 1/1 Running 0 37m[root@master ~]# kubectl get podsNAME READY STATUS RESTARTS AGEclient 1/1 Running 0 49mmyapp-848b5b879b-6kqp2 1/1 Running 0 15mmyapp-848b5b879b-f99n4 1/1 Running 0 1mmyapp-848b5b879b-vg8sm 1/1 Running 0 15mnginx-deploy-5b595999-xgh9r 1/1 Running 0 37m
eeac128eaa6290fc08cd7832fc976956.png
  • 滚动升级(以灰度的方式)
实现命令: kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N[options][root@master ~]# kubectl describe pod myapp-848b5b879b-6kqp2Name: myapp-848b5b879b-6kqp2Namespace: defaultPriority: 0PriorityClassName: Node: node1/192.168.100.238Start Time: Wed, 26 Sep 2018 16:34:16 +0800Labels: pod-template-hash=4046164356 run=myappAnnotations: Status: RunningIP: 10.244.1.4Controlled By: ReplicaSet/myapp-848b5b879bContainers: myapp: Container ID: docker://01867440a77bfe62a4ccfce559104852d79a5885505a78370ae2c1bfe2f08f4c Image: ikubernetes/myapp:v1 Image ID: docker-pullable://ikubernetes/myapp@sha256:9c3dc30b5219788b2b8a4b065f548b922a34479577befb54b03330999d30d513 Port:  Host Port:  State: Running找到容器名[root@master ~]# kubectl set image deployment myapp myapp=ikubernetes/myapp:v2deployment.extensions/myapp image updated
  • 查看滚动升级的进度
[root@master ~]# kubectl rollout status deployment myappWaiting for deployment "myapp" rollout to finish: 1 old replicas are pending termination...Waiting for deployment "myapp" rollout to finish: 1 old replicas are pending termination...deployment "myapp" successfully rolled out
  • 这时在客户端查看访问myapp的版本号
Hello MyApp | Version: v1 | Pod NameHello MyApp | Version: v2 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v2 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v2 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v2 | Pod Name
  • 知道滚动升级完成,则所有的版本都改为v2
  • 查看pods名称则会发现pods名称都改变了
未升级前[root@master ~]# kubectl get podsNAME READY STATUS RESTARTS AGEclient 1/1 Running 0 49mmyapp-848b5b879b-6kqp2 1/1 Running 0 15mmyapp-848b5b879b-f99n4 1/1 Running 0 1mmyapp-848b5b879b-vg8sm 1/1 Running 0 15mnginx-deploy-5b595999-xgh9r 1/1 Running 0 37m 升级后[root@master ~]# kubectl get podsNAME READY STATUS RESTARTS AGEclient 1/1 Running 0 56mmyapp-74c94dcb8c-btnq2 1/1 Running 0 4mmyapp-74c94dcb8c-fxxpr 1/1 Running 0 4mmyapp-74c94dcb8c-gv2bz 1/1 Running 0 3mnginx-deploy-5b595999-xgh9r 1/1 Running 0 45m
  • 若滚动升级发现有问题需要回滚,怎么办呢?
kubectl rollout undo (TYPE NAME | TYPE/NAME) [flags] [options]若未指定版本,则回滚至上一次更新的状态[root@master ~]# kubectl rollout undo deployment myappdeployment.extensions/myapp[root@master ~]# kubectl get podsNAME READY STATUS RESTARTS AGEclient 1/1 Running 0 1hmyapp-74c94dcb8c-btnq2 1/1 Running 0 8mmyapp-74c94dcb8c-fxxpr 1/1 Running 0 8mmyapp-74c94dcb8c-gv2bz 1/1 Running 0 8mmyapp-848b5b879b-zjzf9 0/1 ContainerCreating 0 8snginx-deploy-5b595999-xgh9r 1/1 Running 0 49m
  • 在客户端上查看灰度状态
Hello MyApp | Version: v2 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v2 | Pod NameHello MyApp | Version: v2 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod NameHello MyApp | Version: v1 | Pod Name
  • 因为生产环境中肯定不会去简单的run一个服务出来,这样做不到完全定制,所以这里只是简单去讨论k8s的一些特性
  • k8s还支持自动扩缩容,这部分需要监控系统,基于资源使用率进行弹性扩展,这里先不去研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值