温馨提示×

怎样优化Ubuntu上的Kubernetes安装

小樊
42
2025-11-30 20:38:00
栏目: 智能运维

Ubuntu 上 Kubernetes 安装优化清单

一 基础系统优化

  • 关闭 Swap:执行 sudo swapoff -a,并在 /etc/fstab 中注释所有 swap 条目,避免 kubelet 因 Swap 导致不稳定或被驱逐。
  • 加载内核模块:启用容器与桥接所需模块,创建 /etc/modules-load.d/k8s.conf 写入 overlaybr_netfilter,执行 sudo modprobe overlay && sudo modprobe br_netfilter
  • 开启桥接流量到 iptables:创建 /etc/sysctl.d/k8s.conf,设置 net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1,执行 sudo sysctl --system
  • 可选的系统级调优:如文件描述符限制、关闭透明大页(THP)、时间同步(chrony/ntp),以降低抖动与提升稳定性。
  • 容器运行时与驱动:如使用 Docker,建议将 cgroup 驱动设为 systemd,编辑 /etc/docker/daemon.json 增加 "exec-opts": ["native.cgroupdriver=systemd"] 并重启 Docker。
  • 组件版本一致与锁定:安装指定版本的 kubeadm/kubelet/kubectl,完成后执行 sudo apt-mark hold kubelet kubeadm kubectl 防止意外升级。
  • 网络规划:提前规划 Pod CIDR 与 Service CIDR,避免与宿主机网段冲突。

二 网络与 kube-proxy 优化

  • 容器网络接口(CNI)选择:生产环境优先 Calico(或 Cilium),在大规模集群中性能与可观测性更佳。
  • 服务代理模式:将 kube-proxy 切换为 IPVS 模式以提升大规模 Service 规则增删与转发性能;按需配置会话保持与调度算法。
  • 内核网络参数:在高并发场景可适当增大 net.core.rmem_maxnet.core.wmem_maxnet.ipv4.tcp_max_syn_backlog 等,以降低时延与丢包。
  • 安全组与防火墙:仅在节点间放行 Kubernetes 必需端口(如 6443/10250/10251/10252/2379-2380/8472(UDP,VXLAN) 等),避免过度放开。

三 控制平面与 kubelet 关键参数

  • 高可用与控制面组件:为 kube-apiserver/kube-controller-manager/kube-scheduler 启用 leader election,并适度提升与 API Server 的 QPS/Burst(如 --kube-api-qps=100 --kube-api-burst=150),增强吞吐与稳定性。
  • Pod 密度与系统预留:结合节点资源合理设置 kubelet 的 –max-pods,并通过 kubelet 参数或 kube-reserved/eviction 阈值进行系统预留,避免节点资源被系统组件挤占。
  • 镜像与拉取策略:为系统组件与业务镜像配置 镜像仓库镜像加速 与合理的 imagePullPolicy,缩短启动时间并降低外网依赖。
  • 节点污点与容忍:对控制面节点设置污点(如 node-role.kubernetes.io/control-plane:NoSchedule),仅允许系统组件调度,保障控制面稳定。

四 存储与文件系统优化

  • 存储后端:优先使用 SSD/NVMe 或高性能云盘,为数据库、消息队列等对 IOPS/时延敏感的工作负载配置高性能 StorageClass
  • 卷参数:为数据库等场景选择 ReadWriteOnce 并结合 预分配/加密/快照 策略;日志与可重建数据可用 ReadWriteMany 或对象存储。
  • 文件系统与内核:根据负载适当调优 vm.max_map_count(如 262144 或更高)、fs.inotify.max_user_watches 等,避免应用因内核限制报错。
  • 拓扑与亲和:对有本地盘或低时延诉求的工作负载,使用 节点亲和/污点 将 Pod 固定在具备相应存储能力的节点上。

五 验证与持续运维

  • 基线检查:确认节点 Ready、系统 Pod 全部 Running;验证 Pod 间网络Service 访问DNS 解析 正常。
  • 观测与告警:部署 Prometheus + Grafana 监控节点资源、网络、API Server 延迟、etcd 健康等;为关键指标(如节点 NotReady、Pod CrashLoopBackOff)配置告警。
  • 弹性与自愈:为无状态服务配置 HPA,为有状态服务配置 PDB 与合理的 PodDisruptionBudget/Liveness/Readiness;定期演练节点维护与滚动升级。
  • 升级与回滚:遵循“先控制面后工作节点”的 滚动升级 策略,保留回滚路径;变更前在测试环境验证。

0