温馨提示×

如何优化Debian的K8s部署

小樊
44
2026-09-17 11:23:53
栏目: 智能运维

优化 Debian 上的 Kubernetes(K8s)部署可以从系统层、K8s 组件层、网络与存储、运维与监控几个维度入手。下面按实战经验给你一个较完整的优化清单。


一、Debian 系统层优化

1. 内核与系统参数

# 常见 K8s 推荐参数
cat >> /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
fs.file-max=2097152
EOF

sysctl --system

2. 关闭 Swap

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

3. 使用 systemd 作为 cgroup 驱动

Docker / containerd 与 kubelet 必须一致:

# containerd 示例
[plugins."io.containerd.grpc.v1.cri"]
  systemd_cgroup = true

4. 时间同步

apt install -y chrony
systemctl enable --now chrony

二、容器运行时优化(containerd 推荐)

1. 使用 containerd 而非 Docker

  • 更轻量
  • 与 K8s 兼容性更好
apt install -y containerd
containerd config default > /etc/containerd/config.toml

2. 镜像加速

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  "docker.io" = ["https://registry.aliyuncs.com"]

三、Kubernetes 部署优化

1. 使用 kubeadm 最佳实践

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --control-plane-endpoint=LOAD_BALANCER_IP

2. 高可用架构

  • 多 control-plane(3 节点)
  • 使用 HAProxy + Keepalived 或云 LB

3. 资源预留(非常重要)

# kubelet 配置
--kube-reserved=cpu=500m,memory=1Gi
--system-reserved=cpu=500m,memory=1Gi
--eviction-hard=memory.available<500Mi

四、网络优化

1. CNI 选择

  • Calico:性能好、策略强
  • Cilium:eBPF,性能最佳(推荐新集群)
kubectl apply -f https://docs.cilium.io/en/stable/quickinstall/

2. 避免 iptables 性能问题

  • 大规模集群使用 iptables=nft 或 Cilium eBPF

五、存储优化

1. 使用本地盘或 SSD

  • PV 使用 local-volume 或 Ceph/Rook

2. 设置 StorageClass 默认

kubectl patch storageclass xxx -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

六、资源与调度优化

1. 设置 requests / limits

避免“吵闹邻居”:

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 256Mi

2. 使用拓扑与亲和性

  • nodeAffinity
  • podAntiAffinity(高可用)

七、监控与运维

1. 核心组件

  • Prometheus + Grafana
  • kube-state-metrics
  • node-exporter

2. 日志

  • Loki / EFK

3. 自动伸缩

  • HPA
  • Cluster Autoscaler(云环境)

八、安全与稳定性

  • 开启 RBAC
  • 使用 NetworkPolicy
  • 定期升级 Debian & K8s
  • 禁用 root SSH 登录

九、典型优化前后对比(示例)

项目 优化前 优化后
Pod 启动 5–10s 1–3s
节点负载 明显下降
网络延迟 降低 30%+
OOM 次数 极少

如果你愿意,我可以:

  • 给你一套 Debian + containerd + Cilium 的完整部署脚本
  • 或针对 单节点 / 生产集群 / 边缘场景 分别给方案

你目前是 学习环境、测试集群,还是生产环境

0