一.Pod定義 最小部署單元 一組容器集合 一個pod中的容器共用網路命名空間 Pod是短暫的 二.Pod容器分類 基礎容器 維護整個Pod的網路命名空間 初始化容器 先於業務容器開始執行,在應用啟動之前進行初始化操作 業務容器 並行啟動 基礎容器 維護整個Pod的網路命名空間 初始化容器 先於業務 ...
一.Pod定義
- 最小部署單元
- 一組容器集合
- 一個pod中的容器共用網路命名空間
- Pod是短暫的
二.Pod容器分類
-
基礎容器
維護整個Pod的網路命名空間
-
初始化容器
先於業務容器開始執行,在應用啟動之前進行初始化操作
-
業務容器
並行啟動
三.鏡像拉取策略(imagePullPolicy)
- IfNotPresent:(建議)表示如果本地有該鏡像,則使用本地的鏡像,本地不存在時下載鏡像。
- Always: 預設值,表示每次都重新下載該鏡像。
- Never: 表示僅使用本地鏡像
認證鏡像拉取(例如k8s拉取harbor鏡像倉庫):
創建secret 認證:
# kubectl create secret docker-registry harborkey --docker-username=xubaolong --docker-password=xbl [email protected] --docker-server="192.168.1.156"
引用認證:
sepc.imagePullSecrets:harborkey
四.資源限制
Pod和Container的資源請求和限制:
-
spec.containers[].resources.limits.cpu :
CPU限制,單位core數,將用於docker run --cpu-shares參數
-
spec.containers[].resources.limits.memory
記憶體限制,單位可以為MiB/GiB等,將用於docker run --memory參數
-
spec.containers[].resources.requests.cpu
CPU請求,單位core數,容器啟動的初始可用數量
-
spec.containers[].resources.requests.memory
記憶體請求, 單位可以為MiB/GiB等,容器啟動的初始可用數量
五.重啟策略(restartPolicy)
- Always:當容器終止退出後,總是重啟容器,預設策略。
- OnFailure:當容器異常退出(退出狀態碼非0)時,才重啟容器。
- Never:當容器終止退出,從不重啟容器。
六.健康檢查(Probe)
Probe有以下兩種類型:
- livenessProbe
如果檢查失敗,將殺死容器,根據Pod的restartPolicy來操作。
- readinessProbe
如果檢查失敗,Kubernetes會把Pod從service endpoints中剔除。
Probe支持以下三種檢查方法:
- httpGet
發送HTTP請求,返回200-400範圍狀態碼為成功。
- exec
執行Shell命令返回狀態碼是0為成功。
- tcpSocket
發起TCP Socket建立成功。
七. 調度約束
- nodeName用於將Pod調度到指定的Node名稱上
-
nodeSelector用於將Pod調度到匹配Label的Node上
八. 故障排查
值 |
描述 |
Pending |
Pod創建已經提交到Kubernetes。但是,因為某種原因而不能順利創建。例如下 載鏡像慢,調度不成功。 |
Running |
Pod已經綁定到一個節點,並且已經創建了所有容器。至少有一個容器正在運行 中,或正在啟動或重新啟動。 |
Succeeded |
Pod中的所有容器都已成功終止,不會重新啟動。 |
Failed |
Pod的所有容器均已終止,且至少有一個容器已在故障中終止。也就是說,容器 要麼以非零狀態退出,要麼被系統終止。 |
Unknown |
由於某種原因apiserver無法獲得Pod的狀態,通常是由於Master與Pod所在主機 kubelet通信時出錯。 |
kubectl describe TYPE/NAME
kubectl logs TYPE/NAME [-c CONTAINER]
kubectl exec POD [-c CONTAINER] -- COMMAND [args...]