1、为避免出现“网络不可达”错误,这里将谷歌的镜像换成国内镜像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
2、修改sysctl配置
对于 RHEL/CentOS 7 系统,可以会由于 iptables 被绕过导致网络请求被错误的路由。所以还需执行如下命令保证 sysctl 配置中 net.bridge.bridge-nf-call-iptables 被设为1。
解决方法:
(1)使用 vi 命令编辑相关文件:
1 |
|
(2)在文件中添加如下内容后,保存退出。
1 2 3 |
|
(3)最后执行如下命令即可:
1 |
|
3、 kubectl get nodes获得的内容全是NotReady,查看日志/var/log/messages,报错
Apr 29 15:11:00 master-wxr kubelet: E0429 15:11:00.084204 11519 kubelet.go:2187] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
解决方法:
使用命令vim /var/lib/kubelet/kubeadm-flags.env,编辑配置文件,删除掉--network-plugin=cni
KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --network-plugin=cni
master节点和node节点都删除掉--network-plugin=cni。
4、 kubectl get cs
查看组件状态异常
通过kubeadm安装的k8s集群获取kube-scheduler和kube-controller-manager组件状态异常
NAME STATUS MESSAGE ERROR
scheduler Unhealthy Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
controller-manager Unhealthy Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused
etcd-0 Healthy {"health":"true"}
解决方法:
先查看本地的端口,可以确认没有启动10251、10252端口,确认kube-scheduler和kube-controller-manager组件配置是否禁用了非安全端口
修改配置文件路径:/etc/kubernetes/manifests/kube-scheduler.yaml、/etc/kubernetes/manifests/kube-controller-manager.yaml
如controller-manager组件的配置如下:可以注释掉--port=0这个设置,然后重启 systemctl restart kubelet
5、执行kubectl get nodes 出现端口拒绝无法连接
The connection to the server localhost:8080 was refused - did you specify the right host or port?
解决方法:
出现这个问题的原因是kubectl命令需要使用kubernetes-admin来运行,解决方法如下,将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下,然后如提示配置环境变量:
-
Your Kubernetes control-plane has initialized successfully!
-
To start using your cluster, you need to run the following as a regular user:
-
mkdir -p $HOME/.kube
-
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
-
sudo chown $(id -u):$(id -g) $HOME/.kube/config
复制