探针的使用
kubectl edit deploy -n kube-system coredns

livenessprobe 的使用 

        livenessProbe:
          failureThreshold: 5
          httpGet:
            path: /health
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 60
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 5


 readinessProbe
        
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /ready
            port: 8181
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1

kubectl edit po nginx 

kubectl describe po nginx-daemon
最下面有容器启动时候相关日志

容器探针启动实验1-启动探针的使用-startupprobe
Events:
  Type     Reason     Age               From               Message
  ----     ------     ----              ----               -------
  Normal   Scheduled  20s               default-scheduler  Successfully assigned default/my-pod1 to ha2.example.local
  Normal   Pulled     20s               kubelet            Container image "nginx:1.7.9" already present on machine
  Normal   Created    20s               kubelet            Created container nginx
  Normal   Started    20s               kubelet            Started container nginx
  Warning  Unhealthy  4s (x2 over 14s)  kubelet            Startup probe failed: HTTP probe failed with statuscode: 404
[root@kubeadm-master1 test]# kubectl get pod
NAME                                 READY   STATUS    RESTARTS   AGE
client                               1/1     Running   0          48d
my-pod                               1/1     Running   0          7d23h
my-pod1                              0/1     Running   0          37s
net-test1                            1/1     Running   133        55d
net-test2                            1/1     Running   13         55d
nginx-deployment-67dfd6c8f9-5s6nz    1/1     Running   1          55d
tomcat-deployment-6c44f58b47-4pz6d   1/1     Running   1          55d
[root@kubeadm-master1 test]# kubectl get pod
NAME                                 READY   STATUS    RESTARTS   AGE
client                               1/1     Running   0          48d
my-pod                               1/1     Running   0          7d23h
my-pod1                              0/1     Running   0          42s
net-test1                            1/1     Running   133        55d
net-test2                            1/1     Running   13         55d
nginx-deployment-67dfd6c8f9-5s6nz    1/1     Running   1          55d
tomcat-deployment-6c44f58b47-4pz6d   1/1     Running   1          55d
[root@kubeadm-master1 test]# cat nginx-po.yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod1
  labels:
    type: app
    test: "1.0.0"
  namespace: default
spec:
  containers:
  - name: nginx
    image: nginx:1.7.9
    imagePullPolicy: IfNotPresent
    command:
    - nginx
    - -g
    - 'daemon off;'
    workingDir: /usr/share/nginx/html
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: JVM_OPTS
      value: '-Xms128m -Xmx128m'
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 200m
        memory: 256Mi
    startupProbe:
      httpGet:
        path: /api/path
        port: 80
      failureThreshold: 3
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 5
  restartPolicy: OnFailure
Liveness Probes 和 Readiness Probes
用于检查容器是否还在运行。如果 liveness 探针失败,Kubernetes 将杀死容器,并根据其重启策略来处理。
用于检查容器是否已经准备好接收流量。如果 readiness 探针失败,Kubernetes 将不会将流量路由到该容器。

定义了一个 startupProbe,它在容器启动后通过 HTTP GET 请求检查 /api/path 端点。现在我们将添加 livenessProbe 和 readinessProbe。

一个 livenessProbe 可以如下定义:

livenessProbe:
  httpGet:
    path: /api/health
    port: 80
  initialDelaySeconds: 30
  periodSeconds: 10
这个 livenessProbe 会在容器启动后的30秒开始工作,每10秒检查一次 /api/health 端点。

一个 readinessProbe 可以如下定义:

readinessProbe:
  httpGet:
    path: /api/ready
    port: 80
  initialDelaySeconds: 5
  periodSeconds: 5
这个 readinessProbe 会在容器启动后的5秒开始工作,每5秒检查一次 /api/ready 端点。


 
演示
[root@kubeadm-master1 test]# cat liveness.yml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod1
  labels:
    type: app
    test: "1.0.0"
  namespace: default
spec:
  containers:
  - name: nginx
    image: nginx:1.7.9
    imagePullPolicy: IfNotPresent
    command:
    - nginx
    - -g
    - 'daemon off;'
    workingDir: /usr/share/nginx/html
    ports:
    - name: http
      containerPort: 80
      protocol: TCP
    env:
    - name: JVM_OPTS
      value: '-Xms128m -Xmx128m'
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 200m
        memory: 256Mi
    startupProbe:
      httpGet:
        path: /api/path
        port: 80
      failureThreshold: 3
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 5
    livenessProbe:
      httpGet:
        path: /api/health
        port: 80
      initialDelaySeconds: 30
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /api/ready
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 5
  restartPolicy: OnFailure




    State:          Running
      Started:      Thu, 15 Feb 2024 15:15:19 +0800
    Ready:          False
    Restart Count:  0
    Limits:
      cpu:     200m
      memory:  256Mi
    Requests:
      cpu:      100m
      memory:   128Mi
    Liveness:   http-get http://:80/api/health delay=30s timeout=1s period=10s #success=1 #failure=3
    Readiness:  http-get http://:80/api/ready delay=5s timeout=1s period=5s #success=1 #failure=3
    Startup:    http-get http://:80/api/path delay=0s timeout=5s period=10s #success=1 #failure=3
    Environment:
      JVM_OPTS:  -Xms128m -Xmx128m
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-75cq9 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-75cq9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-75cq9
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age               From               Message
  ----     ------     ----              ----               -------
  Normal   Scheduled  19s               default-scheduler  Successfully assigned default/my-pod1 to ha2.example.local
  Normal   Pulled     19s               kubelet            Container image "nginx:1.7.9" already present on machine
  Normal   Created    19s               kubelet            Created container nginx
  Normal   Started    19s               kubelet            Started container nginx
  Warning  Unhealthy  2s (x2 over 12s)  kubelet            Startup probe failed: HTTP probe failed with statuscode: 404


若存在started.html 则进行

飞天使-k8s知识点17-kubernetes实操2-pod探针的使用-LMLPHP

02-16 06:03