靜態Pod


靜態Pod

kubernetes 除了我們常用的普通Pod外,還有一種特殊的Pod,叫靜態Pod。

概念

靜態Pod是直接由節點kubelet進程來管理的,不能通過apiserver的master節點控制。無法與我們常用的控制器daemonset 和 deployment 聯合使用,它由kubelet進程負責監控,當Pod崩潰時重啟該Pod,kubelet也無法對靜態Pod進行健康檢查。靜態Pod始終綁定在某一個kubelet節點上,並且始終運行在同一個節點。kubelet會自動為每一個靜態Pod在kubernetes的apiserver上創建一個鏡像Pod(Mirror Pod),因此我們可以通過apiserver看到靜態Pod,但是不能通過apiserver控制。

創建靜態Pod的方式有兩種: 配置文件、HTTP

配置文件

以配置文件方式部署靜態Pod,需要開啟kubelet組件的 --pod-manifest-path= 參數,來配置靜態Pod的配置文件目錄。配置文件是以標准的JSON 或 YAML 格式定義的Pod。kubelet會定期掃描靜態配置文件目錄,根據這個目錄添加和移除的JSON或YAML文件來啟動和刪除靜態Pod。

如果在已經啟動的kubelet組件上,沒有添加 --pod-manifest-path= 參數,添加后,重新啟動即可部署靜態Pod。

比如--pod-manifest-path=/etc/kubernetes/manifests 而用kubeadm部署的集群,在這個目錄下,可以看到kube-apiserver.yaml 、kube-controller-manager.yaml 、kube-scheduler.yaml三個靜態Pod yaml文件

模板:

/etc/kubernetes/manifest/static-web.yaml

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    app: static
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80

HTTP方式創建靜態Pod

kubelet 周期地從–manifest-url=參數指定的地址下載文件,並且把它翻譯成 JSON/YAML 格式的 pod 定義。此后的操作方式與–pod-manifest-path=相同,kubelet 會不時地重新下載該文件,當文件變化時對應地終止或啟動靜態 pod。

靜態Pod的作用

由於靜態Pod只受所在節點的kubelet控制,可以有效預防通過kubectl、或管理工具操作的誤刪除,可以用來部署核心組件應用。保障應用服務總是運行穩定數量和提供穩定服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM