拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Rocky Linux部署高可用Kubernetes集群实战指南

1. 项目概述在当今云原生技术蓬勃发展的背景下Kubernetes已成为容器编排领域的事实标准。而Rocky Linux作为RHEL的替代品凭借其稳定性和兼容性正逐渐成为企业级部署的首选操作系统。本文将详细记录在Rocky Linux系统上部署多Master高可用Kubernetes集群的全过程涵盖从环境准备到最终验证的每个关键环节。2. 环境准备与系统配置2.1 硬件与网络规划对于生产环境的高可用Kubernetes集群建议至少配置3个Master节点和若干Worker节点。每个Master节点应满足4核CPU或以上8GB内存或以上40GB磁盘空间千兆网络连接网络规划需要考虑节点间通信网络建议10GbpsPod网络CIDR如10.244.0.0/16Service网络CIDR如10.96.0.0/122.2 Rocky Linux基础配置在所有节点上执行以下基础配置# 设置主机名 hostnamectl set-hostname master1 # 配置静态IP nmcli con mod ens192 ipv4.addresses 192.168.1.101/24 nmcli con mod ens192 ipv4.gateway 192.168.1.1 nmcli con mod ens192 ipv4.dns 8.8.8.8 nmcli con mod ens192 ipv4.method manual nmcli con up ens192 # 关闭SELinux setenforce 0 sed -i s/^SELINUXenforcing$/SELINUXpermissive/ /etc/selinux/config # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 配置时间同步 yum install chrony -y systemctl enable chronyd systemctl start chronyd3. 容器运行时与Kubernetes组件安装3.1 安装Docker容器运行时# 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加Docker仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker yum install -y docker-ce docker-ce-cli containerd.io # 配置Docker mkdir /etc/docker cat /etc/docker/daemon.json EOF { exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOF # 启动Docker systemctl enable docker systemctl start docker3.2 安装Kubernetes组件# 添加Kubernetes仓库 cat EOF /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttps://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled1 gpgcheck1 repo_gpgcheck1 gpgkeyhttps://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF # 安装kubeadm, kubelet和kubectl yum install -y kubelet kubeadm kubectl --disableexcludeskubernetes # 设置kubelet开机启动 systemctl enable kubelet4. 高可用集群部署4.1 初始化第一个Master节点kubeadm init --control-plane-endpoint LOAD_BALANCER_DNS:LOAD_BALANCER_PORT \ --upload-certs \ --pod-network-cidr10.244.0.0/16 \ --service-cidr10.96.0.0/12初始化完成后按照输出提示配置kubectlmkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config4.2 加入其他Master节点在其他Master节点上执行以下命令加入集群kubeadm join LOAD_BALANCER_DNS:LOAD_BALANCER_PORT \ --token token \ --discovery-token-ca-cert-hash sha256:hash \ --control-plane \ --certificate-key key4.3 部署网络插件这里选择Calico作为网络插件kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml5. 高可用配置与验证5.1 配置负载均衡器在生产环境中建议使用专业的负载均衡器如HAProxy或Nginx来分发Master节点的API Server流量。以下是HAProxy的示例配置frontend kubernetes bind *:6443 option tcplog mode tcp default_backend kubernetes-master-nodes backend kubernetes-master-nodes mode tcp balance roundrobin option tcp-check server master1 192.168.1.101:6443 check fall 3 rise 2 server master2 192.168.1.102:6443 check fall 3 rise 2 server master3 192.168.1.103:6443 check fall 3 rise 25.2 验证集群状态# 查看节点状态 kubectl get nodes # 查看组件状态 kubectl get componentstatuses # 查看Pod状态 kubectl get pods --all-namespaces6. 生产环境优化与维护6.1 证书管理Kubernetes集群默认证书有效期为1年建议定期检查并更新# 检查证书有效期 kubeadm certs check-expiration # 更新证书 kubeadm certs renew all6.2 备份与恢复定期备份etcd数据至关重要# 备份etcd ETCDCTL_API3 etcdctl \ --endpointshttps://127.0.0.1:2379 \ --cacert/etc/kubernetes/pki/etcd/ca.crt \ --cert/etc/kubernetes/pki/etcd/server.crt \ --key/etc/kubernetes/pki/etcd/server.key \ snapshot save /opt/etcd-backup.db # 恢复etcd ETCDCTL_API3 etcdctl snapshot restore /opt/etcd-backup.db \ --data-dir /var/lib/etcd-backup7. 常见问题排查7.1 节点NotReady状态可能原因及解决方案网络插件未正确安装 - 重新部署网络插件kubelet服务未运行 -systemctl restart kubelet容器运行时问题 - 检查Docker/containerd日志7.2 API Server不可用检查步骤验证负载均衡器是否健康检查Master节点kube-apiserver Pod状态查看kube-apiserver日志journalctl -u kubelet -n 1007.3 etcd集群健康检查ETCDCTL_API3 etcdctl \ --endpointshttps://127.0.0.1:2379 \ --cacert/etc/kubernetes/pki/etcd/ca.crt \ --cert/etc/kubernetes/pki/etcd/server.crt \ --key/etc/kubernetes/pki/etcd/server.key \ endpoint health8. 性能优化建议调整kubelet参数--max-pods100 --kube-api-qps50 --kube-api-burst100优化etcd性能使用SSD存储分离etcd数据目录和wal目录定期压缩历史数据配置合理的资源请求和限制resources: requests: cpu: 500m memory: 512Mi limits: cpu: 1000m memory: 1Gi在实际部署过程中我发现Rocky Linux作为Kubernetes的宿主操作系统表现非常稳定特别是在长时间运行的场景下。对于生产环境建议在部署前充分测试网络性能和存储IO这往往是集群性能的瓶颈所在。另外定期维护和监控是保证集群长期稳定运行的关键。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门