k8s之pod講解

識趣。發表於2022-02-27

  什麼是Pod?

   Pod 是一組緊密關聯的容器集合,它由一組、一個或多個容器組成,每個Pod還包含了一個Pause容器,Pause容器是Pod的父容器,主要負責殭屍程式的回收管理,通過Pause容器可以使同一個Pod裡面的 多個容器共享儲存、網路、PID、IPC等。
  定義一個Pod
   [root@k8s-master01 ~]# vim nginx1.yaml
   apiVersion: v1   # Api的版本號
   kind: Pod        # 定義型別
   metadata:        # 後設資料
     name: nginx    # pod名稱,命名規範需符合RFC 1035規範
     labels:        # 自定義標籤
       app: nginx
   spec:            # 定義容器的詳細資訊
     containers:    # 容器列表
     - name: nginx  # 容器名稱,需符合RFC 1035規範
       image: nginx # 容器所用映象
       ports:       # 容器要暴露的埠號列表
       - containerPort: 80  埠號
   [root@k8s-master01 ~]# kubectl create -f nginx1.yaml    #建立pod
  

       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命令。

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

相關文章