裸机搭建k8s集群可能遇到的坑 电脑版发表于:2022/5/30 11:07 ## 执行yum-config-manager报错 如果执行yum-config-manager报错:yum-config-manager: 未找到命令。 这个是因为系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum-utils 安装就可以了。 ## 执行 yum -y install yum-utils报错 tn6>执行yum -y install yum-utils,可能会遇到错: repomd.xml signature could not be verified for kubernetes **是因为repo 的 gpg 验证不通过导致的,可以修改repo_gpgcheck=0跳过验证。** repo文件是CentOS中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用 在linux下,repo文件都是存放在/etc/yum.repos.d文件夹之中的 进入/etc/yum.repos.d,找到kubernetes.repo,文件打开修改即可 ![](https://img.tnblog.net/arcimg/aojiancc2/f71e464b543b4c2c8a36a9978c1f4488.png) 修改repo_gpgcheck=0跳过验证。 ![](https://img.tnblog.net/arcimg/aojiancc2/4dc5b84d6cc34e6991c7c2f596ce7b60.png) 修改之后在执行yum -y install yum-utils就可以成功了 ![](https://img.tnblog.net/arcimg/aojiancc2/2a4e054c49144de495d93578464d4eba.png) ## kubeadm init报错情况:一 tn6> /etc/kubernetes/manifests/kube-apiserver.yaml already exists /etc/kubernetes/manifests/kube-controller-manager.yaml already exists ............................. 这是因为前面已经执行过kubeadm init了或者是执行过很多次了 #### 解决方法 ##### 方法1:使用 kubeadm reset来重置 ``` kubeadm reset ``` ##### 方法2:在后面加命令--ignore-preflight-errors=all 来忽略 比如: ``` kubeadm init --image-repository=registry.aliyuncs.com/google_containers --ignore-preflight-errors=all ``` ##### 方法3:执行的时候接版本 比如—v=5 或者—v=更高的版本 ``` kubeadm init --image-repository=registry.aliyuncs.com/google_containers --v=5 ``` ## k8s构建Flannel网络插件失败,k8s安装网络插件失败 ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` tn6>注意由于这是外国的网址很有可能会访问不到遇到错误:kube-flannel.yml The connection to the server raw.githubusercontent.com was refused。 是因为域名解析不了,所以访问不了。 ![](https://img.tnblog.net/arcimg/aojiancc2/22e52517d0dc4021a4d31356c87a9c9d.png) ### 解决方法: 不用域名登录,直接用ip登录,或者去/etc/hosts里设置下域名解析 **1、通过第三方网站查询到raw.githubusercontent.com所对应的ip是多少** http://ip.tool.chinaz.com/raw.githubusercontent.com ![](https://img.tnblog.net/arcimg/aojiancc2/1b59a5ca3efe4284a7fc25e84f3eebf2.png) **2、修改/etc/hosts做好域名解析,ip最好用网站上查询到的最新的** 使用vi命令打开hosts文件: ``` vi /etc/hosts ``` 添加:185.199.109.133 raw.githubusercontent.com ![](https://img.tnblog.net/arcimg/aojiancc2/1bc8014217a14087959330a37a795466.png) **3、再次执行上面贴的命令就可以成功了** ![](https://img.tnblog.net/arcimg/aojiancc2/7d529af2bbb743d78cfe259cb8e95821.png) ## k8s 1.24版本的坑 E0519 23:21:51 .331778 25545 kubelet.go:2419] "Error getting node" err="node \"master\" not found" 这种错,换成1.23版本就直接好了 -.- ## 如果是因为版本的问题造成的错误,可以先卸载然后在下载指定的版本 #### 比如先卸载掉当前的k8s环境,在安装指定版本 **先卸载k8s(我这里前面使用的是最新版)** ``` sudo yum remove -y kubelet kubeadm kubectl ``` **安装指定版本的k8s** ``` yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2 --disableexcludes=kubernetes ``` #### 卸载Docker后在安装指定版本: tn6>注意:不同版本的k8s需要对应不同版本的docker版本,如果想安装不同版本的k8s可以自行搜一下对应的Docker版本。不然也容易出现坑。 **卸载Docker(我这里docker使用的也是最新版版本):** ``` sudo yum remove -y docker-ce ``` **安装指定版本的docker** ``` yum install docker-ce-18.06.3.ce-3.el7 ``` ## 一直卡到 [preflight] Running pre-flight checks 可以考虑时间同步的问题