我使用systemd服务安装了第一个ectd,kubeapiserver和kubelet。服务运行正常,正在侦听所有必需的端口。
当我运行kubectl cluster-info时,我得到下面的输出
Kubernetes master is running at http://localhost:8080
当我运行kubectl时,获取componentstatuses,然后得到以下输出结果
etcd-0 Healthy {"health": "true"}
但是运行kubectl获取节点,我得到以下错误
Error from server (ServerTimeout): the server cannot complete the requested operation at this time, try again later (get nodes)
有人可以帮我吗?
答案 0 :(得分:8)
对于消息:
:~# k get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
controller-manager Unhealthy Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused
scheduler Unhealthy Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
etcd-0 Healthy {"health":"true"}
--------
在所有master节点上修改以下文件:
$ sudo vim /etc/kubernetes/manifests/kube-scheduler.yaml
注释或删除该行:
- --port=0
in (spec->containers->command->kube-scheduler)
$ sudo vim /etc/kubernetes/manifests/kube-controller-manager.yaml
注释或删除该行:
- --port=0
in (spec->containers->command->kube-controller-manager)
然后重启kubelet服务:
$ sudo systemctl restart kubelet.service
答案 1 :(得分:0)
您缺少的kubeconfig文件。 kubectl在此位置$HOME/.kube/config
安装的一部分,您可以在主节点上复制这样的配置文件。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
答案 2 :(得分:0)
控制器管理器和调度程序的状态是什么。运行以下命令时,您是否看到它们被列为“健康”?
kubectl get cs