命令執行返回成功是成功的,如果返回狀態碼是不成功的
使用exec存活性探測:
[root@master test]# kubectl get pod -w
name ready status restarts age
client 1/1 running 0 1d
liveness-exec-pod 1/1 running 5 6m
nginx-deploy-5b595999-fsxlp 1/1 running 0 1d
^c[root@master test]# ls
liveness-exec.yaml
[root@master test]# cat liveness-exec.yaml
apiversion: v1
kind: pod
metadata:
name: liveness-exec-pod
namespace: default
spec:
containers:
- name: liveness-exec-container
image: busybox:latest
imagepullpolicy: ifnotpresent
command: ["/bin/sh","-c","touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 3600"]
livenessprobe:
exec:
command: ["test","-e","tmp/healthy"]
initialdelayseconds: 1
periodseconds: 3 #探測時間間隔3秒
kubectl describe pods liveness-exec-pod 檢視pod的執行日誌
restart count: 3 重啟3次了
liveness: exec [test -e tmp/healthy] delay=1s timeout=1s period=3s #success=1 #failure=3
監控pod已經重啟五次了
[root@master test]# kubectl get pod -w
name ready status restarts age
client 1/1 running 0 1d
liveness-exec-pod 1/1 running 5 6m
nginx-deploy-5b595999-fsxlp 1/1 running 0 1d
使用tcpsocket探測
kubectl explain pods.spec.containers.livenessprobe.tcpsocket
使用httpget探測
kubectl explain pods.spec.containers.livenessprobe.httpget
進入這個容器:
這時候我們在容器的內部刪除index.html網頁
/ # rm -f /usr/share/nginx/html/index.html
過了幾秒後,我們再次檢視pod的資訊
日誌內容:
再次回到容器中:l
檔案出現了 /usr/share/nginx/html/index.html
容器啟動了並不一定是可以正常使用的,需要裡面的服務正常啟動之後才可以使用,如:redis和tomcat
這時候我們需要做乙個探測。
這時候就用到了pod應用狀態就緒監測:
啟動:kubectl create -f readiness-httpget.yaml
這時候kubectl get pods 是正常啟動的
這時候進入容器內部
這時候kubectl get pods 是不啟動的
# echo "hi">usr/share/nginx/html/index.html
kubectl get pods
這個時候是啟動成功的
啟動後多久和終止前多久?
kubectl explain pods.spec.containers.lifecycle
利用busybox來測試:
busybox是有httpd服務的,但是沒有網頁,我們做乙個網頁,然後再啟動httpd服務,看看兩個能不能關聯。
cat poststart-pod.yaml #暫時有問題
工作負載,pod 控制器
工作負載是在 kubernetes 上執行的應用程式。無論你的負載是單一元件還是由多個一同工作的元件構成,在 kubernetes 中你 可以在一組 pods 中執行它。在 kubernetes 中,pod 代表的是集群上處於執行狀態的一組 容器。kubernetes pods 有確定的生命週期。例...
k8s 六 pod控制器 (二)
daemonset確保全部 或者一些 node 上執行乙個 pod 的副本。當有 node 加入集群時,也會為他們新增乙個 pod 當有 node 從集群移除時,這些 pod 也會被 刪除 daemonset 將會刪除它建立的所有 pod。使用 daemonset 的一些典型用法 乙個簡單的用法是,...
SpringMVC高階(三) 控制器
在spring mvc中,有幾種控制器,下面我們來一一介紹一下。1.parameterizableviewcontroller 引數控制器 示例 在springmvc servlet.xml中配置對映處理器和引數控制器 執行結果如下 2.abstractcommandcontroller 命令控制器...