一.pod生命周期:pod对象从创建开始到终止的过程
	1.作用:
		复杂服务的启动顺序,依赖关系,
		容器服务启动前的相关操作,配置文件生成,依赖服务检测等...
	2.生命周期流程:
		初始化容器--主容器--启动后回调函数-->启动,生命,就绪探针-->关闭前回调函数
		初始化容器执行:执行应用程序启动前的初始化任务,如加载配置文件、检查网络连接等。
		主容器启动:初始化成功后,运行应用程序,提供所需的服务
		启动后回调函数执行:执行一些初始化后设置的任务
		启动探针:检测容器是否已成功启动,并完成初始化,检测不成功重启容器
		生命探针:检测容器内的主进程是否仍在健康运行,在容器全生命周期运行
		就绪探针:检测容器是否已准备好对外提供服务,探测失败容器将拒绝Pod所提供的服务,只会等待,在容器全生命周期运行
		关闭前回调函数执行:清理资源、保存状态或通知其他服务等
	3.容器init初始化
		kubectl get pods -w  //状态监测
		(1)初始化容器流程
				web1   0/1     Pending          
				web1   0/1     Pending              
				web1   0/1     Init:0/1           
				web1   0/1     Init:0/1        
				web1   0/1     Init:0/1          
				web1   0/1     PodInitializing     
				web1   1/1     Running 
	   
		(2)初始化容器编写
				---
				kind: Pod
				apiVersion: v1
				metadata:
				        name: web1
				spec:
				        initContainers:
				        - name: task1
				          image: myos:latest
				          command: ["sh"]
				          args:
				          - -c
				          - |
				            id=${RANDOM}
				            echo "id is :${id}"
				            sleep 2
				            exit $((id%2))
					 - name: task2
				        containers:
				        - name: web
				          image: myos:httpd
	4.容器探针
		(1)探针检查探测方式
			tcpSoceket:对指定的ip地址上的端口执行TCP检查,三次握手,端口是open被认为诊断成功.
			httpGet:使用HTTP协议诊断服务状态,响应状态码大于等于200小于400认为成功.
			exec:在容器内执行指定命令检测,
		(2)探测结果
			Success:成功
			Failure:失败
			Unknown:未知
		
		(3)启动探针(startupProbe):容器出现故障,启动探针会重新触发执行
			spec:
			  containers:
			  - name: web
			    image: myos:httpd
			    startupProbe:                 # 启动探针
			      initialDelaySeconds: 60     # 首次检查延时
			      periodSeconds: 10           # 检查间隔
			      failureThreshold: 6         # 可失败的次数
			      tcpSocket:                  # 使用 tcp 协议检测
			        port: 80                  # 端口号	
		
		(4)生命探针(livenessProbe):检查某个核心应用是否正常运行
			spec:
			  containers:
			  - name: web
			    image: myos:httpd
			    livenessProbe:                # 定义存活探针
			      timeoutSeconds: 3           # 服务影响超时
			      httpGet:                    # 使用 HTTP 协议检测
			        path: /info.php           # 请求的 URL 路径,检测的资源
			        port: 80                  # 服务端口号
		
		(5)就绪探针(readinessProbe):利用脚本监测主从集群的同步状态
			spec:
			  containers:
			  - name: web
			    image: myos:httpd
			    readinessProbe:               # 定义就绪探针
			      failureThreshold: 3         # 失败确认次数
			      periodSeconds: 10           # 检测间隔
			      exec:                       # 执行命令进行检测
			        command:                  # 检测命令
			        - sh
			        - -c
			        - |
			          read ver </var/www/html/version.txt
			          if (( ${ver:-0} > 2 ));then
			             res=0
			          fi
			          exit ${res:-1}          # 版本大于 2 成功,否则失败
        
	5.容器启动后,关闭前回调函数(lifecycle)
		spec:
		  containers:
		  - name: web
		    image: myos:httpd
		    lifecycle:                    # 定义启动后事件处理函数
		      postStart:
		        exec:
		          command:
		          - sh
		          - -c
		          - |
		            echo "自动注册服务" |tee -a /tmp/web.log
		            sleep 10
		      preStop:                    # 定义关闭前事件处理函数
		        exec:
		          command:
		          - sh
		          - -c
		          - |
		            echo "清除已注册的服务" |tee -a /tmp/web.log
		            sleep 10一.pod生命周期:pod对象从创建开始到终止的过程
     1.作用:
         复杂服务的启动顺序,依赖关系,
         容器服务启动前的相关操作,配置文件生成,依赖服务检测等...
     2.生命周期流程:
         初始化容器--主容器--启动后回调函数-->启动,生命,就绪探针-->关闭前回调函数
        初始化容器执行:执行应用程序启动前的初始化任务,如加载配置文件、检查网络连接等。
         主容器启动:初始化成功后,运行应用程序,提供所需的服务
         启动后回调函数执行:执行一些初始化后设置的任务
         启动探针:检测容器是否已成功启动,并完成初始化,检测不成功重启容器
         生命探针:检测容器内的主进程是否仍在健康运行,在容器全生命周期运行
         就绪探针:检测容器是否已准备好对外提供服务,探测失败容器将拒绝Pod所提供的服务,只会等待,在容器全生命周期运行
         关闭前回调函数执行:清理资源、保存状态或通知其他服务等
    3.容器init初始化
         kubectl get pods -w  //状态监测
         (1)初始化容器流程
                 web1   0/1     Pending          
                 web1   0/1     Pending              
                 web1   0/1     Init:0/1           
                 web1   0/1     Init:0/1        
                 web1   0/1     Init:0/1          
                 web1   0/1     PodInitializing     
                 web1   1/1     Running 
        
         (2)初始化容器编写
                 ---
                 kind: Pod
                 apiVersion: v1
                 metadata:
                         name: web1
                 spec:
                         initContainers:
                         - name: task1
                           image: myos:latest
                           command: ["sh"]
                           args:
                           - -c
                           - |
                             id=${RANDOM}
                             echo "id is :${id}"
                             sleep 2
                             exit $((id%2))
                      - name: task2
                         containers:
                         - name: web
                           image: myos:httpd
    4.容器探针
         (1)探针检查探测方式
             tcpSoceket:对指定的ip地址上的端口执行TCP检查,三次握手,端口是open被认为诊断成功.
             httpGet:使用HTTP协议诊断服务状态,响应状态码大于等于200小于400认为成功.
             exec:在容器内执行指定命令检测,
         (2)探测结果
             Success:成功
             Failure:失败
             Unknown:未知
         
         (3)启动探针(startupProbe):容器出现故障,启动探针会重新触发执行
             spec:
               containers:
               - name: web
                 image: myos:httpd
                 startupProbe:                 # 启动探针
                   initialDelaySeconds: 60     # 首次检查延时
                   periodSeconds: 10           # 检查间隔
                   failureThreshold: 6         # 可失败的次数
                   tcpSocket:                  # 使用 tcp 协议检测
                     port: 80                  # 端口号    
         
         (4)生命探针(livenessProbe):检查某个核心应用是否正常运行
             spec:
               containers:
               - name: web
                 image: myos:httpd
                 livenessProbe:                # 定义存活探针
                   timeoutSeconds: 3           # 服务影响超时
                   httpGet:                    # 使用 HTTP 协议检测
                     path: /info.php           # 请求的 URL 路径,检测的资源
                     port: 80                  # 服务端口号
         
         (5)就绪探针(readinessProbe):利用脚本监测主从集群的同步状态
             spec:
               containers:
               - name: web
                 image: myos:httpd
                 readinessProbe:               # 定义就绪探针
                   failureThreshold: 3         # 失败确认次数
                   periodSeconds: 10           # 检测间隔
                   exec:                       # 执行命令进行检测
                     command:                  # 检测命令
                     - sh
                     - -c
                     - |
                       read ver </var/www/html/version.txt
                       if (( ${ver:-0} > 2 ));then
                          res=0
                       fi
                       exit ${res:-1}          # 版本大于 2 成功,否则失败
         
     5.容器启动后,关闭前回调函数(lifecycle)
         spec:
           containers:
           - name: web
             image: myos:httpd
             lifecycle:                    # 定义启动后事件处理函数
               postStart:
                 exec:
                   command:
                   - sh
                   - -c
                   - |
                     echo "自动注册服务" |tee -a /tmp/web.log
                     sleep 10
               preStop:                    # 定义关闭前事件处理函数
                 exec:
                   command:
                   - sh
                   - -c
                   - |
                     echo "清除已注册的服务" |tee -a /tmp/web.log
                     sleep 10


















