k8s之pod講解
- 2022 年 2 月 27 日
- 筆記
什麼是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命令。