实战指南:在CentOS 7.9上构建高可用RKE2集群并集成Rancher 2.9.1管理平台
1. 环境准备与系统优化在CentOS 7.9上部署高可用RKE2集群前系统环境的准备就像盖房子前打地基一样重要。我遇到过不少因为基础环境没配好导致后续部署失败的案例这里把关键步骤拆解成小白也能跟上的操作流程。先说说硬件配置要求。管理节点建议至少4核CPU、8GB内存和100GB磁盘空间工作节点可以适当降低配置。网络方面需要确保所有节点在同一个局域网段互相能通过主机名和IP访问。我习惯用三台机器做最小化高可用部署两台管理节点加一台工作节点这样即使一台管理节点挂了集群还能继续运行。主机名和IP配置是第一个容易踩坑的地方。很多人在多节点部署时图省事直接用IP操作后期维护时发现k8s各种证书报错。正确的做法是每台机器都要设置唯一主机名比如hostnamectl set-hostname minio1 # 第一台执行 hostnamectl set-hostname minio2 # 第二台执行 hostnamectl set-hostname minio3 # 第三台执行接着配置静态IP避免DHCP导致的地址变化问题。编辑网卡配置文件时要注意CentOS 7.9默认使用eth0网卡vi /etc/sysconfig/network-scripts/ifcfg-eth0内容模板参考以minio1为例TYPEEthernet BOOTPROTOnone DEFROUTEyes IPADDR10.2.64.91 PREFIX24 GATEWAY10.2.64.1 DNS18.8.8.8 ONBOOTyes系统优化部分有几个重点必须做关闭防火墙和SELinuxk8s需要大量端口通信生产环境可以用更精细的规则但测试环境直接关闭更方便时间同步集群对时间敏感ntpdate和chrony双保险内核升级CentOS 7.9默认内核(3.10)对k8s支持不好建议升级到5.4以上长期支持版内核升级的具体操作使用阿里云镜像加速rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum -y install https://mirrors.aliyun.com/elrepo/elrepo-release-7.el7.elrepo.noarch.rpm yum --enablerepoelrepo-kernel install kernel-lt -y grub2-set-default 0 grub2-mkconfig -o /boot/grub2/grub.cfg reboot2. RKE2集群部署实战RKE2是Rancher开发的轻量级Kubernetes发行版相比kubeadm部署更简单内置了容器运行时、网络插件等组件。我在生产环境实测发现它的稳定性确实比原生k8s要好特别适合中小规模集群。2.1 管理节点部署第一台管理节点的部署是关键这里分享几个避坑技巧。首先创建配置文件时token建议用复杂字符串我遇到过被暴力破解的情况mkdir -p /etc/rancher/rke2/ cat /etc/rancher/rke2/config.yaml EOF token: your_secure_token_here node-name: minio1 tls-san: - 10.2.64.91 - minio1 system-default-registry: registry.cn-hangzhou.aliyuncs.com kube-proxy-arg: - proxy-modeipvs - ipvs-strict-arptrue EOF国内用户一定要设置system-default-registry参数否则拉取镜像会非常慢甚至失败。安装时使用国内镜像源加速curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | \ INSTALL_RKE2_MIRRORcn \ INSTALL_RKE2_METHODtar sh -启动服务后别急着操作等2-3分钟让组件初始化完成。检查状态的正确姿势systemctl enable --now rke2-server journalctl -u rke2-server -f # 实时查看日志2.2 高可用配置单管理节点部署太简单生产环境至少要三个管理节点。第二、第三台节点的配置要注意server参数指向第一台的IPserver: https://10.2.64.91:9345 token: your_secure_token_here # 必须与第一台相同 node-name: minio2 tls-san: 10.2.64.91加入集群后验证高可用性有个小技巧随便一个节点执行kubectl get nodes -w然后重启当前主管理节点观察kubectl连接是否自动切换到其他节点。2.3 工作节点加入工作节点要安装rke2-agent而不是serverconfig.yaml配置示例server: https://10.2.64.91:9345 token: your_secure_token_here node-name: worker1 system-default-registry: registry.cn-hangzhou.aliyuncs.com安装命令与server节点略有不同curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | \ INSTALL_RKE2_MIRRORcn \ INSTALL_RKE2_TYPEagent \ INSTALL_RKE2_METHODtar sh -3. Rancher 2.9.1集成指南Rancher是k8s的管理驾驶舱2.9.1版本对国内用户特别友好内置了很多优化。不过安装过程比RKE2复杂些需要先部署cert-manager处理证书。3.1 Helm工具准备Helm是k8s的包管理工具相当于Linux的yum。安装时注意版本兼容性wget https://mirrors.aliyun.com/helm/v3.16.1/helm-v3.16.1-linux-amd64.tar.gz tar zxvf helm-v3.16.1-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/ helm version # 验证安装3.2 cert-manager部署证书管理是Rancher安装最容易出错的环节。使用国内镜像源的完整命令helm repo add jetstack https://charts.jetstack.io --force-update helm install cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.15.0 \ --set installCRDstrue \ --set image.repositoryregistry.cn-hangzhou.aliyuncs.com/google_containers/cert-manager-controller \ --set webhook.image.repositoryregistry.cn-hangzhou.aliyuncs.com/google_containers/cert-manager-webhook \ --set cainjector.image.repositoryregistry.cn-hangzhou.aliyuncs.com/google_containers/cert-manager-cainjector验证安装成功的正确方法kubectl -n cert-manager get pods # 应该看到3个Pod运行 kubectl get crd | grep cert-manager # 应该列出多个CRD3.3 Rancher核心安装终于到主角登场了Rancher的Helm chart配置有很多可调参数这里给出生产环境验证过的配置helm repo add rancher-latest https://releases.rancher.com/server-charts/latest helm install rancher rancher-latest/rancher \ --namespace cattle-system \ --version 2.9.1 \ --create-namespace \ --set hostnamerancher.yourdomain.com \ --set replicas3 \ --set ingress.tls.sourceletsEncrypt \ --set letsEncrypt.emailyouremail.com \ --set rancherImageregistry.cn-hangzhou.aliyuncs.com/rancher/rancher \ --set systemDefaultRegistryregistry.cn-hangzhou.aliyuncs.com \ --set bootstrapPasswordAdmin123456安装完成后别急着访问先检查所有Pod状态kubectl -n cattle-system get deployments kubectl -n cattle-system get pods -o wide通常需要5-10分钟所有组件才能就绪。遇到镜像拉取失败时可以手动到节点上执行crictl pull拉取镜像。4. 集群验证与调优部署完成不是终点我见过太多人在这步翻车。分享几个必做的验证项和调优技巧。4.1 基础功能验证首先检查节点状态所有节点应该都是Readykubectl get nodes -o wide然后创建测试Deployment验证调度功能kubectl create deployment nginx --imagenginx:alpine kubectl scale deployment nginx --replicas3 kubectl get pods -o wide | grep nginx网络验证最容易被忽视跨节点Pod之间要能互相ping通kubectl run test-net --imagealpine --restartNever --rm -it -- ping 另一个Pod的IP4.2 性能调优参数RKE2默认配置比较保守生产环境建议调整kubelet参数增加镜像拉取并发数kubelet-arg: - max-concurrent-downloads10etcd调优提升大集群性能etcd-extra-args: - heartbeat-interval500 - election-timeout5000控制平面资源预留避免系统进程饿死kube-controller-manager-arg: - kube-api-burst100 - kube-api-qps504.3 日常维护技巧维护RKE2集群有些小窍门升级版本时先备份/var/lib/rancher/rke2/server/cred目录查看组件日志journalctl -u rke2-server -f重置集群/usr/local/bin/rke2-uninstall.sh添加节点时如果token丢失可以在server节点查看cat /var/lib/rancher/rke2/server/tokenRancher的管理也有讲究首次登录后立即修改admin密码定期备份Rancher的PostgreSQL数据库使用项目(Project)隔离不同团队资源开启监控和告警功能
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2523152.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!