CentOS 7下Kubernetes集群部署与优化指南

发布时间:2026/10/28 3:05:35
CentOS 7下Kubernetes集群部署与优化指南 1. CentOS 7环境下Kubernetes集群部署全指南在传统运维向云原生转型的大背景下Kubernetes简称K8S已成为容器编排的事实标准。作为企业级Linux发行版的代表CentOS 7因其稳定性和长期支持特性成为部署生产级K8S集群的常见选择。本文将基于最新1.28版本详解在CentOS 7.9系统上搭建生产可用K8S集群的全流程涵盖从系统准备到网络插件配置的完整技术栈。特别提示CentOS 7已进入维护周期建议新部署环境考虑CentOS Stream或Rocky Linux等替代方案。若必须使用CentOS 7请确保系统更新至最新补丁。1.1 基础环境准备标准化的系统环境是集群稳定的前提。建议使用最小化安装的CentOS 7.9系统配置要求如下硬件规格Master节点2核CPU/4GB内存/50GB磁盘生产环境建议翻倍Worker节点根据工作负载动态扩展网络要求各节点间全互通关闭防火墙或放行6443、2379-2380等关键端口禁用SELinux临时方案setenforce 0关键初始化操作# 设置主机名解析所有节点 cat /etc/hosts EOF 192.168.1.10 k8s-master 192.168.1.11 k8s-node1 192.168.1.12 k8s-node2 EOF # 关闭swap永久生效需修改/etc/fstab swapoff -a sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab # 加载内核模块 cat /etc/modules-load.d/k8s.conf EOF br_netfilter ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack EOF modprobe -- $(cat /etc/modules-load.d/k8s.conf)1.2 容器运行时选型与配置虽然Docker仍是常见选择但K8S已逐步转向containerd作为默认运行时。两种方案的安装对比如下运行时类型安装方式关键配置适用场景Docker CEyum install docker-ce需配置cgroupdriversystemd需要docker CLI的调试环境containerd通过rpm包安装需配置systemd_cgroup true生产推荐方案containerd配置示例# 安装containerd yum install -y containerd.io mkdir -p /etc/containerd containerd config default /etc/containerd/config.toml sed -i s/SystemdCgroup false/SystemdCgroup true/ /etc/containerd/config.toml systemctl enable --now containerd1.3 Kubernetes组件安装使用官方yum源确保版本一致性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 # 安装三件套指定版本避免自动升级 yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0 systemctl enable kubelet2. 集群初始化与节点加入2.1 控制平面初始化定制化kubeadm配置是生产部署的关键步骤。创建kubeadm-config.yamlapiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration nodeRegistration: criSocket: unix:///var/run/containerd/containerd.sock kubeletExtraArgs: cgroup-driver: systemd --- apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: 1.28.0 controlPlaneEndpoint: k8s-master:6443 networking: podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 apiServer: extraArgs: advertise-address: 192.168.1.10初始化命令kubeadm init --configkubeadm-config.yaml --upload-certs | tee kubeadm-init.log成功后会输出节点加入命令形如kubeadm join k8s-master:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:xxxxxxxx \ --control-plane --certificate-key yyyyyyyy2.2 Worker节点加入在各工作节点执行上述join命令不带--control-plane参数。验证节点状态kubectl get nodes -o wide # 预期输出应显示所有节点Ready状态2.3 常见初始化问题排查cgroup驱动不一致# 检查kubelet日志 journalctl -xeu kubelet | grep cgroup # 解决方案确保docker/containerd与kubelet统一使用systemd镜像拉取失败# 手动拉取镜像适用于国内环境 kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers证书过期问题# 查看证书有效期 kubeadm certs check-expiration # 更新证书 kubeadm certs renew all3. 网络插件部署实践3.1 Flannel方案部署作为最简网络方案Flannel适合资源受限环境kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml关键配置参数Network: 需与kubeadm的podSubnet一致默认10.244.0.0/16Backend: 建议使用vxlan性能要求高可考虑host-gw3.2 Calico方案对比对于需要网络策略的生产环境Calico是更优选择kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml性能调优建议# custom-resources.yaml 片段 spec: calicoNetwork: ipPools: - cidr: 10.244.0.0/16 encapsulation: VXLAN natOutgoing: true nodeAddressAutodetectionV4: interface: eth.*3.3 网络连通性测试部署测试Pod验证跨节点通信kubectl create deployment nginx --imagenginx kubectl expose deployment nginx --port80 kubectl run testpod --imagebusybox --rm -it -- sh # 在testpod中执行 wget -qO- nginx4. 生产环境优化实践4.1 内核参数调优创建/etc/sysctl.d/k8s.confnet.ipv4.ip_forward 1 net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 fs.inotify.max_user_watches 524288 fs.file-max 2097152 vm.swappiness 0应用配置sysctl --system4.2 日志与监控方案基础监控部署# 部署metrics-server kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml # 添加启动参数解决证书问题 kubectl edit deploy -n kube-system metrics-server # 添加--kubelet-insecure-tls4.3 持久化存储配置本地存储方案示例apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer5. 版本升级与维护5.1 集群升级策略先升级kubeadmyum install -y kubeadm-1.28.1 --disableexcludeskubernetes kubeadm upgrade plan kubeadm upgrade apply v1.28.1逐个节点升级kubeletkubectl drain node --ignore-daemonsets yum install -y kubelet-1.28.1 kubectl-1.28.1 systemctl restart kubelet kubectl uncordon node5.2 日常维护命令查看集群状态kubectl get componentstatuses检查事件kubectl get events --sort-by.metadata.creationTimestamp资源使用kubectl top nodes关键经验生产环境务必保留至少一个未升级的Master节点作为回滚点建议在维护窗口期进行升级操作。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询