k8s 测试三 Pod生命周期

检测探针 - 就绪检测:

apiVersion: v1
kind: Pod
metadata:
  name: readiness-httpget-pod
  namespace: default
spec:
  containers:
    - name: readiness-httpget-container
      image: wangyanglinux/myapp:v1
      imagePullPolicy: IfNotPresent
      readinessProbe:
            httpGet:
                    port: 80
                    path: /index1.html
            initialDelaySeconds: 1
            periodSeconds: 3

readiness-httpget-container 方式去探测服务时候可用 。

使用http get方式去请求80端口的 index1.html文件,若没有此文件则服务始终无法Ready。

initialDelaySeconds 延迟1秒

periodSeconds 重试的循环时间为3秒

 我们进入容器添加文件:

kubectl exec readiness-httpget-pod -it --/bin/sh

cd /usr/share/nginx/html

echo "123" >> index1.html

 再次查看:

 检测探针 - 存活检测

 

apiVersion : v1
kind : Pod
metadata :
  name : liveness-exec-pod
  namespace : default
spec :
  containers :
  - name : liveness-exec-container
    image : busybox
    imagePullPolicy: IfNotPresent
    command : ["/bin/sh","-c","touch /tmp/live ; sleep 60; rm -rf /tmp/live; sleep 3600"]

    livenessProbe :
      exec :
        command : ["test","-e","/tmp/live"]
      initialDelaySeconds : 1
      periodSeconds : 3

command : ["/bin/sh","-c","touch /tmp/live ; sleep 60; rm -rf /tmp/live; sleep 3600"]

创建tmp/live文件 休眠60秒后删除它

command : ["test","-e","/tmp/live"]‘

livenessProbe检查tmp/live是否可用

 运行流程:启动 创建文件 休眠60秒 此时 pod为 ready状态 等待60秒后删除文件,检测到pod无法正常访问 重启pod

k8s 测试三 Pod生命周期_第1张图片

 Tcp检测:

apiVersion: v1
kind: Pod
metadata:
	name: probe-tcp
spec:
	containers:
	- name: nginx
	  image: hub.atguigu.com/library/myapp:v1
	  livenessProbe:
	  	initialDelaySeconds: 5
	  	timeoutSeconds: 1
	  	tcpSocket:
	  		port: 80

这里需要注意的是readiness检测不通过只是不将容器状态修改为ready,而liveness则是直接重启容器

Start 和Stop

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
              exec:
                        command: ["/bin/sh", "-c", "echo Hello from the postStart handler >/usr/share/message"]
      preStop:
              exec:
                      command: ["/bin/sh", "-c", "echo Hello from the poststop handler >/usr/share/message"]
~
~
~

 k8s 测试三 Pod生命周期_第2张图片

这里要注意echo的信息输出在容器的文件内:

echo Hello from the postStart handler >/usr/share/message

状态:
    挂起(Pending):Pod已被Kubernetes系统接受,但有一个或多个容器镜像尚未创建。等待时间包括调度Pod的时间和通过网络下载镜像的时间,这可能需要花点时间。
    运行中(Running):该Pod已经绑定到了一个节点上,Pod中所有的容器都已经呗创建。至少有一个容器正在运行,或者正处于启动或重启状态。
    成功(Succeeded):Pod中的所有容器都被成功终止,并且不会再重启
    失败(Failed):Pod中的所有容器都已终止了,并且至少有一个容器是因为失败终止的,也就是说,容器以非0状态退出或者被系统终止。
    未知(Unknown):因为某些原因无法取得Pod的状态,通常是因为与Pod所在主机通信失败

 

 

你可能感兴趣的:(k8s)