溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

K8S Pod status的狀態(tài)分析

發(fā)布時(shí)間:2020-07-20 17:39:37 來(lái)源:網(wǎng)絡(luò) 閱讀:1919 作者:有功夫 欄目:云計(jì)算

K8S Pod status的狀態(tài)分析

CrashLoopBackOff: 容器退出,kubelet正在將它重啟
InvalidImageName: 無(wú)法解析鏡像名稱(chēng)
ImageInspectError: 無(wú)法校驗(yàn)鏡像
ErrImageNeverPull: 策略禁止拉取鏡像
ImagePullBackOff: 正在重試?yán)?RegistryUnavailable: 連接不到鏡像中心
ErrImagePull: 通用的拉取鏡像出錯(cuò)
CreateContainerConfigError: 不能創(chuàng)建kubelet使用的容器配置
CreateContainerError: 創(chuàng)建容器失敗
m.internalLifecycle.PreStartContainer  執(zhí)行hook報(bào)錯(cuò)
RunContainerError: 啟動(dòng)容器失敗
PostStartHookError: 執(zhí)行hook報(bào)錯(cuò) 
ContainersNotInitialized: 容器沒(méi)有初始化完畢
ContainersNotReady: 容器沒(méi)有準(zhǔn)備完畢 
ContainerCreating:容器創(chuàng)建中
PodInitializing:pod 初始化中 
DockerDaemonNotReady:docker還沒(méi)有完全啟動(dòng)
NetworkPluginNotReady: 網(wǎng)絡(luò)插件還沒(méi)有完全啟動(dòng)

K8S-YAML的使用及命令

YAML配置文件管理對(duì)象
對(duì)象管理:
# 創(chuàng)建deployment資源
kubectl create -f nginx-deployment.yaml
# 查看deployment
kubectl get deploy
# 查看ReplicaSet
kubectl get rs
# 查看pods所有標(biāo)簽
kubectl get pods --show-labels
# 根據(jù)標(biāo)簽查看pods
kubectl get pods -l app=nginx
# 滾動(dòng)更新鏡像
kubectl set image deployment/nginx-deployment nginx=nginx:1.11
或者
kubectl edit deployment/nginx-deployment
或者
kubectl apply -f nginx-deployment.yaml
# 實(shí)時(shí)觀察發(fā)布狀態(tài):
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
# 擴(kuò)容deployment的Pod副本數(shù)量
kubectl scale deployment nginx-deployment --replicas=10
# 設(shè)置啟動(dòng)擴(kuò)容/縮容
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80

對(duì)象管理實(shí)例:vim nginx.deployment.yaml

apiVersion: apps/v1beta2
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

服務(wù)發(fā)現(xiàn)實(shí)例:vim nging.service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    run: nginx
  name: nginx
  namespace: default
spec:
  ports:
  - port: 88
    targetPort: 80
  selector:
    app: nginx

清理:

# kubectl delete -f nginx-deployment.yaml

# kubectl delete -f nginx-service.yaml

POD作用:

Pod管理-創(chuàng)建/查詢(xún)/更新/刪除
基本管理:
# 創(chuàng)建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

支持三種策略:

Always:當(dāng)容器終止退出后,總是重啟容器,默認(rèn)策略。

OnFailure:當(dāng)容器異常退出(退出狀態(tài)碼非0)時(shí),才重啟容器。

Never:當(dāng)容器終止退出,從不重啟容器。

Pod實(shí)例:vim pod.yaml

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

Pod管理-健康檢查:

提供Probe機(jī)制,有以下兩種類(lèi)型:
livenessProbe
如果檢查失敗,將殺死容器,然后根據(jù)Pod的重啟策略來(lái)決定是否
重啟。
readinessProbe
如果檢查失敗,Kubernetes會(huì)把Pod從服務(wù)代理的分發(fā)后端剔除。
Probe支持以下三種檢查方法:
httpGet
發(fā)送HTTP請(qǐng)求,返回200-400范圍狀態(tài)碼為成功。
exec
執(zhí)行Shell命令返回狀態(tài)碼是0為成功。
tcpSocket
發(fā)起TCP Socket建立成功。

實(shí)例:vim pod2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.10
    ports:
    - containerPort: 80
    livenessProbe:
      httpGet:
        path: /index.html
        port: 80

Pod管理-數(shù)據(jù)持久化和共享:

vim pod3.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-test1
  labels:
     test: centos
spec:
  containers:
  # 第一個(gè)容器
  - name: hello-write
    image: centos:7
    command: ["bash","-c","for i in {1..1000};do echo $i >> /data/hello;sleep 1;done"]
  # 第二個(gè)容器
  - 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
  # 數(shù)據(jù)卷
  volumes:
  - name: data
    hostPath:
      path: /data

Pod端口映射:

vim pod4.yaml

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
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI