Linux 上部署与运行 Kubernetes 的最佳实践
一 基础环境与系统配置
swapoff -a;永久:注释 /etc/fstab 中 swap 行)。/etc/selinux/config 为 SELINUX=disabled(生产请结合安全策略评估)。net.ipv4.ip_forward=1、net.bridge.bridge-nf-call-iptables=1、net.bridge.bridge-nf-call-ip6tables=1。fs.file-max、fs.inotify.max_user_instances、fs.inotify.max_user_watches 等。systemd)。二 集群搭建与网络选型
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.32.1。kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.32.1 --pod-network-cidr=10.244.0.0/16(CIDR 需与网络插件匹配)。kubeadm join 命令加入集群。kubectl get nodes、kubectl get pods -A 检查节点与系统 Pod 状态。三 性能与安全加固
net.core.somaxconn、net.core.rmem_max、net.core.wmem_max、net.ipv4.tcp_max_syn_backlog、net.ipv4.tcp_max_tw_buckets。net.netfilter.nf_conntrack_max 与 net.netfilter.nf_conntrack_tcp_timeout_established 结合业务调优。vm.max_map_count(如 Elasticsearch/MongoDB 受益)、fs.inotify 系列。max-size=100m。四 存储 调度 与可观测性
五 生产落地清单
| 领域 | 关键动作 | 建议值或工具 |
|---|---|---|
| 操作系统 | 基线加固、内核网络与文件句柄 | vm.max_map_count=262144、fs.file-max=1000000、net.core.somaxconn=4096 |
| 容器运行时 | 使用 containerd、启用 systemd cgroup | systemd cgroup 驱动、日志 max-size=100m |
| 网络 | 选择 CNI、规划 Pod/Service CIDR | Flannel(10.244.0.0/16)、Calico(192.168.0.0/16)、Cilium(eBPF) |
| 高可用 | 多 Master + 多 etcd | 3/5 节点 etcd,LB 前置 API Server |
| 调度 | 资源配额与亲和性 | ResourceQuota、Affinity/Anti-Affinity、Taints/Tolerations |
| 伸缩 | HPA 与集群扩缩 | Metrics Server、HPA(CPU/内存/自定义) |
| 可观测性 | 监控与日志 | Prometheus/Grafana、EFK/Loki |
| 升级与备份 | 版本策略与灾备 | 小版本滚动升级、定期 etcd 快照与配置备份 |