k8s 高可用集群搭建
docker的安装自行搞定即可, 尽量不要用太高版本到version.19即可
本文基于centos的操作系统,kubeadm来作为搭建方式
新建yum源
sudo 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 sudo yum makecache sudo yum -y install kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2 sudo systemctl enable kubelet
使用systemd作为docker的cgroup driver
sudo vi /etc/docker/daemon.json (没有则创建) 加入 { "exec-opts": ["native.cgroupdriver=systemd"] } systemctl daemon-reload && systemctl restart docker
切换到root用户执行 关键步骤
# (如果是重置机器,需要执行) kubeadm reset rm /etc/cni/net.d -fr iptables -F yum -y remove kubelet-1.18.6 kubeadm-1.18.6 kubectl-1.18.6 # (重置end) yum -y install kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2 echo 1 > /proc/sys/net/ipv4/ip_forward modprobe br_netfilter echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables systemctl daemon-reload # 可能会报错 可以不执行这个 systemctl enable kubelet
master节点执行以下命令
#主机执行: kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=1.20.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
得到token之后给worker依次执行, 加入到集群当中去,
初步就完成了集群的搭建
还差一个网络插件#得到token后,给另外worker去执行 kubeadm join 192.168.0.191:6443 --token zx5rj1.19yqkv7q2uehatit \ --discovery-token-ca-cert-hash sha256:b5a066c56e73896dc14530d5464eadd45732de6bd3806e878c80ed589e4ea502
给节点做一些完善工作
#然后退出到普通用户, 用kubectl命令执行 #去除主节点污点 kubectl taint nodes --all node-role.kubernetes.io/master- # (后面一个 – 是需要的) 给工作节点打标签 kubectl label node huawei-worker node-role.kubernetes.io/node=node
我们需要让外网也可以访问, 也就是通过kubectl客户端工具能连接主机的外部ip地址,需要做此工作
#让外网可以访问 #先删除 apiserver的证书和key #主节点上 cd /etc/kubernetes/pki && rm -f apiserver.key && rm -f apiserver.crt sudo kubeadm init phase certs apiserver --apiserver-cert-extra-sans 121.36.226.197 kubeadm alpha certs renew apiserver
安装网络插件, 这里我们选择flannel
https://github.com/flannel-io/flannel For Kubernetes v1.17+ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # apply里面的镜像要替换下,可以用katacoda