RKE2在线方式部署K8S集群最新版本
RKE2快速安装高可用K8S集群
1. 主机环境准备
本次部署使用3台centos7主机进行,具体配置如下
主机名 | IP地址 | 系统 | 内核参数 | 配置信息 |
---|---|---|---|---|
k8s-rke2-server01 | 192.168.141.200 | CentOS 7.9 x64 | 5.4.269-1.el7.elrepo.x86_64 | 4核8G |
k8s-rke2-server02 | 192.168.141.201 | CentOS 7.9 x64 | 5.4.269-1.el7.elrepo.x86_64 | 4核8G |
k8s-rke2-server03 | 192.168.141.202 | CentOS 7.9 x64 | 5.4.269-1.el7.elrepo.x86_64 | 4核8G |
主机配置主要进行下面的设置:
1.1 主机初始化
磁盘格式化,LVM分区,这些就不再写了。有大量的参考文档。
主机名修改,配置hosts
hostnamectl set-hostname k8s-rke2-server01
cat >> /etc/hosts << EOF
192.168.141.200 k8s-rke2-server01
192.168.141.201 k8s-rke2-server02
192.168.141.202 k8s-rke2-server03
EOF
2. 关闭swap分区
swapoff -a
修改/etc/fstab配置文件,把swap分区挂载的那一行注释掉
1.2 NetworkManager设置
注意:如果使用NetworkManager管理网络,需要进行如下配置
参考:https://docs.rancher.cn/docs/rke2/known_issues/_index/#networkmanager
systemctl status NetworkManager
cat >> /etc/NetworkManager/conf.d/rke2-canal.conf << EOF
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:flannel*
EOF
systemctl daemon-reload
systemctl restart NetworkManager
2.5 防火墙规则
1. 关闭firewalld服务
参考:https://docs.rancher.cn/docs/rke2/known_issues/_index/#networkmanager
systemctl stop firewalld
systemctl disable firewalld
systemctl disable iptables
systemctl stop iptables
关闭firewalld服务之后,如果还想用防火墙规则,可以试试csf或者iptables进行规则管理。
2. 关闭selinux
getenforce
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
getenforce
详细的安装要求,请参考:
https://docs.rancher.cn/docs/rke2/install/requirements/_index/
1.3 设置时间同步
安装ntp相关服务
yum -y install ntp
systemctl start ntpd # 启动时钟同步服务
systemctl enable ntpd # 设置开机启动
ntpq -p # 查看时钟同步状态
如果在局域网环境中有ntp时钟服务器,尽量用本地的
1.4 ipvs配置
由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块:
在所有的Kubernetes节点执行以下脚本:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
#执行脚本
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
上面脚本创建了/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
命令查看是否已经正确加载所需的内核模块。
接下来还需要确保各个节点上已经安装了ipset软件包。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm。
yum install ipset ipvsadm -y
以上设置完成后,重启主机,确认所有配置都已经生效。
2. RKE2安装配置
设置一个 HA 集群需要以下步骤:
- 配置一个固定的注册地址
- 启动第一个 server 节点
- 加入其他 server 节点
参考:https://docs.rancher.cn/docs/rke2/install/ha/_index/
由于主机有限,我们就把第一个启动的节点设置为注册地址,下面只进行2、3步骤。
2.1 下载安装
rke2版本信息:https://github.com/rancher/rke2/releases
使用国内镜像地址下载启动脚本
在每个节点都执行下面的脚本
参考:https://docs.rancher.cn/docs/rke2/install/install_options/install_options/_index#%E9%85%8D%E7%BD%AE-linux-%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC
curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.28.7+rke2r1 INSTALL_RKE2_TYPE=server sh -
上面主要是下载一些必要的安装包。
2.2 第一个节点启动,初始化
在第一个节点启动服务
systemctl start rke2-server
systemctl enable rke2-server
# 第一次启动可能会比较慢,因为要初始化、生成各种文件
#查看第一次启动后生成的文件
ll /var/lib/rancher/rke2/
ll /var/lib/rancher/rke2/bin/
ll /etc/rancher/rke2/
这里的rke2.yaml 相当于admin.conf 谁拥有该文件就有rke2集群控制权
#查看node节点和pod启动情况
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
/var/lib/rancher/rke2/bin/kubectl get node
/var/lib/rancher/rke2/bin/kubectl get pod -A
在主节点1执行上述命令,等待集群启动完成后,pod全部正常,接着在该节点执行以下命令进行集群配置。
查看集群的唯一token
# cat /var/lib/rancher/rke2/server/node-token
K10b725b06fb6c540b67cd04599f1da77ec13ab9deda31b43049f4d4c186a9843ed::server:7023bb140ad16a51416cade94ba888a2
修改集群配置文件
vim /etc/rancher/rke2/config.yaml
### 以下为配置文件内容
# server: https://192.168.141.200:9345
# token: K10ebeff7636753f2d8ac49baf35dfaebd5ab8457d42b3cd6b872b9f18aaa1ef8fb::server:484958b563294842f8625b2c5adc06a7 or `cat /var/lib/rancher/rke2/server/token`
write-kubeconfig-mode: "0644"
cluster-cidr: "192.168.60.0/24"
service-cidr: "192.168.61.0/24"
service-node-port-range: 30000-32767
tls-san:
- "127.0.0.1"
- "192.168.141.200"
- "192.168.141.201"
- "192.168.141.202"
- "rke2-cluster-master01"
- "rke2-cluster-master02"
- "rke2-cluster-master03"
cni: calico
kube-proxy-arg:
- "proxy-mode=ipvs"
disable:
- rke2-ingress-nginx
kube-proxy-arg:
- "proxy-mode=ipvs"
disable-cloud-controller: true
selinux: false
debug: false
data-dir: /home/rancher/rke2
2.3 另外两个节点
另外两个节点参考节点1的配置文件,只需要修改node-name这个参数即可。其他配置项完全相同。
节点2
# server: https://192.168.141.200:9345
# token: K10ebeff7636753f2d8ac49baf35dfaebd5ab8457d42b3cd6b872b9f18aaa1ef8fb::server:484958b563294842f8625b2c5adc06a7 or `cat /var/lib/rancher/rke2/server/token`
server: https://192.168.141.200:9345
token: K10ebeff7636753f2d8ac49baf35dfaebd5ab8457d42b3cd6b872b9f18aaa1ef8fb::server:484958b563294842f8625b2c5adc06a7
write-kubeconfig-mode: "0644"
cluster-cidr: "192.168.60.0/24"
service-cidr: "192.168.61.0/24"
service-node-port-range: 30000-32767
tls-san:
- "127.0.0.1"
- "192.168.141.200"
- "192.168.141.201"
- "192.168.141.202"
- "rke2-cluster-master01"
- "rke2-cluster-master02"
- "rke2-cluster-master03"
cni: calico
kube-proxy-arg:
- "proxy-mode=ipvs"
disable:
- rke2-ingress-nginx
kube-proxy-arg:
- "proxy-mode=ipvs"
disable-cloud-controller: true
selinux: false
debug: false
data-dir: /home/rancher/rke2
节点3
# server: https://192.168.141.200:9345
# token: K10ebeff7636753f2d8ac49baf35dfaebd5ab8457d42b3cd6b872b9f18aaa1ef8fb::server:484958b563294842f8625b2c5adc06a7 or `cat /var/lib/rancher/rke2/server/token`
server: https://192.168.141.200:9345
token: K10ebeff7636753f2d8ac49baf35dfaebd5ab8457d42b3cd6b872b9f18aaa1ef8fb::server:484958b563294842f8625b2c5adc06a7
write-kubeconfig-mode: "0644"
cluster-cidr: "192.168.60.0/24"
service-cidr: "192.168.61.0/24"
service-node-port-range: 30000-32767
tls-san:
- "127.0.0.1"
- "192.168.141.200"
- "192.168.141.201"
- "192.168.141.202"
- "rke2-cluster-master01"
- "rke2-cluster-master02"
- "rke2-cluster-master03"
cni: calico
kube-proxy-arg:
- "proxy-mode=ipvs"
disable:
- rke2-ingress-nginx
kube-proxy-arg:
- "proxy-mode=ipvs"
disable-cloud-controller: true
selinux: false
debug: false
data-dir: /home/rancher/rke2
添加好配置文件,在两个节点上启动rke2-server服务
systemctl daemon-reload
systemctl start rke2-server
systemctl enable rke2-server
systemctl status rke2-server -l
确定两个节点启动完毕后,切换到节点1,执行如下命令确认所有节点都加到了集群中。
mkdir ~/.kube/
# /etc/rancher/rke2/rke2.yaml这个配置文件相当于集群的钥匙,管理整个集群
cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
chmod 600 ~/.kube/config
kubectl get nodes -o wide
kubectl get cs
kubectl get pods -A -o wide
配置直接使用相关命令,在三个节点中执行
# path设置
vi /etc/profile
export PATH=$PATH:/home/rancher/rke2/bin
source /etc/profile
kubectl常用命令
# 查看集群节点信息
kubectl get nodes -o wide
# 查看集群组件健康状态
kubectl get cs
# 查看pods
kubectl get pods -A -o wide
# 查看服务
kubectl get svc -A -o wide
containerd设置
ln -s /home/rancher/rke2/agent/etc/crictl.yaml /etc/crictl.yaml
设置后就不需要使用–runtime-endpoint参数来查看容器情况了
2.4 crictl常用命令
crictl --help
crictl info
crictl ps
crictl images ls
更多推荐
所有评论(0)