1. 环境准备 (所有节点)
1.1 关闭防火墙与 SELinux
1 2 3 4 5 6 7
| systemctl stop firewalld systemctl disable firewalld
setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
|
1.2 关闭 Swap (必须)
1 2
| swapoff -a sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
|
1.3 允许 iptables 检查桥接流量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
sudo modprobe overlay sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
sudo sysctl --system
|
2. 安装容器运行时 (所有节点)
推荐使用 containerd。
2.1 安装 containerd
1 2 3 4 5
| apt-get update && apt-get install -y containerd
|
2.2 配置 Cgroup 驱动
Kubernetes 推荐使用 systemd。
1 2 3 4 5
| mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml systemctl restart containerd
|
3. 安装 K8s 核心工具 (所有节点)
3.1 添加安装源 (以 Ubuntu 为例)
1 2 3
| apt-get update && apt-get install -y apt-transport-https ca-certificates curl gpg curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
|
3.2 执行安装
1 2 3 4
| apt-get update apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
|
4. 初始化集群 (仅 Master 节点)
4.1 初始化命令
1 2 3 4 5
| kubeadm init \ --apiserver-advertise-address=192.168.1.10 \ --image-repository registry.aliyuncs.com/google_containers \ --pod-network-cidr=192.168.0.0/16
|
注:--image-repository 指定阿里云镜像源可解决国内下载镜像难的问题。
4.2 配置 kubectl
1 2 3
| mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
|
5. 安装网络插件 (仅 Master 节点)
选择安装 Calico:
1
| kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
|
6. 加入工作节点 (仅 Worker 节点)
在所有 Worker 节点上执行 kubeadm init 最后生成的 join 命令:
1 2
| kubeadm join 192.168.1.10:6443 --token <TOKEN> \ --discovery-token-ca-cert-hash sha256:<HASH>
|
7. 验证安装
在 Master 节点执行:
1 2 3 4
| kubectl get nodes
kubectl get pods -n kube-system
|