目录
1、为什么忽然想到静态pod
2、何为静态pod
3、为什么需要静态pod
4、静态pod以什么形式部署
5、非kubeadm部署方式如何配置
1、为什么忽然想到静态pod
日常学习k8s都是采用二进制部署方式,统一规划集群核心组件配置文件目录为/opt/kubernetes/cfg/*,实际环境采用kubeadm部署时核心组件配置文件存放在/etc/kubernetes/manifests里面。
为什么这三个核心组件部署文件单独存放在这里?该目录是否只是随机自定义?我如何找到这个目录?于是static pod出现了。
2、何为静态pod
静态pod是kubelet直接启动的pod, k8s系统pod就是静态pod
动态pod是apiserver控制下启动的pod
在Kubernetes中有一个DaemonSet类型的POD,这种类型的POD可以在某个节点上长期运行,这种类型的POD就是静态POD。静态POD直接由某个节点上的kubelet程序进行管理,不需要api server介入,静态POD也不需要关联任何RC,完全是由kubelet程序来监控,当kubelet发现静态POD停止掉的时候,重新启动静态POD。
3、为什么需要静态pod
Node上需要的应当持续运行的长期设施,比如在环境部署时使用静态Pod实现一部分核心组件。结合实际就是kube-apiserver、kube-controller-manager、kube-scheduler之类,他们需要固定的部署在相应节点上还不能被驱逐,static pod不受健康检查影响。
那么为什么kubelet不以容器形式部署呢?由于kubelet在配置容器网络、管理容器数据卷时,都需要直接操作宿主机,而如果现在 kubelet 本身就运行在一个容器里,那么直接操作宿主机就会变得很麻烦。
4、静态pod以什么形式部署
kubelet启动参数“--config”时涉及
由此可见,static pod由kubelet创建更新删除操作,首先查看kubelet状态,找到配置文件
我们可以看到—config标签显示
启动参数配置在一个叫/var/lib/kubelet/config.yaml的文件中
静态Pod路径配置为/etc/kubernetes/manifests路径
由此可见,通过kubelet启动配置参数指定kubelet需要监控的配置文件所在的目录,kubelet会定期扫描该目录,并根据目录中的yaml或json文件进行创建操作。
通常四个Master上运行的核心组件是通过此方式进行创建的。
5、非kubeadm部署方式如何配置
需要在kubelet启动参数配置文件中添加如下一行:
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true
修改配置之后需要重启kubelet
systemctl stop kubelet
systemctl daemon-reload
systemctl start kubelet