pod 狀態
CrashLoopBackOff: 容器退出,kubelet正在將它重啟
InvalidImageName: 無法解析鏡像名稱
ImageInspectError: 無法校驗鏡像
ErrImageNeverPull: 策略禁止拉取鏡像
ImagePullBackOff: 正在重試拉取
RegistryUnavailable: 連接不到鏡像中心
ErrImagePull: 通用的拉取鏡像出錯
CreateContainerConfigError: 不能創建kubelet使用的容器配置
CreateContainerError: 創建容器失敗
m.internalLifecycle.PreStartContainer 執行hook報錯
RunContainerError: 啟動容器失敗
PostStartHookError: 執行hook報錯
ContainersNotInitialized: 容器沒有初始化完畢
ContainersNotReady: 容器沒有準備完畢
ContainerCreating:容器創建中
PodInitializing:pod 初始化中
DockerDaemonNotReady:docker還沒有完全啟動
NetworkPluginNotReady: 網絡插件還沒有完全啟動
K8S使用及命令
YAML配置文件管理對象 對象管理: # 創建deployment資源 kubectl create -f nginx-deployment.yaml # 查看deployment kubectl get deploy # 查看ReplicaSet kubectl get rs # 查看pods所有標簽 kubectl get pods --show-labels # 根據標簽查看pods kubectl get pods -l app=nginx # 滾動更新鏡像 kubectl set image deployment/nginx-deployment nginx=nginx:1.11 或者 kubectl edit deployment/nginx-deployment 或者 kubectl apply -f nginx-deployment.yaml # 實時觀察發布狀態: kubectl rollout status deployment/nginx-deployment # 查看deployment歷史修訂版本 kubectl rollout history deployment/nginx-deployment kubectl rollout history deployment/nginx-deployment --revision=3 # 回滾到以前版本 kubectl rollout undo deployment/nginx-deployment kubectl rollout undo deployment/nginx-deployment --to-revision=3 # 擴容deployment的Pod副本數量 kubectl scale deployment nginx-deployment --replicas=10 # 設置啟動擴容/縮容 kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80
# 刪除清理:
kubectl delete -f nginx-deployment.yaml
kubectl delete -f nginx-service.yaml
Pod管理-創建/查詢/更新/刪除
基本管理: # 創建pod資源 kubectl create -f pod.yaml # 查看pods kubectl get pods pod-test # 查看pod描述 kubectl describe pod pod-test # 替換資源 kubectl replace -f pod.yaml -force # 刪除資源 kubectl delete pod pod-test
nginx.deployment 示例
apiVersion: apps/v2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.10 ports: - containerPort: 80
nging.service 示例
apiVersion: v1 kind: Service metadata: labels: run: nginx name: nginx namespace: default spec: ports: - port: 88 targetPort: 80 selector: app: nginx
支持三種策略:
Always:當容器終止退出后,總是重啟容器,默認策略。
OnFailure:當容器異常退出(退出狀態碼非0)時,才重啟容器。
Never:當容器終止退出,從不重啟容器。
pod 實例:
apiVersion: v1 kind: Pod metadata: name: pod-test labels: os: centos spec: containers: - name: hello image: centos:7 env: - name: Test value: "123456" command: ["bash","-c","while true;do date;sleep 1;done"] restartPolicy: OnFailure
提供Probe機制,有以下兩種類型:
livenessProbe
如果檢查失敗,將殺死容器,然后根據Pod的重啟策略來決定是否
重啟。
readinessProbe
如果檢查失敗,Kubernetes會把Pod從服務代理的分發后端剔除。
Probe支持以下三種檢查方法:
httpGet
發送HTTP請求,返回200-400范圍狀態碼為成功。
exec
執行Shell命令返回狀態碼是0為成功。
tcpSocket
發起TCP Socket建立成功。
Pod管理-數據持久化和共享示例:
apiVersion: v1 kind: Pod metadata: name: pod-test1 labels: test: centos spec: containers: # 第一個容器 - name: hello-write image: centos:7 command: ["bash","-c","for i in {1..1000};do echo $i >> /data/hello;sleep 1;done"] # 第二個容器 - name: hello-read image: centos:7 command: ["bash","-c","for i in {1..1000};do cat $i >> /data/hello;sleep 1;done"] volumeMounts: - name: data mountPath: /data # 數據卷 volumes: - name: data hostPath: path: /data
Pod端口映射示例:
apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: app: nginx spec: containers: - name: nginx image: nginx:1.10 ports: - name: http containerPort: 80 hostIP: 0.0.0.0 hostPort: 80 protocol: TCP - name: https containerPort: 443 hostIP: 0.0.0.0 hostPort: 443 protocol: TCP
浙公網安備 33010602011771號