Liveness(活跃度)
用户可以自定义判断容器是否健康的条件。如果探测失败,Pod就会重启。
通过判断某个文件是否存在
[root@master ~]# cat test.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
labels:
test: test
spec:
replicas: 2
template:
metadata:
name: test
labels:
test: test
spec:
containers:
- name: test
image: busybox
args:
- /bin/sh
- -c
- touch /test; sleep 30; rm -rf /test; sleep 300
livenessProbe:
exec:
command:
- cat
- /test
initialDelaySeconds: 10
periodSeconds: 5
Readiness(敏捷探测)
[root@master ~]# vim test.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
labels:
test: test
spec:
replicas: 2
template:
metadata:
name: test
labels:
test: test
spec:
containers:
- name: test
image: nginx
ports:
- protocol: TCP
containerPort: 80
readinessProbe:
exec:
command:
- cat
- /test
initialDelaySeconds: 10
periodSeconds: 5
这种探测方法是运行命令cat /test查看文件是否存在
[root@master ~]# cat test.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
labels:
test: test
spec:
replicas: 2
template:
metadata:
name: test
labels:
test: test
spec:
containers:
- name: test
image: nginx
ports:
- protocol: TCP
containerPort: 80
readinessProbe:
httpGet:
scheme: HTTP
path: /test
port: 80
initialDelaySeconds: 10
periodSeconds: 5
这种方法是运行命令curl -I 10.244.1.27:80/test,访问的是/usr/share/nginx/html/test,根据返回的状态码进行判断,200-400之间为正常。
两种探测机制,写法上几乎一样,不同的是,探测失败之后的策略。
Liveness:如果探测失败,会重启Pod。
Readiness:如果失败,会将Pod设置为不可用状态,并且,不接受Service资源的转发请求。
运用在服务的扩容之上。
kubectl explain deployment.spec.strategy.rollingUpdate
maxSurge:更新过程中,可以同时拥有Pod的最大值。
maxUnavailable:在更新过程中,不可用的副本数占期望副本数的值
[root@master ~]# cat test-1.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
labels:
test: test
spec:
replicas: 10
template:
metadata:
name: test
labels:
test: test
spec:
containers:
- name: test
image: nginx
ports:
- protocol: TCP
containerPort: 80
args:
- /bin/sh
- -c
- touch /test; sleep 10000
readinessProbe:
exec:
command: ['cat','/test']
initialDelaySeconds: 10
periodSeconds: 5
[root@master ~]# cat test-2.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
labels:
test: test
spec:
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 2
replicas: 10
template:
metadata:
name: test
labels:
test: test
spec:
containers:
- name: test
image: nginx
ports:
- protocol: TCP
containerPort: 80
args:
- /bin/sh
- -c
- sleep 10000
readinessProbe:
exec:
command: ['cat','/test']
initialDelaySeconds: 10
periodSeconds: 5