创建静态pod
正常情况下,pod在master上统一管理、指定、分配。静态pod是指不是由master创建启动,在节点上只要启动kubelet,就会自动创建pod。
- 在worker节点上编辑kubelet启动的参数文件,在Environment最后添加
--pod-manifest-path=/etc/kubernetes/kubelet.d
systemctl status kubelet
vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
- 如果该目录不存在,则创建该目录
mkdir /etc/kubernetes/kubelet.d
- 重启服务
systemctl daemon-reload
systemctl restart kubelet
- 在该worker节点上,在
/etc/kubernetes/kubelet.d
下创建test.yaml
文件
apiVersion: v1
kind: Pod
metadata:
namespace: default
labels:
role: myrole
name: static-pod
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: c1
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
- 在master上查看pod
kubectl get pod
注意:将该YAML文件从该目录移走或删除则pod被删除。
master上静态pod的指定方式
- 在master上查看文件
/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
,可以看到Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml
,该文件也定义了静态pod的路径
grep static /var/lib/kubelet/config.yaml
- 其实master的组件。如apiserver,kube-proxy等静态配置文件都是放在该目录里的,如果路径修改错误,则k8s集群将会启动失败
ls -l /etc/kubernetes/manifests