0aa8fe6
这次没有正文改动。
这是 cloud/kubeadm 安装 K8s 集群.md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
0aa8fe6
这次没有正文改动。
e4d2cd0
@@ -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-`。 +- 节点时间不同步,证书校验和日志时间都会乱。