k8s安装部署问题收集

 

1、为避免出现“网络不可达”错误,这里将谷歌的镜像换成国内镜像:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

exclude=kube*

EOF

 

# 将 SELinux 设置为 permissive 模式(将其禁用)

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

 

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

 

systemctl enable kubelet && systemctl start kubelet

2、修改sysctl配置

对于 RHEL/CentOS 7 系统,可以会由于 iptables 被绕过导致网络请求被错误的路由。所以还需执行如下命令保证 sysctl 配置中 net.bridge.bridge-nf-call-iptables 被设为1。

解决方法:

(1)使用 vi 命令编辑相关文件:

1

vi /etc/sysctl.conf


(2)在文件中添加如下内容后,保存退出。

1

2

3

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1


(3)最后执行如下命令即可:

1

sysctl --system

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】文件拷贝到从节点相同目录下,然后如提示配置环境变量:

  1. Your Kubernetes control-plane has initialized successfully!

  2.  
  3. To start using your cluster, you need to run the following as a regular user:

  4.  
  5. mkdir -p $HOME/.kube

  6. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  7. sudo chown $(id -u):$(id -g) $HOME/.kube/config

复制

上一篇:Pod status 状态解释


下一篇:Kubernetes:06---kubeadm工具搭建k8s集群