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、或管理工具操做的误删除,能够用来部署核心组件应用。保障应用服务老是运行稳定数量和提供稳定服务。进程