1,問題描述
(1)在安裝配置好 Kubernetes 后,正常情況下服務器關機重啟,kubelet 也會自動啟動的。但最近配置的一台服務器重啟后,輸入命令 kubectl get nodes 查看節點報如下錯誤:
The connection to the server 192.168.60.128:6443 was refused - did you specify the right host or port?
(2)輸入 systemctl status kubelet 命令查看 kubelet 的情況,發現 kubelet 確實沒有啟動:
ube-apiserver.service - Kubernetes API Server Loaded: loaded (/usr/lib/systemd/system/kube-apiserver.service; enabled; vendor preset: disabled) Active: failed (Result: start-limit) since Mon 2019-03-18 14:55:11 CST; 9min ago Docs: https://github.com/kubernetes/kubernetes Process: 6446 ExecStart=/opt/kubernetes/bin/kube-apiserver $KUBE_APISERVER_OPTS (code=exited, status=1/FAILURE) Main PID: 6446 (code=exited, status=1/FAILURE) Mar 18 14:55:11 localhost.localdomain kube-apiserver[6446]: --vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging Mar 18 14:55:11 localhost.localdomain kube-apiserver[6446]: --watch-cache Enable watch caching in the apiserver (default true) Mar 18 14:55:11 localhost.localdomain kube-apiserver[6446]: --watch-cache-sizes strings List of watch cache sizes for every resource (pods, nodes, etc.), comma sepa...ber. It take Mar 18 14:55:11 localhost.localdomain kube-apiserver[6446]: error: failed to create listener: failed to listen on 192.168.60.128:6443: listen tcp 192.168.247.211:6443: bind: cannot assign requested address Mar 18 14:55:11 master systemd[1]: kube-apiserver.service holdoff time over, scheduling restart. Mar 18 14:55:11 master systemd[1]: Stopped Kubernetes API Server. Mar 18 14:55:11 master systemd[1]: start request repeated too quickly for kube-apiserver.service Mar 18 14:55:11 master systemd[1]: Failed to start Kubernetes API Server. Mar 18 14:55:11 master systemd[1]: Unit kube-apiserver.service entered failed state. Mar 18 14:55:11 master systemd[1]: kube-apiserver.service failed. Hint: Some lines were ellipsized, use -l to show in full.
2,問題原因
由於 K8s 必須保持全程關閉交換內存,之前我安裝是只是使用 swapoff -a 命令暫時關閉 swap。而機器重啟后,swap 還是會自動啟用,從而導致 kubelet 無法啟動。
3,解決辦法
(1)首先執行如下命令關閉 swap。
swapoff -a
(2)接着編輯 /etc/fstab 文件。
vi /etc/fstab
(3)將 /dev/mapper/centos-swap swap swap default 0 0 這一行前面加個 # 號將其注釋掉。
(4) 編輯完畢后保存退出。這樣機器重啟后 kubelet 也可以正常自動啟動了。
