NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
[TOC] # 静态Pod 静态pod直接由某个节点上的kubelet程序进行管理,不需要api server介入,静态pod也不需要关联任何RC,完全是由kubelet程序来监控,不受`Deployment`和`DaemonSet`控制。当kubelet发现静态pod停止掉的时候,重新启动静态pod。并且始终在某一个节点上运行 kubelet 会自动为每一个静态Pod在 apiserver 上创建一个镜像 Pod(我理解的是一个副本pod,只能查看),因此可以在 apiserver 中查询到该 pod ,但不能通过 apiserver 进行控制(例如不能删除)。 ## 创建静态pod 创建方式有两种:`配置文件`和`HTTP`方式 ### 配置文件方式 #### 创建 在启动`kubelet`进程时,根据启动参数中定义路径,kubelet 定期扫描该目镜下的YAML文件,来创建或者删除静态Pod。 通过命令查看当前 kubelet 的配置文件所在路径 ![](https://img.kancloud.cn/b5/7f/b57f5c1d341f329f961a2babf53a00e2_1314x220.png) 路径为:`/var/lib/kubelet/config.yaml` 找到`config.yaml`中定义静态Pod路径的部分 ![](https://img.kancloud.cn/f0/3a/f03a18a75f8fbd1e10ed2850873a4592_327x84.png) 也可以通过`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf`文件查看和定义 ![](https://img.kancloud.cn/67/ef/67efeee4a197de61a7934b9ce0302827_661x184.png) 添加`Environment="KUBELET_ARGS=--pod-manifest-path=/etc/kubelet.d/"` ![](https://img.kancloud.cn/9e/c9/9ec9bf9f93a3a2ef45b08ae4d7db378f_1008x153.png) 修改完成后,重启`kubelet`进程 在`/etc/kubernetes/manifests`目录下创建yaml文件 ~~~ --- apiVersion: v1 kind: Pod metadata: name: static-pod1 labels: app: static spec: containers: - name: web image: nginx ports: - name: webport containerPort: 80 ~~~ 创建完成 ![](https://img.kancloud.cn/c9/c0/c9c074a6be9f8a67697361de7d08f894_1043x91.png) 通过`kubectl`查看,`kubectl`自动在`apiserver`中创建了一个副本pod ![](https://img.kancloud.cn/5c/71/5c714edf6cd7dcdbf0fb344b09c25801_440x64.png) (`kubectl delete`是只能删除这个副本镜像pod,删除后,这个静态pod还会再自动创建一个副本) #### 删除 要删除静态pod,只需要在`/etc/kubernetes/manifests`中删除这个静态pod的yaml文件就可以自动删除了。 ### HTTP方式 通过在`/etc/systemd/system/kubelet.service.d/10-kubeadm.conf`文件中,添加`--pod-manifest-url=`参数指定的地址下载文件,下载完成后自动创建,剩下的东西就和配置文件方式一样了。