1,容器得生命周期:docker container 中只要有一个进程再running,,则容器运行,不会对容器中的应用进行检查,
2,pod的生命周期:pod中所有的主容器running,在pod运行,默认pod不会对容器中的应用检查,
举个例子,web服务,进程为running,但是返回码为502 500 404 等错误代码网页是无法正常访问的。200为正常。
k8s,支持tcp,socket,http 检查

livenessProbe: 存活探针,探测失败,处理方式为反复重启。
readinessProbe: 就绪探针,探测失败,处理方式为将pod从service中的endpoint中移除。不会重启pod.

livenessProbe,实验测试:
kubectl explain pod.spec.containers.livenessProbe.httpGet

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web-test
  name: web-test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web-test
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web-test
    spec:
      containers:
      - image: nginx
        imagePullPolicy: IfNotPresent
        name: example
        resources:
          requests:
            cpu: 400m
        livenessProbe:  #探测选择  探测80端口是否开放
          httpGet:
            port: 80


可以结合命令,exec, 
[root@master01 ~]# kubectl exec -ti web-test-5f58c7c548-jg27b -- /bin/bash
root@web-test-5f58c7c548-jg27b:/# exit
exit
[root@master01 ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS      AGE
web-test-5f58c7c548-jg27b   0/1     Running   1 (19m ago)   25m
[root@master01 ~]# kubectl get pods -o wide
NAME                        READY   STATUS    RESTARTS      AGE   IP               NODE     NOMINATED NODE   READINESS GATES
web-test-5f58c7c548-jg27b   0/1     Running   1 (19m ago)   25m   10.244.196.148   node01   <none>           <none>
[root@master01 ~]# curl 10.244.196.148  如果我把首页删除,但是80端口还是开放的,所以存活探测,可以结合命令啥的tcp socket、等其他。  加就绪探测,一起更为方便和切合实际
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.21.5</center>
</body>
</html>

readinerssProbe

readinessProbe:  #探测选择  探测80端口是否开放
    httpGet:
       port: 80
文章作者: emporer
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Emporer-Linux
kubernetes kubernetes
喜欢就支持一下吧