使用 kubeadm 部署 Kubernetes 环境是一个相对标准化的过程,主要包括以下步骤:

1. 安装前的准备工作

  • 确保主机操作系统(如 CentOS、Ubuntu 或 Debian)是最新的,并且兼容 Kubernetes 版本。
  • 安装 Docker(或其他容器运行时,如 containerd)并启动服务。
  • 确保网络配置正确,尤其是主机名解析和防火墙规则(如有必要的话,开启 IP 转发)。
  • 配置 swap 空间禁用(Kubernetes 不建议在节点上启用 swap)。

2. 使用 kubeadm 初始化控制平面

# 安装 kubeadm、kubectl 和 kubelet
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl

# 设置 cgroup driver 与 Docker 一致(如果是 systemd,请确认)
sudo sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
sudo systemctl daemon-reload
sudo systemctl restart kubelet

# 初始化 Master 节点
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 # 使用适合的 CIDR 为 Pod 网络预留地址范围

# 根据提示设置 kubectl 环境变量(可将命令拷贝粘贴到终端)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 安装网络插件,例如 Calico 或 Flannel
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 以 Calico 为例

3. 加入 Worker 节点

在各个 Worker 节点上执行以下命令(替换 <MASTER_IP> 为 Master 节点的 IP 地址):

# 在 Worker 节点上安装 Kubernetes 组件
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl

# 设置 Kubelet 开始运行
sudo systemctl enable kubelet && sudo systemctl start kubelet

# 加入集群
sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash <SHA>

# (Token 和 SHA 可以从 master 节点的初始化输出中获得)

常见报错及解决方法

  • 网络问题:确保所有节点之间能够互相 ping 通,以及节点到 Master 节点的 6443 端口是开放的。

  • Docker 与 kubelet cgroup driver 不匹配:检查并调整 Docker 和 kubelet 的 cgroup 驱动一致性。

  • 证书错误:初始化时可能出现证书问题,这时可以清理旧的证书并重新初始化,或确保系统的时钟同步。

  • Pod 网络未就绪:在加入 worker 节点后,如果 Pod 网络没有立即就绪,可以等待一段时间,或者检查所选网络插件的日志以解决问题。

  • kube-proxy 报错:检查 kube-proxy 是否正常运行,如果不正常,尝试重启服务或查看日志寻找线索。

  • 资源不足:确保每个节点有足够的 CPU 和内存资源用于 Kubernetes 系统组件和应用程序。

  • 版本兼容性问题:确保使用的 Kubernetes 版本与其他组件(如 Docker、containerd、kubelet 等)兼容。

请注意,部署 Kubernetes 集群时的具体操作可能会随着 Kubernetes 版本更新而有所变化,因此始终应该查阅最新的官方文档和最佳实践。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐