什麼是Pod?
kind: Pod # 定義型別
metadata: # 後設資料
name: nginx # pod名稱,命名規範需符合RFC 1035規範
labels: # 自定義標籤
app: nginx
spec: # 定義容器的詳細資訊
containers: # 容器列表
- name: nginx # 容器名稱,需符合RFC 1035規範
image: nginx # 容器所用映象
ports: # 容器要暴露的埠號列表
- containerPort: 80 埠號
kubectl get pod nginx -o yaml
#以yaml格式顯示pod的詳細資訊
kubectl get pod --show-labels
#根據yaml檔案裡定義的標籤篩選出符合條件的pod
kubectl get rc,service
#檢視rc和service列表
kubectl describe node k8s-master
#顯示node的詳細資訊
kubectl describe pod nginx
#顯示pod的詳細資訊
kubectl delete -f nginx1.yaml
#使用刪除yaml檔案的方式刪除pod
kubectl delete pod --all
#刪除所有pod
#進入某個容器
#檢視容器日誌
#實時檢視容器日誌,想當於tail -f命令退出ctrl+c
#開啟了一個新的yaml檔案,線上修改,修改完退出即更新
#將容器80埠對映本地521埠
#檢視名稱空間,預設建立的pod都在default下,也可建立新的名稱空間。
#刪除名稱空間biubiubiu
Pod生命週期跟Pod重啟策略
#pod整個生命週期中的各種狀態
pod的重啟策略
變數Phase的取值還取決於結構體PodSpec中的RestartPolicy變數,這個RestartPolicy變數是用來設定Pod中容器重啟策略的,包括三個可選值,分別是Always、OnFailure和Never。
Always:當容器失效時,由kubelet自動重啟容器。
OnFailure:當容器終止執行或以不正常情況退出(退出碼非0),由kubelet自動重啟該容器。
Never:不對容器設定重啟策略。
Pod探針
startupProbe:
k8s1.16版本後新加的探測方式,用於判斷容器內應用程式是否已經啟動,如果配置了startupProbe就會先禁止其他的探測,直到它成功為止,成功後將不在進行探測。
LivenessProbe:
用於探測容器是否執行,如果探測失敗,kubelet會根據配置的重啟策略進行相應的處理。若沒有配置該探針,預設就是success。
存活性探測。判斷pod是否需要重啟。
ReadinessProbe:一般用於探測容器內的程式是否健康,它的返回值如果為success,那麼就代表這個容器已經完成啟動,並且程式已經是
可以接受流量的狀態。
就緒性探測。判斷pod是否能夠提供正常服務。
Pod的探測方式
ExecAction
在容器內執行一個命令,如果返回值為0,則認為容器健康。
TcpSocketAction
通過TCP連線檢查容器內的埠是否是通的,如果是通的就認為容器健康。
HttpGetAction
通過應該程式暴露的API地址來檢查程式是否是正常的,如果狀態碼為200-400之間,則認為容器健康。
Pod退出流程
使用者執行刪除操作 kubectl delete pod nginx
pod狀態會變成Terminating狀態(這種狀態停留預設時間為30秒)
在30秒期間,會從Endpoint中刪除該pod的IP地址,最後執行yaml檔案中Prestop命令。