6 安装Kubernetes之使用Kubeadm安装
在上一篇文章中,我们介绍了如何使用 Minikube
快速搭建一个本地的 Kubernetes 集群。Minikube
适合用于开发和测试,但如果我们要在生产环境或更复杂的测试场景中运行 Kubernetes,则推荐使用 Kubeadm
安装 Kubernetes 集群。今天,我们将详细介绍如何使用 Kubeadm
安装 Kubernetes。
Kubeadm简介
Kubeadm
是 Kubernetes 官方提供的一种工具,用于快速创建和管理 Kubernetes 集群。它主要负责:
- 初始化控制平面节点
- 加入工作节点到集群
- 提供集群升级和修复等功能
环境准备
在开始之前,我们需要准备一些环境。以下是一个基本的环境清单:
- 至少两台服务器(或虚拟机),一台作为控制平面节点,另一台作为工作节点。
- 操作系统建议使用
Ubuntu 20.04+
、CentOS 7+
等。 - 需要具备
sudo
权限的用户。 - 安装 Docker 或其他容器运行时。
系统要求
确认你的系统符合以下要求:
- CPU:至少2个
- 内存:至少2GB
- Swap:禁用交换空间
可以通过以下命令禁用交换空间:
sudo swapoff -a
并确保在 /etc/fstab
文件中注释掉任何 swap 相关的行,以防重启后自动启用。
运行时环境
以下是安装 Docker 的步骤,以便后续用于 Kubernetes:
在 Ubuntu 上安装 Docker
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
在 CentOS 上安装 Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
安装Kubernetes组件
在所有节点上安装 Kubernetes 组件前,我们需要添加 Kubernetes 的官方仓库,并安装 kubeadm
, kubelet
和 kubectl
。
添加 Kubernetes 仓库
在 Ubuntu 上
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
在 CentOS 上
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
安装组件
现在我们可以安装 Kubernetes 组件:
安装 kubeadm, kubelet 和 kubectl(Ubuntu)
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
安装 kubeadm, kubelet 和 kubectl(CentOS)
sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet
初始化Kubernetes集群
在控制平面节点上,使用 kubeadm
初始化 Kubernetes 集群。执行以下命令:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
这里的 --pod-network-cidr
是指定的 Pod 网络范围,通常取决于你选择的网络插件(如 Calico、Weave 等)。在本例中,我们使用的是 Calico,它建议使用 192.168.0.0/16
。
配置kubectl
初始化完成后,执行以下命令以配置 kubectl
:
# 复制 kubeconfig 文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
部署Pod网络
接下来,需要部署一个 Pod 网络插件。以下是安装 Calico 的步骤:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
加入工作节点
在工作节点上,你需要使用控制平面节点上显示的 kubeadm join
命令加入到集群。例如:
sudo kubeadm join <control-plane-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
请替换 <control-plane-ip>
、<token>
和 <hash>
为你实际的控制平面的 IP 地址和命令行输出的值。
验证集群状态
在控制平面节点上,可以使用以下命令来查看节点状态:
kubectl get nodes
这应该会显示控制平面节点以及相应的工作节点。
小结
在本篇教程中,我们详细介绍了如何使用 Kubeadm
安装 Kubernetes 集群。与 Minikube
的使用相比,Kubeadm
更适合生产环境和多节点集群的需求。在下一篇文章中,我们将探讨 Kubernetes 的基本概念,特别是如何使用命名空间来组织和管理资源。
通过此次实践,你应该对 Kubernetes 的安装过程,特别是使用 Kubeadm
有了初步的了解。如果你有任何问题或进一步的需求,请随时提问!