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 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i s/^SELINUX=enforcing$/SELINUX=permissive/ /etc/selinux/config

#关闭swap
swapoff -a
sed -ri s/.*swap.*/#&/ /etc/fstab
将各节点的主机名与IP写入到三台服务器的hosts中

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注释掉

Kubeadm搭建K8s

Kubeadm搭建K8s

10、再次查询服务是否正常

#查询所有pod是否正常运行 
kubectl get pods -A

#查询master是否正常
kubectl get cs

#查询node节点是否ready
kubectl get nodes


以上是关于Kubeadm搭建K8s v1.21.3的主要内容,如果未能解决你的问题,请参考以下文章

k8s ---- kubeadm 的方式搭建 k8s 集群

Kubernetes Traefik集成Pilot

kubeadm搭建高可用K8s集群

K8s学习从零开始搭建kubernetes集群环境(虚拟机/kubeadm方式)

Kubeadm 搭建k8s

云原生 • Kubernetes搭建 k8s 集群(Kubeadm 方式)