详细聊聊k8s deployment的滚动更新(二)

 

一、知识准备

● 本文详细探索deployment在滚动更新时候的行为
● 相关的参数介绍:
  livenessProbe:存活性探测。判断pod是否已经停止
  readinessProbe:就绪性探测。判断pod是否能够提供正常服务
  maxSurge:在滚动更新过程中最多可以存在的pod数
  maxUnavailable:在滚动更新过程中最多不可用的pod数

 

二、环境准备

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

 

三、准备镜像、yaml文件

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

docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1 docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:delay_v1

2个镜像都提供相同的服务,只不过nginx:delay_v1会延迟启动20才启动nginx

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

yaml文件:

root@k8s-master:~# more roll_update.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata:   name: update-deployment spec:   replicas: 3   template:     metadata:       labels:         app: roll-update     spec:       containers:       - name: nginx         image: registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1         imagePullPolicy: Always --- apiVersion: v1 kind: Service metadata:   name: nginx-service spec:     selector:       app: roll-update     ports:     - protocol: TCP       port: 10080       targetPort: 80

四、livenessProbe与readinessProbe

livenessProbe:存活性探测,最主要是用来探测pod是否需要重启
readinessProbe:就绪性探测,用来探测pod是否已经能够提供服务

● 在滚动更新的过程中,pod会动态的被delete,然后又被create出来。存活性探测保证了始终有足够的pod存活提供服务,一旦出现pod数量不足,k8s会立即拉起新的pod
● 但是在pod启动的过程中,服务正在打开,并不可用,这时候如果有流量打过来,就会造成报错

下面来模拟一下这个场景:

首先apply上述的配置文件

                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信