Oamc

kubeadm 安装 K8s 集群 · 修改记录

这是 cloud/k8s-install.md 的每次改动内容,按时间从新到旧。其他文章一起提交的部分不会出现在这里。

#1 2026-10-18 +101 −0 docs: 新增存储/中间件/自动化/云与K8s/证书/流程 6 个分类和 16 篇文章 e4d2cd0
 new file mode 100644
 @@ -0,0 +1,101 @@
+---
+tags: [Kubernetes, kubeadm, 容器编排]
+order: 20
+---
+
+# kubeadm 安装 K8s 集群
+
+## 场景
+
+内网要跑一套 K8s,用 kubeadm 搭一个一主两从的集群。
+
+## 前置条件
+
+- 3 台 Linux(2C4G 起),主机名能互相解析
+- 关闭 swap
+- 时间同步
+- 能访问镜像源(或提前 import 镜像)
+
+## 配置
+
+所有节点:
+
+```bash
+swapoff -a
+sed -i '/swap/s/^/#/' /etc/fstab
+
+cat >/etc/modules-load.d/k8s.conf <<'EOF'
+overlay
+br_netfilter
+EOF
+modprobe overlay && modprobe br_netfilter
+
+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
+
+# 装容器运行时
+dnf install -y containerd
+containerd config default > /etc/containerd/config.toml
+sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
+systemctl enable --now containerd
+
+# 装 kubeadm / kubelet / kubectl
+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
+dnf install -y kubelet kubeadm kubectl
+systemctl enable --now kubelet
+```
+
+主节点:
+
+```bash
+kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
+
+mkdir -p $HOME/.kube
+cp /etc/kubernetes/admin.conf $HOME/.kube/config
+chown $(id -u):$(id -g) $HOME/.kube/config
+
+# 装 CNI
+kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
+```
+
+从节点加入:
+
+```bash
+kubeadm join 10.0.0.11:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
+```
+
+## 验证
+
+```bash
+kubectl get nodes
+kubectl get pods -A
+kubectl cluster-info
+```
+
+三个节点都 `Ready`,`kube-system` 全 `Running` 才算好。
+
+## 回滚
+
+```bash
+kubeadm reset -f
+rm -rf /etc/cni/net.d /var/lib/cni /root/.kube
+```
+
+## 坑
+
+- **swap 没关**,kubelet 起不来。
+- 主机名不一致或者解析不到,join 会失败。
+- 镜像拉不到,`kubeadm init` 卡在 `PullImage`。
+- CNI 没装,节点一直是 `NotReady`。
+- 只有主节点时 Pod 起不来,要 `kubectl taint nodes --all node-role.kubernetes.io/control-plane-`。
+- 节点时间不同步,证书校验和日志时间都会乱。