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=
若是在已經啓動的kubelet組件上,沒有添加 --pod-manifest-path=
好比--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
kubelet 週期地從–manifest-url=
參數指定的地址下載文件,而且把它翻譯成 JSON/YAML 格式的 pod 定義。此後的操做方式與–pod-manifest-path=
相同,kubelet 會不時地從新下載該文件,當文件變化時對應地終止或啓動靜態 pod。server
因爲靜態Pod只受所在節點的kubelet控制,能夠有效預防經過kubectl、或管理工具操做的誤刪除,能夠用來部署核心組件應用。保障應用服務老是運行穩定數量和提供穩定服務。進程