在Linux系统上部署Kubernetes(K8S)可以通过多种方式实现,以下是基于 kubeadm(官方推荐工具)的标准化部署流程,适用于生产环境或学习环境:
sudo swapoff -a
并注释 /etc/fstab
中的swap行hostnamectl
检查)# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter
# 设置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
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
# 安装依赖
sudo apt-get update
sudo apt-get install -y containerd
# 生成默认配置
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# 修改配置启用SystemdCgroup
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
# 重启服务
sudo systemctl restart containerd
sudo systemctl enable containerd
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
# 添加GPG密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 添加APT源
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 禁止自动更新
<pod-network-cidr>
为你的网络CIDR)sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=<Master节点IP> \
--cri-socket=unix:///var/run/containerd/containerd.sock
kubeadm join
命令(用于Worker节点加入)mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
验证:
kubectl get pods -n kube-system # 等待所有Pod状态为Running
在Worker节点上执行Master初始化时输出的 kubeadm join
命令:
sudo kubeadm join <Master-IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
kubectl get nodes # 所有节点状态应为Ready
kubectl get pods -A # 检查核心组件运行状态
kubeadm init 卡住:
sudo systemctl status containerd
)Node处于NotReady状态:
kubectl logs -n kube-system <calico-pod>
)重置集群:
sudo kubeadm reset
sudo rm -rf /etc/cni/net.d ~/.kube
kubeadm config images pull
预下载镜像通过以上步骤,一个基础的Kubernetes集群即部署完成。建议参考 官方文档 根据实际需求调整配置。