温馨提示×

如何优化Debian K8s部署

小樊
46
2026-07-18 00:42:33
栏目: 智能运维

下面从系统层、K8s 层、网络/存储、运维与性能几个维度,系统性地讲一下 如何优化 Debian 上的 Kubernetes 部署。内容适用于 kubeadm / 二进制 / Rancher / k3s 等常见部署方式。


一、系统层优化(Debian 基础)

1. 内核与系统参数

✅ 开启内核模块

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
modprobe br_netfilter
modprobe overlay

✅ sysctl 优化

cat <<EOF | sudo tee /etc/sysctl.d/99-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1

vm.swappiness = 0
vm.overcommit_memory = 1
fs.inotify.max_user_watches = 524288
fs.file-max = 2097152

net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 8192
EOF
sysctl --system

2. 禁用 swap(非常重要)

swapoff -a
sed -i '/swap/d' /etc/fstab

3. 使用 systemd 作为 cgroup 驱动(推荐)

containerd 示例

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true

kubelet 也要一致:

--cgroup-driver=systemd

二、Kubernetes 本身优化

1. kubelet 参数优化

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd \
--kube-reserved=cpu=500m,memory=512Mi \
--system-reserved=cpu=500m,memory=512Mi \
--eviction-hard=memory.available<200Mi,nodefs.available<10%"

编辑:

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

2. 资源预留(防止节点 OOM)

--kube-reserved=cpu=500m,memory=512Mi
--system-reserved=cpu=500m,memory=512Mi

3. 选择合适的 CNI 插件

场景 推荐
性能优先 Cilium
简单稳定 Calico
轻量 Flannel
云原生 Cilium + eBPF

Cilium 在 Debian + 新内核下性能最好


三、网络优化

1. 内核网络参数

net.core.netdev_max_backlog = 32768
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

2. DNS 优化(非常重要)

dnsPolicy: ClusterFirstWithHostNet

或:

  • 使用 CoreDNS 多副本
  • 限制 ndots(避免 DNS 风暴)
spec:
  dnsConfig:
    options:
      - name: ndots
        value: "2"

四、存储优化

1. 使用本地 SSD / NVMe

lsblk -o NAME,ROTA

ROTA=0 为 SSD


2. 存储选型建议

场景 推荐
数据库 Local PV + SSD
通用 Ceph / Longhorn
轻量 hostPath(仅测试)

五、性能与调度优化

1. CPU / NUMA 优化

apt install numactl

Pod 使用:

resources:
  requests:
    cpu: "2"
  limits:
    cpu: "2"

2. 使用 Topology Manager(高级)

--topology-manager-policy=single-numa-node

六、安全与稳定性优化

1. 启用防火墙(推荐 nftables)

apt install nftables

2. 定期升级

apt update && apt upgrade -y

3. 启用审计日志

--audit-log-path=/var/log/k8s-audit.log

七、运维与监控

1. 必备组件

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

2. 日志

  • Loki + Promtail
  • journald 调优

八、常见坑(Debian 特有)

问题 解决
iptables 模式冲突 用 nftables 或 legacy
systemd 版本低 Debian 11+
内核太旧 升级到 5.15+
containerd 版本低 官方 repo

九、推荐 Debian 版本

Debian 11 (Bullseye) 或 12 (Bookworm)
❌ 不推荐 Debian 10 以下


十、快速检查清单 ✅

  • [ ] swap 关闭
  • [ ] systemd cgroup
  • [ ] 内核参数优化
  • [ ] CNI 合理选择
  • [ ] kubelet 资源预留
  • [ ] DNS 优化
  • [ ] 存储类型匹配业务

如果你愿意,我可以:

  • ✅ 给你一份 Debian + kubeadm 生产级部署模板
  • ✅ 针对 高并发 / AI / 数据库 / 边缘 场景定制优化
  • ✅ 帮你排查 当前集群慢 / OOM / DNS 问题

只要告诉我你的 K8s 版本 + 节点规模 + 业务类型 即可。

0