靜態Pod

靜態Pod

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

概念

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

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

配置文件

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

若是在已經啓動的kubelet組件上,沒有添加 --pod-manifest-path= 參數,添加後,從新啓動便可部署靜態Pod。 工具

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

模板:翻譯

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

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。server

靜態Pod的做用

因爲靜態Pod只受所在節點的kubelet控制,能夠有效預防經過kubectl、或管理工具操做的誤刪除,能夠用來部署核心組件應用。保障應用服務老是運行穩定數量和提供穩定服務。進程

相關文章
相關標籤/搜索