二个云服务器一个百度一个腾讯
centos7.6
67的是master 160的是node
hostnamectl set-hostname master
[root@VM-0-16-centos ~]# hostname
master
[root@ls ~]# hostnamectl set-hostname node
[root@ls ~]# hostname
node
vim /etc/hosts
ip master
ip node
[root@VM-0-16-centos ~]# ping node
PING node (182.61.40.160) 56(84) bytes of data.
64 bytes from node (): icmp_seq=1 ttl=250 time=7.77 ms
64 bytes from node (: icmp_seq=2 ttl=250 time=7.71 ms
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
I0306 11:29:24.917244 22217 version.go:255] remote version is much newer: v1.26.2; falling back to: stable-1.22 [init] Using Kubernetes version: v1.22.17 [preflight] Running pre-flight checks [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 23.0.1. Latest validated version: 20.10 error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2 [ERROR FileContent–proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1 [ERROR Port-2379]: Port 2379 is in use [ERROR Port-2380]: Port 2380 is in use [ERROR DirAvailable–var-lib-etcd]: /var/lib/etcd is not empty [preflight] If you know what you are doing, you can make a check non-fatal with `–ignore-preflight-errors=…` To see the stack trace of this error execute with –v=5 or higher
这段日志是在进行Kubernetes安装前的预检查(preflight)阶段输出的。具体来说,该日志包含以下信息:
第一行提示远程Kubernetes版本较新,当前版本会回滚到1.22。
第二行提示将使用Kubernetes版本v1.22.17。
接下来是预检查的输出结果。
第三行警告Docker版本不在验证版本列表中,当前版本为23.0.1,最新验证版本为20.10。
第四行到第九行列出了致命错误,包括可用CPU数小于2、/proc/sys/net/bridge/bridge-nf-call-iptables文件内容未设置为1、端口2379和2380已被占用,以及/var/lib/etcd目录不为空。
最后一行提示,如果想要查看该错误的详细信息,可以使用–v=5或更高级别的日志。
因此,要解决该问题,需要解决列出的所有错误。具体来说:
可以通过增加CPU数或使用更高性能的机器来解决CPU数不足的问题。
可以通过将/proc/sys/net/bridge/bridge-nf-call-iptables的内容设置为1来解决iptables的问题。
可以通过停止占用端口2379和2380的进程来解决端口已被占用的问题。
可以通过清空/var/lib/etcd目录来解决该目录不为空的问题。
同时,如果希望忽略特定的错误,可以使用–ignore-preflight-errors选项。
根据错误信息,这里列出了几个问题:
NumCPU
错误:可用 CPU 数量不足 2 个。
FileContent--proc-sys-net-bridge-bridge-nf-call-iptables
错误:/proc/sys/net/bridge/bridge-nf-call-iptables
内容未设置为 1。
Port-2379
错误:端口 2379 正在被占用。
Port-2380
错误:端口 2380 正在被占用。
DirAvailable--var-lib-etcd
错误:/var/lib/etcd
目录不为空。
以下是解决方法:
NumCPU
错误:这个错误是因为当前系统可用 CPU 数量不足 Kubernetes 要求的最低数量。可以考虑升级 CPU 或者使用 --ignore-preflight-errors=NumCPU
参数忽略这个错误。
FileContent--proc-sys-net-bridge-bridge-nf-call-iptables
错误:这个错误是因为 Linux 内核没有启用 iptables 模块。可以使用以下命令启用 iptables 模块:bashCopy codesudo modprobe br_netfilter echo '1' | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
和 4. Port-2379
和 Port-2380
错误:这个错误是因为端口 2379 和 2380 已经被占用。可以使用以下命令查看哪个进程在占用这两个端口:cssCopy codesudo lsof -i :2379 sudo lsof -i :2380
然后可以停止占用这两个端口的进程,或者修改 Kubernetes 使用的端口。
DirAvailable--var-lib-etcd
错误:这个错误是因为 /var/lib/etcd
目录不为空,而 Kubernetes 要求这个目录为空。可以备份这个目录并清空它,或者使用 --ignore-preflight-errors=DirAvailable--var-lib-etcd
参数忽略这个错误。