腾讯云kubeadm部署k8s v1.22.4版本
最近用k8s搭建自己的云工作环境,便在腾讯云购买两台服务器来部署,以下是k8s集群部署过程,欢迎大家参考。
环境说明
云服务器:腾讯云
操作系统:centos 7.8
kubeadm k8s 版本:v1.22.4
docker版本: 20.10.11
云服务器:172.17.0.17 hjforever-master (单节点) 172.17.0.15 hjforever-node1 (工作节点)
系统环境准备
每个节点的环境准备都需要执行
修改云服务器节点的host及hostname
1  | hostnamectl set-hostname hjforever-master  | 
关闭防火墙 firewalld 和 selinux
1  | systemctl stop firewalld  | 
云服务器内网端口访问也会被安全组限制,在腾讯安全组中需要加上子网中端口访问权限具体配置规则如下。
.png)
关闭swap
1  | swapoff -a  | 
系统参数配置
1  | cat > /etc/sysctl.d/k8s_better.conf << EOF  | 
确保每一台集齐uuid不一致
1  | cat /sys/class/dmi/id/product_uuid  | 
安装基础组件
1  | yum install -y yum-utils \  | 
安装docker及k8s
每个节点的环境准备都需要执行
设置阿里云 docker yum 源镜像
1  | yum-config-manager --add-repo \  | 
安装docker
安装
1  | yum list docker-ce --showduplicates | sort -r  | 
vim /etc/docker/daemon.json 添加docker配置文件,当文件不存在则自己添加
1  | vim /etc/docker/daemon.json  | 
启动docker
1  | systemctl enable docker  | 
验证docker
1  | docker run hello-world  | 

设置阿里云 k8s yum源镜像
1  | cat << EOF > /etc/yum.repos.d/kubernetes.repo  | 
安装kubeadm,kubelet和kubectl
1  | yum install -y kubectl-1.22.4 kubelet-1.22.4 kubeadm-1.22.4  | 
初始化部署Master节点及工作节点
初始化master节点 (master节点上执行此处为172.17.0.17 )
1  | kubeadm init \  | 
–apiserver-advertise-address 集群通告地址(master集群地址,此处为单master节点)
–image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
–kubernetes-version K8s版本,与上面安装的一致
–service-cidr 集群内部虚拟网络,Pod统一访问入口
–pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致
–ignore-preflight-errors=all 忽略一些检查错误
初始化后根据提示执行以下命令,后续kubectl默认控制集群时,需要使用到CA密钥,通过TLS协议保障通讯的安全性。我们要通过下面3行命令拷贝密钥信息,这样,kubectl执行时会首先访问当前用户的.kube目录,使用这些授权信息访问集群。
1  | mkdir -p $HOME/.kube  | 
之后添加worker节点时,要通过token才能保障安全性,此处先手动保存此命令
1  | kubeadm join 172.17.0.17:6443 --token lgcp23.pxw8hzdi0n0nmwfk --discovery-token-ca-cert-hash sha256:2bd3c21974df4a996e532c97a96146b7e420e7043236db452a6ceedf40768f0b  | 
部署flannel网络
flannel网络需要指定IP地址段,在上一步中已经通过编排文件设置为10.244.0.0/16。部署flannel只需要一行命令:
1  | kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml  | 
此时,调用get pods命令,可以看到master节点的组件和flannel网络都牌Running状态:

部署工作节点 (此处为172.17.0.15)
在工作节点上执行之前保存的的kubeadm join命令,建议加上 --v=5来看下前置校验,如果不通过可以根据提示处理
1  | kubeadm join 172.17.0.17:6443 --token lgcp23.pxw8hzdi0n0nmwfk --discovery-token-ca-cert-hash sha256:2bd3c21974df4a996e532c97a96146b7e420e7043236db452a6ceedf40768f0b  | 
在master节点通过kubectl get nodes命令可以看到集群中已有2个节点:
.png)
处理 kubectl get cs 报错
执行 kubectl get cs 如果出现Get “https://127.0.0.1:10257/healthz”: dial tcp 127.0.0.1:10257: connect: connection refused 报错,则执行以下操作 , 打开以下两个配置文件分别 注释 - --port=0这一行,参考下图
1  | vim /etc/kubernetes/manifests/kube-controller-manager.yaml  | 
.png)
修改之后保存即可,配置修改后组件会检测自动重启。再次执行 kubectl get cs 不报错即可。