Centos7使用kubeadm创建k8s集群
•
•
阅读 5
1.安装kubeadm
2.安装 kubeadm、kubelet 和 kubectl
3.配置 kubelet 使用的 cgroup 驱动程序
4.关闭 swap 分区
5.重启服务器
6.初始化控制节点
7.给用户增加kubectl配置
8.安装 Pod 网络附加组件(仅master节点安装)
9.加入节点
1.安装kubeadm
允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
2.安装 kubeadm、kubelet 和 kubectl
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
## 另外,你也可以指定版本安装
## yum install -y kubectl-1.21.3-0.x86_64 kubeadm-1.21.3-0.x86_64 kubelet-1.21.3-0.x86_64
3.配置 kubelet 使用的 cgroup 驱动程序
docker配置:
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://6jbvobgm.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl restart docker
k8s配置:
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_CGROUP_ARGS=–cgroup-driver=cgroupfs
EOF
# 需要重新启动 kubelet:
systemctl daemon-reload
# 重启kubelet
systemctl restart kubelet
4.关闭 swap 分区
# 如果开启了 swap 分区,kubelet 可能会启动失败,故需要在每台机器上关闭 swap 分区:
sudo swapoff -a
# 为了防止开机自动挂载 swap 分区,可以注释 /etc/fstab 中相应的条目
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
5.重启服务器
reboot
6.初始化控制节点
注意:执行init可能会出现镜像下载失败的情况,此时需要手动下载,并重命名为k8s所需名称
kubeadm init --image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=192.168.0.0/16
# 上一步 kubeadm init 输出结果中获取以下信息,然后执行
7.给用户增加kubectl配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
8.安装 Pod 网络附加组件(仅master节点安装)
calico
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
## 注意,如果你init配置的是 --pod-network-cidr=192.168.0.0/16,那就不用改,直接运行即可,否则你需要把文件先下下来来,改成你配置的,在创建
kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml
9.加入节点
# 从第五步 kubeadm init 输出结果中获取以下信息
kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>
# 进去node节点服务器执行1|2|3|4后,执行上面命令即可
# 默认情况下,令牌会在24小时后过期。如果要在当前令牌过期后将节点加入集群,则可以通过在控制节点上运行以下命令来创建新token
kubeadm token create
# 如果你没有 --discovery-token-ca-cert-hash 的值,则可以通过在控制节点上执行以下命令链来获取它
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'