一:准备三台服务器
一台用作主机服务器,两台用作节点服务器
二:搭建环境(三台机器都需要操作)
1.关闭SELinux
原因:这个是用来加强安全性的一个组件,但非常容易出错且难以定位,一般上来装完系统就先给禁用了。
通过运行命令 setenforce 0
和 sed ...
将 SELinux 设置为 permissive 模式 可以有效地将其禁用。 这是允许容器访问主机文件系统所必需的,而这些操作时为了例如 Pod 网络工作正常。
[root@k8s-node-1 ~]# sudo setenforce 0
[root@k8s-node-1 ~]# sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
2.关闭SWAP
原因:这个当内存不足时,linux会自动使用swap,将部分内存数据存放到磁盘中,这个这样会使性能下降,为了性能考虑推荐关掉。
[root@k8s-node-1 ~]# swapoff -a
[root@k8s-node-1 ~]# vi /etc/fstab
注释这一行:/mnt/swap swap swap defaults 0 0
保存退出
查看swap是否为0
[root@k8s-node-1 ~]# free -m
total used free shared buff/cache available
Mem: 15615 899 12240 2 2475 14370
Swap: 0 0 0
3.关闭防火墙
原因:防火墙,会对所有网络流量进行过滤、转发,如果是内网机器一般都会直接关闭,省的影响网络性能,但k8s不能直接关了,k8s是需要用防火墙做ip转发和修改的,当然也看使用的网络模式,如果采用的网络模式不需要防火墙也是可以直接关闭的
[root@k8s-node-1 ~]# systemctl stop firewalld
[root@k8s-node-1 ~]# systemctl disable firewalld
4.同步服务器的时间
原因:时间不同步的情况下,k8s节点会搭建不成功
[root@k8s-node-1 ~]# yum install ntpdate -y
[root@k8s-node-1 ~]# ntpdate time.windows.com
[root@k8s-node-1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
四:安装(三台机器都需要操作)
需要在每台机器上安装以下的软件包:
-
kubeadm
:用来初始化集群的指令。 -
kubelet
:在集群中的每个节点上用来启动 Pod 和容器等。 -
kubectl
:用来与集群通信的命令行工具。
1.创建阿里的yum源文件
[root@k8s-node-1 ~]# 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
2.安装
[root@k8s-node-1 ~]# yum install -y kubelet kubeadm kubectl
ps:由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用
[root@k8s-node-1 ~]# yum install -y --nogpgcheck kubelet kubeadm kubectl
3.设置开机启动
[root@k8s-node-1 ~]# systemctl enable docker
[root@k8s-node-1 ~]# systemctl enable kubelet
五:集群搭建
1.主机搭建(初始化集群)注:只需要在集群主机上操作,两台节点服务器不需要
[root@k8s-node-1 ~]# kubeadm init \
> --kubernetes-version 1.22.4 \
> --apiserver-advertise-address=0.0.0.0 \
> --service-cidr=10.96.0.0/16 \
> --pod-network-cidr=10.245.0.0/16 \
> --image-repository registry.aliyuncs.com/google_containers
注:初始化完成后保留最后kubeadm join打印的参数,用来给node接入集群时使用
1.1.将Kubernetes系统管理员的认证配置文件admin.conf复制到默认的目录下:
[root@k8s-node-1 /]# mkdir ~/.kube
[root@k8s-node-1 ~]# cp /etc/kubernetes/admin.conf ~/.kube/config
1.2.查看是否配置完成
[root@k8s-node-1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-node-1 NotReady control-plane,master 23m v1.22.4
1.3.安装Pod网络附加组件
[root@k8s-node-1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
1.3.1.确认组件状态为Running
[root@k8s-node-1 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-7f6cbbb7b8-ss8h4 1/1 Running 0 31m
coredns-7f6cbbb7b8-ttj9b 1/1 Running 0 31m
etcd-k8s-node-1 1/1 Running 0 31m
kube-apiserver-k8s-node-1 1/1 Running 0 31m
kube-controller-manager-k8s-node-1 1/1 Running 0 31m
kube-flannel-ds-292sj 1/1 Running 0 3m35s
kube-proxy-kptd5 1/1 Running 0 31m
kube-scheduler-k8s-node-1 1/1 Running 0 31m
2.集群节点操作(加入节点)
需要获取主机的token和sha256的值,就是这个
注:主机初始化完成后保留最后kubeadm join打印的参数,用来给node集群时使用
如果忘记留着也不要紧,重新获取一下就行
2.1.获取主机master的token
注:token有过期时间,过期了重新获取就可以
[root@k8s-node-1 ~]# kubeadm token create
j5lmjo.dyehwv7n46ngmdu3
2.2.获取主机master的sha256
[root@k8s-node-1 ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
2.3.第一台节点服务器加入节点
//注意复制的时候带着空格
[root@k8s-node-2 ~]# kubeadm join 主机的IP地址:6443 \
> --token j5lmjo.dyehwv7n46ngmdu3 \
> --discovery-token-ca-cert-hash sha256:9dc2474f133f538b6ddf17fcdafdf1e73d99c6fc2cfd19b4ea2d46e819e42a44 \
> --ignore-preflight-errors=Swap \
> -v5
2.4.第二台节点服务器加入节点
//注意复制的时候带着空格
[root@k8s-node-3 ~]# kubeadm join 主机的IP地址:6443 \
> --token j5lmjo.dyehwv7n46ngmdu3 \
> --discovery-token-ca-cert-hash sha256:9dc2474f133f538b6ddf17fcdafdf1e73d99c6fc2cfd19b4ea2d46e819e42a44 \
> --ignore-preflight-errors=Swap \
> -v5
2.5.在集群主机上查看节点服务器是否加入集群
[root@k8s-node-1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-node-1 Ready control-plane,master 2d20h v1.22.4
k8s-node-2 Ready <none> 170m v1.22.4
k8s-node-3 Ready <none> 3m42s v1.22.4
k8s集群搭建完成!
--------------------------------------------------
❤ 如果本篇博客对您有一定的帮助,大家记得点赞、留言、关注哦❤
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓