Centos7用kubeadm部署k8s集群踩坑
将 k8s 集群从 ubuntu 换到了 centos,用 kubeadm 部署遇到了几个坑,记录一下
1.epel
centos 默认源里什么都没有,安装 epel 是必须的。
sudo yum install epel-release
2.hostname
2.1
centos 特别坑的一点是,hostname 不会根据 username 自动设置,正常情况下影响不大,但是遇到 k8s 之后,这就是个留给新手的大坑,
虽然 k8s 官方文档中说明了要确保 Unique hostname, MAC address, and product_uuid for every node.
但是如果每个 node 的 hostname 都相同,也不会报错,这就很坑。
如果你有多个 node,hostname 还都是一个名字,例如 centos 默认的 hostname ,那么当你运行
kubectl get nodes
结果只会显示一个master节点,因为k8s认为相同的 name 就是一个 node。
2.2
要解决这个问题,就要在初始化集群之前为每一个 node 设置好唯一的 hostname。
2.3
如果你已经遇到了这个问题,那么最好是重建集群,
每个节点上运行
kubeadm reset
并且删除 $HOME/.kube/config
然后用
kubeadm init
重建集群
3.交换分区
关闭交换分区对于 k8s 来说是必须的。但是网上很多教程都是用
swapoff -a
这个命令虽然可以关闭交换分区,但是是暂时的。重启就会失效,k8s 集群也无法启动,
所以最好是在用 swapoff 命令的同时,也修改 /etc/fstab 文件,
通过注释掉 swap 部分,禁用交换分区的自动挂载
4.firewall
关闭 firewall
systemctl disable firewalld
systemctl stop firewalld