服务器重启后K8s重启失败
2025/01/26
141
问题信息
问题来源 | 产品大类 | 关键字 |
---|---|---|
官方 | 集群调度 | 重启、k8s |
问题现象描述
服务器重启后K8s重启失败,执行kubectl get pod命令提示错误信息如下。
The connection to the server xxx.xxx.xxx.xxx:6443 was refused - did you specify the right host or port?
执行free -m命令查看swap未关闭,现象如下。
total used free shared buff/cache available Mem: 773737 5373 766172 4 2192 765453 Swap: 38146 0 38146
原因分析
swap未关闭。
解决措施
- 执行以下命令,关闭swap。
swapoff -a
- 等待K8s启动后,执行以下命令。
kubectl get pod
返回结果示例如下,表示正常。
NAME READY STATUS RESTARTS AGE hccl-controller-767f45c6b5-srkr4 1/1 Running 10 46h tjm-6ff5f74865-wh6nm 1/1 Running 0 5s
如需使配置永久生效,请继续执行以下操作。
- 分别执行以下命令,创建sh文件。
mkdir -p /usr/local/scripts/ vim /usr/local/scripts/dls_swap_check.sh
- 在sh文件中写入以下内容。
#!/bin/bash function check_swap() { swap_total=1 sleep 10 while [ "$swap_total" != "0" ]; do swap_total=$(free -m | grep -i swap | awk '{ print $2 }') echo "The swap total: $swap_total." > /dev/kmsg swapoff -a sleep 5 done } check_swap & echo 0
- 执行以下命令,修改sh文件权限。
chmod 750 /usr/local/scripts/dls_swap_check.sh
- 执行以下命令,编辑rc.local文件。
vi /etc/rc.local
- 在exit 0前添加以下内容。
/usr/local/scripts/dls_swap_check.sh exit 0