k8s健康检查探针配置
两种健康检查机制Liveness探测:用户自定义判断容器是否健康。如果判断失败,则重启容器,使用restart策略。Readiness探测:Rolling update的判断条件三种检查方式:httpGet: 发送HTTP请求,返回200-400范围状态码表示成功exec: 执行Shell命令返回状态码为0表示成功tcpSocket: 发起TCP Socket建立成功使用exec命令方式做live
·
两种健康检查机制
Liveness探测:用户自定义判断容器是否健康。如果判断失败,则重启容器,使用restart策略。
Readiness探测:根据Deployment控制器的Rollingupdate作为判断条件
三种检查方式:
httpGet: 发送HTTP请求,返回200-400范围状态码表示成功
exec: 执行Shell命令返回状态码为0表示成功
tcpSocket: 发起TCP Socket建立成功
使用exec命令方式做liveness检查
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness # 测试活着
name: liveness
spec:
restartPolicy: OnFailure # 使用 restart 判断容器是否活着
containers:
- name: liveness
image: busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30s; rm -rf /tmp/healthy; sleep 300000000 # 创建一个文件30秒后删除
livenessProbe: # 创建一个健康检查
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 10 # 10秒后开始检查
periodSeconds: 5 # 每隔5秒检查一次
使用httpGet命令方式做liveness检查
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: web
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
restartPolicy: Always
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: web
ports:
- containerPort: 80
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 5
failureThreshold: 2
periodSeconds: 5
readinessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 5
periodSeconds: 5
startupProbe: # startupProbe
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10 # 容器启动30*10=300s内liveness和readiness探针不会执行,300s后startup探针还没成
使用exec命令方式做 readiness检查,结果是直接将容器杀死,置为不可用
apiVersion: v1
kind: Pod
metadata:
labels:
test: readiness # 测试活着
name: readiness
spec:
restartPolicy: OnFailure # 使用 restart 判断容器是否活着
containers:
- name: readiness
image: busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30s; rm -rf /tmp/healthy; sleep 300000000 # 创建一个文件30秒后删除
readinessProbe: # 创建一个健康检查
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 10 # 10秒后开始检查
periodSeconds: 5 # 每隔5秒检查一次
滚动更新Rollingupdate对判断上的应用
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
strategy: #滚动更新策略
rollingUpdate:
maxSurge: 35% # maxSurge:和期望ready的副本数比,超过期望副本数最大比例(或最大值),这个值调的越大,副本更新速度越快
maxUnavailable: 35% #maxUnavailable:和期望ready的副本数比,不可用副本数最大比例(或最大值),这个值越小,越能保证服务稳定,更新越平滑
selector:
matchLabels:
run: app
replicas: 10
template:
metadata:
labels:
run: app
spec:
containers:
- name: app
image: busybox
args:
- /bin/sh
- -c
- sleep 10; touch /tmp/healthy; sleep 3000000
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 10
periodSeconds: 5
更多推荐
已为社区贡献6条内容
所有评论(0)