在 CentOS 上部署 Kubernetes(k8s),有几个关键点和“坑”需要特别注意。下面按系统准备 → 安装 → 网络/存储 → 运维安全来梳理。
uname -a
systemctl stop firewalld
systemctl disable firewalld
生产环境建议用
iptables/firewalld规则,而不是直接关
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
swapoff -a
sed -i '/swap/d' /etc/fstab
kubelet 默认不允许 swap
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
EOF
sysctl --system
加载模块:
modprobe br_netfilter
| 运行时 | 说明 |
|---|---|
| containerd | ✅ 官方推荐 |
| docker | ❌ 已不再直接支持(需 dockershim) |
yum install -y containerd
systemctl enable --now containerd
修改:
# /etc/containerd/config.toml
SystemdCgroup = true
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubelet / kubeadm / kubectl 版本必须一致
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers
⚠ 常见坑:
--pod-network-cidr 必须与 CNI 匹配| CNI | 适合 |
|---|---|
| Flannel | 简单、稳定 |
| Calico | 安全、性能 |
| Cilium | eBPF、高级 |
示例(Flannel):
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
kubectl taint nodes --all node-role.kubernetes.io/master-
yum install -y chrony
systemctl enable --now chronyd
| 问题 | 原因 |
|---|---|
| node NotReady | CNI 未装 |
| kubelet 起不来 | swap / SELinux |
| 镜像拉不到 | 源未配置 |
| DNS 失败 | CoreDNS / 防火墙 |
如果你愿意,我可以:
你现在是 学习 / 测试 / 生产?