温馨提示×

k8s在centos上的容器编排技巧有哪些

小樊
38
2025-12-31 11:32:37
栏目: 智能运维

适用于 CentOS 的 Kubernetes 容器编排技巧

一 基础环境与内核优化

  • 关闭或放宽安全策略:临时关闭 SELinux(setenforce 0),生产可改为 permissive;关闭 firewalld 或按需精确放行端口;禁用 Swap(swapoff -a 并注释 /etc/fstab),否则 kubelet 可能拒绝启动或性能受影响。
  • 主机与内核网络:配置 /etc/hosts 保证节点互解析;启用桥接与转发:加载 br_netfilter,设置 net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1sysctl --system 生效。
  • 容器运行时与 cgroup:优先选择 Containerd(轻量、符合 CRI);安装后生成默认配置并将 SystemdCgroup = true,与 kubelet 的 cgroup 驱动保持一致,避免 “cgroup driver mismatch”。
  • 镜像与版本:国内环境为加速拉取核心镜像,可在 kubeadm init 时使用 –image-repository registry.aliyuncs.com/google_containers;选择与运行时匹配的 Kubernetes 版本,避免组件不兼容。

二 集群初始化与工作节点加入

  • 安装组件:在所有节点安装 kubeadm、kubelet、kubectlsystemctl enable --now kubelet,保持 kubelet 持续运行直至集群就绪。
  • 初始化控制平面:在 Master 执行 kubeadm init,指定 –apiserver-advertise-address–pod-network-cidr(如 10.244.0.0/16 对应 Flannel,或 192.168.0.0/16 常见用于 Calico),必要时使用 –image-repository 指定国内镜像源。
  • 配置 kubectl:拷贝 /etc/kubernetes/admin.conf$HOME/.kube/config 并修正权限。
  • 安装 CNI 网络插件:如 Flannelkubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml)或 Calico(按官方清单安装),确保与 –pod-network-cidr 一致。
  • 加入工作节点:使用 kubeadm join ... 命令;若 token 过期,在主节点执行 kubeadm token create --print-join-command 重新生成。

三 高可用与控制平面负载均衡

  • 架构要点:为 kube-apiserver 前置 负载均衡器(VIP + Keepalived 或 HAProxy),实现 API 入口高可用;多 Master 场景下 kube-controller-managerkube-scheduler 自带选主机制。
  • 方案示例:两台 Master 部署 HAProxy + Keepalived,对外暴露 VIP:6443;HAProxy 四层转发至各 Master 的 6443,Keepalived 提供 VRRP 故障漂移。
  • kubeadm 方式:也可采用 –control-plane-endpoint <LOAD_BALANCER_DNS:PORT>–upload-certs 的方式引导多控制面集群,再由工作节点 kubeadm join 加入。

四 工作负载编排与调度优化

  • 资源与副本:为 Pod 设置 requests/limits,避免资源争用;通过 Deployment 管理副本与滚动更新。
  • 调度策略:使用 nodeSelector / nodeAffinity / podAffinity / podAntiAffinity 控制 Pod 分布,提升可用性与性能;例如对无状态服务设置 podAntiAffinity 打散到不同节点。
  • 有状态与守护:有状态应用用 StatefulSet(稳定网络标识与有序部署/扩缩容),节点级守护用 DaemonSet(如日志、监控、网络插件)。
  • 配置与密钥:用 ConfigMap 管理配置、Secret 管理敏感信息,与镜像解耦,便于环境差异化与安全管理。

五 镜像、存储、监控与日常运维

  • 镜像与运行时:优先选择 轻量基础镜像(如 Alpine) 减小攻击面与传输耗时;在 CentOS 8+ 默认 cgroups v2 环境下,确保 kubelet/容器运行时 兼容配置。
  • 持久化存储:结合 PV/PVCStorageClass 对接本地盘、NFS、Ceph 等,为数据库等有状态服务提供稳定存储。
  • 可观测性:部署 Prometheus + Grafana 监控集群与应用指标,使用 ELK/EFK 集中收集与分析日志。
  • 维护与升级:定期 升级 Kubernetes 与节点组件回滚失败的 Deployment轮换证书、审计安全事件与资源配额;生产环境建议启用 RBACPod SecurityNetworkPolicy 强化安全边界。

0