Kubeadm搭建K8s v1.21.3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubeadm搭建K8s v1.21.3相关的知识,希望对你有一定的参考价值。
1、准备工作
设置每个机器自己的hostname、查看所有节点是否关闭防火墙、selinux、swap交换分区
#查看是否关闭selinux
sestatus # 显示 SELinux status:disabled 即为关闭
如节点未关闭防火墙、selinux、swap交换分区
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)将各节点的主机名与IP写入到三台服务器的hosts中
sudo setenforce 0
sudo sed -i s/^SELINUX=enforcing$/SELINUX=permissive/ /etc/selinux/config
#关闭swap
swapoff -a
sed -ri s/.*swap.*/#&/ /etc/fstab
cat >> /etc/hosts << EOF
192.168.0.244 hecs-223075-0003
192.168.0.103 hecs-223075-0001
192.168.0.44 hecs-223075-0002
EOF
将桥接得IPV4流量传递到iptables链(三台都执行)
#调整内核参数
cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF#加载参数
sysctl --system
2、安装Docker
sudo yum remove docker*
sudo yum install -y yum-utils
#配置docker的yum地址
sudo yum-config-manager \\
--add-repo \\
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装指定版本
sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
# 启动&开机启动docker
systemctl enable docker --now
# docker加速配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-EOF
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts":
"max-size": "100m"
,
"storage-driver": "overlay2"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3、所有节点配置K8s源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
4、所有节点安装kubeadm、kubelet和kubectl
#worker 节点可以不装kubectl
yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3
#开机自启kubelet
sudo systemctl enable --now kubelet
5、部署kubenetes,在mster节点执行kubeadm
kubeadm init \\
--apiserver-advertise-address=192.168.0.244 \\
--control-plane-endpoint=m1 \\
--image-repository registry.aliyuncs.com/google_containers \\
--kubernetes-version v1.21.3 \\
--service-cidr=10.96.0.0/16 \\
--pod-network-cidr=10.244.0.0/16
#参数说明
kubeadm init \\
--apiserver-advertise-address=192.168.0.244 \\ #指定master监听的地址,修改为自己的master地址
--control-plane-endpoint=m1 \\ #需要高可用的时候才需要配置
--image-repository registry.aliyuncs.com/google_containers \\ #指定为aliyun的下载源
--kubernetes-version v1.21.3 \\ #指定k8s版本,1.18.0版本比较稳定
--service-cidr=10.96.0.0/12 \\ #设置集群内部的网络
--pod-network-cidr=10.244.0.0/16 #指定K8S POD网段,不同的网络插件默认网段不一样
# service-cidr 和 pod-network-cidr 最好就用这个,不然需要修改后面的 kube-flannel.yaml 文件
ps:token制作
#node节点加入集群需要生成的token,token有效期为24消失,过期需要重新创建,创建命令为:
kubeadm token create --print-join-command
6、根据init信息添加worker节点
#查看节点是否添加成功(现在会显示notready)
kubectl get nodes
7、master节点安装部署pod网络插件(flannel)
#github仓库下载
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#国内站点下载证书
wget http://120.78.77.38/file/kube-flannel.yaml
#安装
kubectl apply -f kube-flannel.yml
!!执行kubectl apply -f kube-flannel.yml 可能会出现镜像下载缓慢或者下载不下来的情况
8、再次查看集群状态
kubectl get nodes #所有节点显示ready
kubectl get pods -A #所有pod为runing
9、集群健康检查
kubectl get cs
#若为unhealthy
vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
#将- --port=0注释掉
10、再次查询服务是否正常
#查询所有pod是否正常运行
kubectl get pods -A
#查询master是否正常
kubectl get cs
#查询node节点是否ready
kubectl get nodes
以上是关于Kubeadm搭建K8s v1.21.3的主要内容,如果未能解决你的问题,请参考以下文章