温馨提示×

k8s在centos上的扩展策略

小樊
43
2025-12-25 15:16:40
栏目: 智能运维

Kubernetes 在 CentOS 上的扩展策略

一、扩展总览与选型

  • 扩展通常分为两个层面:
    • 集群层扩展:增加节点(Node)以提升集群可调度资源总量,适合容量吃紧或需要更高可用性的场景。
    • 应用层扩展:在现有节点上增减 Pod 副本或调整单实例资源,适合应对业务负载波动与性能瓶颈。
  • 策略选型建议:
    • 优先采用水平扩展(增减 Pod 数量),弹性好、落地简单、对应用侵入低。
    • 当单实例存在明显瓶颈或资源长期低估时,配合垂直扩展(调整 CPU/内存)与集群层扩展共同使用。
    • 生产环境建议同时配置资源请求/限制PodDisruptionBudget(PDB)反亲和/污点容忍,保障扩缩过程稳定性与可用性。

二、集群层扩展 增加节点(基于 kubeadm 的 CentOS 节点)

  • 前置准备(所有节点)
    • 基础网络与主机标识:统一网段、可互通;设置唯一主机名/etc/hosts 映射;时间同步(如 chrony/ntp)。
    • 内核与模块:加载 overlay、br_netfilter;开启桥接流量进入 iptables 与 ip_forward
    • 安全与资源:按需在测试环境临时关闭 firewalld/SELinuxswap(生产环境以最小暴露面与合规策略为准)。
    • 容器运行时:安装并启用 Docker/Containerd;配置 systemd cgroup 驱动与镜像加速;确保与集群版本匹配。
  • 加入集群
    • 在控制平面生成加入命令(一次性或定期轮换):
      • kubeadm token create --print-join-command
    • 在新节点执行输出的 kubeadm join … 命令,完成后在控制平面验证:
      • kubectl get nodes
  • 网络与验证
    • 如尚未部署网络插件(如 Calico),在控制平面应用对应清单,确保节点间与 Pod 间网络连通。
    • 检查新节点 Ready 状态、系统 Pod 就绪与网络插件 Pod 运行正常。

三、应用层扩展 水平与垂直

  • 手动水平扩展(快速应对瞬时流量)
    • 对 Deployment/StatefulSet 调整副本数:
      • kubectl scale deployment my-app --replicas=5
  • 自动水平扩展(HPA,基于指标驱动)
    • 前置:部署 Metrics Server,为 HPA 提供指标数据。
    • 示例(CPU 利用率目标 50%,副本范围 1–10):
      • apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: my-app-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app minReplicas: 1 maxReplicas: 10 metrics:
        • type: Resource resource: name: cpu targetAverageUtilization: 50
    • 建议为扩缩对象配置 resources.requests/limitsPDB,避免抖动与可用性受损。
  • 垂直扩展(VPA,调整单实例资源)
    • 组件安装:部署 VerticalPodAutoscaler(CRD、Admission Controller、Recommender、Updater)。
    • 示例(推荐模式,仅给出建议;生产可改为 Auto 并配合滚动更新策略):
      • apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: my-app-vpa namespace: default spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app updatePolicy: updateMode: “Recommend” resourcePolicy: containerPolicies: - containerName: ‘*’ minAllowed: cpu: 10m memory: 2Mi maxAllowed: cpu: 100m memory: 100Mi controlledResources: [“cpu”, “memory”]
    • 使用要点:VPA 可能触发 Pod 重启;与 HPA 配合时,通常让 VPA 管理 requests,HPA 基于 requests 做副本扩缩,避免指标冲突。

四、CentOS 系统级优化与稳定性保障

  • 内核与网络
    • 提升网络与连接跟踪能力:net.core.rmem_max、net.core.wmem_max、net.ipv4.tcp_max_syn_backlog、net.ipv4.tcp_max_tw_buckets、net.ipv4.ip_forward=1。
    • 文件系统与事件:fs.inotify.max_user_instances、fs.inotify.max_user_watches、fs.aio-max-nr。
  • kubelet / kube-proxy / etcd / API Server
    • kubelet:合理设置 –max-pods–cgroup-driver=systemd;按需开启 拓扑管理器CPU 管理器(静态策略)提升性能隔离。
    • kube-proxy:高并发场景优先 ipvs 模式,并优化 conntrack 相关参数。
    • etcd:提高 –heartbeat-interval–election-timeout 的容忍度(视网络延迟而定),合理规划副本数。
    • API Server:提升 –max-requests-inflight–max-mutating-requests-inflight 以支撑更高并发。
  • 存储与节点资源
    • 优先 SSD/NVMe 与高性能网络(如 10Gbps+);为时延敏感型应用配置合适的 StorageClass 与本地卷/分布式存储。
  • 监控与可观测性
    • 部署 Prometheus + Grafana 监控节点与组件指标,使用 ELK/Fluentd 或等效方案聚合日志,支撑扩缩容决策与容量规划。

0