K8s解决主机重启后kubelet无法自动启动问题攻略
问题描述
在Kubernetes集群中,有时候会出现主机重启后kubelet无法自动启动的问题。当节点重启后kubelet会自动重启并重新加入Kubernetes集群,但是有时候会出现节点重启后kubelet无法自动启动的情况,导致节点无法加入集群。
问题解决策略
为了解决该问题,我们可以尝试以下两种策略:
1. 开启kubelet的重启策略
如果Kubernetes集群是通过kubeadm工具创建的,可以通过修改kubelet.service文件来开启kubelet的重启策略。通过该策略,Kubernetes集群中的每个节点都会在系统重启后自动启动kubelet服务。具体步骤如下:
- 使用以下命令打开kubelet.service文件:
sudo vim /etc/systemd/system/kubelet.service
- 修改ExecStart一行,加入参数"--fail-swap-on=false",如下所示:
ExecStart=/usr/bin/kubelet --fail-swap-on=false --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --container-runtime=remote --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --image-pull-progress-deadline=2m --kubelet-cgroups=/systemd/system.slice --runtime-request-timeout=15m
- 新增以下一行,开启kubelet的重启策略:
Restart=always
- 按下Esc键后输入:wq保存并退出文件编辑模式。
- 执行以下命令重新加载全部配置文件,以应用更改:sudo systemctl daemon-reload
- 执行以下命令重启kubelet服务,以应用更改:sudo systemctl restart kubelet
2. 开启systemd的默认参数
还可以通过开启systemd的默认参数来解决节点重启后kubelet无法自动启动的问题。具体步骤如下:
- 使用以下命令打开kubelet.service.d文件夹下的10-kubeadm.conf文件:
sudo vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
- 添加以下两行配置参数,并保存文件:
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
- 执行以下命令重新加载全部配置文件,以应用更改:sudo systemctl daemon-reload
- 执行以下命令重启kubelet服务,以应用更改:sudo systemctl restart kubelet
示例说明
示例1
按照第一种策略修改kubelet.service文件,开启kubelet的重启策略:
$ sudo vim /etc/systemd/system/kubelet.service
修改后的ExecStart行如下所示:
ExecStart=/usr/bin/kubelet --fail-swap-on=false --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --container-runtime=remote --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --image-pull-progress-deadline=2m --kubelet-cgroups=/systemd/system.slice --runtime-request-timeout=15m
新增Restart=always一行,开启kubelet的重启策略:
Restart=always
按下Esc键后输入:wq保存并退出文件编辑模式。
重新加载全部配置文件:
$ sudo systemctl daemon-reload
重启kubelet服务:
$ sudo systemctl restart kubelet
示例2
按照第二种策略开启systemd的默认参数:
$ sudo vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
添加以下两行配置参数:
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
重新加载全部配置文件:
$ sudo systemctl daemon-reload
重启kubelet服务:
$ sudo systemctl restart kubelet
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:K8s解决主机重启后kubelet无法自动启动问题(推荐) - Python技术站