搭建Kubernetes集群:从Minikube到多节点集群的完整教程

搭建Kubernetes集群:从Minikube到多节点集群的完整教程

在容器编排的世界中,Kubernetes(K8s)已成为最流行的解决方案。无论是开发测试环境还是生产环境,Kubernetes 都能提供出色的容器编排和管理能力。本教程将从基础的 Minikube 环境 开始,逐步带你搭建一个多节点 Kubernetes 集群,并深入讲解其中的关键概念、操作步骤和实际应用场景。

一、Kubernetes 基础知识

在开始之前,我们需要了解Kubernetes的核心概念:

  • Pod:Kubernetes 最小的部署单元,包含一个或多个容器。
  • Node:Kubernetes 集群中的一台物理机或虚拟机,每个节点运行必要的组件以维护 Pod 的运行。
  • Master:集群控制平面,负责管理集群的状态和调度。
  • kubectl:Kubernetes 命令行工具,用于与集群交互。
  • Service:用于将一组 Pod 作为一个统一的网络服务进行暴露。

二、环境准备

在搭建 Kubernetes 集群之前,我们需要以下环境和工具:

硬件要求

  • CPU:至少 2 核
  • 内存:至少 4 GB(推荐 8 GB 以上)
  • 存储:至少 20 GB 磁盘空间
  • 网络:所有节点之间网络互通

软件要求

  • Linux (Ubuntu 20.04/22.04) / CentOS 7/8 / Windows WSL2
  • Docker (推荐版本 24.0.5+)
  • kubectl (推荐版本 1.29.0+)
  • Minikube (推荐版本 1.31.2+)

三、搭建Minikube环境 (单节点Kubernetes)

Minikube是Kubernetes官方提供的轻量化工具,适用于开发和测试环境。

1. 安装 Minikube

在 Linux 系统上安装 Minikube:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

验证安装是否成功:

minikube version

2. 启动 Minikube

启动 Minikube 并指定所需的资源参数:

minikube start --cpus=4 --memory=8192 --driver=docker

> `–driver=docker` 表示使用 Docker 作为容器运行时。

3. 验证 Minikube 集群状态

kubectl cluster-info
kubectl get nodes

4. 部署一个示例应用

kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080
minikube service hello-minikube

四、搭建多节点Kubernetes集群

在生产环境中,通常需要多个节点以实现更高的可用性和负载均衡。接下来,我们将使用 `kubeadm` 工具来搭建一个完整的 Kubernetes 集群。

1. 准备主机

在以下环境中完成设置:

  • 1 台 Master 节点(控制平面)
  • 2 台 Worker 节点(计算节点)

每台机器都需执行以下操作:

更新系统并安装依赖项

sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl gnupg

安装 Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu focal stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

配置 Docker 容器运行时

cat <<EOF | sudo tee /etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m"
    },
    "storage-driver": "overlay2"
}
EOF
sudo systemctl restart docker
sudo systemctl enable docker

安装 kubeadm、kubelet 和 kubectl

sudo apt install -y apt-transport-https
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg
echo "deb https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet

2. 初始化 Master 节点

在 Master 节点上运行:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

配置 kubectl

mkdir -p HOME/.kube
sudo cp /etc/kubernetes/admin.confHOME/.kube/config
sudo chown (id -u):(id -g) $HOME/.kube/config

验证 Master 状态:

kubectl get nodes

3. 配置网络插件 (Calico)

使用 Calico 提供 Pod 网络:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

4. 添加 Worker 节点

在 Master 节点初始化完成后,将得到 `kubeadm join` 命令,类似于:

kubeadm join <Master-IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

在每个 Worker 节点上执行该命令,即可将节点加入集群。

5. 验证集群状态

在 Master 节点上运行以下命令,查看节点状态:

kubectl get nodes

应显示 Master 和 Worker 节点,状态为 `Ready`。

五、部署示例应用

在完成集群搭建后,测试其功能。

部署 Nginx 应用

kubectl create deployment nginx-deployment --image=nginx
kubectl expose deployment nginx-deployment --type=NodePort --port=80

获取 Service 的 NodePort:

kubectl get services

访问 `http://<任意 Worker IP>:<NodePort>` 即可验证应用是否正常工作。

六、常见问题及解决方法

1. 无法拉取镜像

执行 `docker pull` 检查镜像是否存在。

如果网络问题导致镜像拉取失败,考虑配置国内镜像源(如阿里云)。

2. 节点状态为 `NotReady`

检查 `kubelet` 服务是否正常:`systemctl status kubelet`

查看日志:`journalctl -xeu kubelet`

3. Pod 网络不通

确认网络插件是否安装成功:`kubectl get pods -n kube-system`

通过本教程,您已经成功搭建了一个Kubernetes集群,并完成了Minikube 和多节点Kubernetes的部署。您可以根据自身业务需求进一步优化集群配置,并学习更多高级特性,如 Helm、Ingress Controller、Persistent Volumes 等,以更好地管理和扩展您的容器化应用。

未经允许不得转载:A5数据 » 搭建Kubernetes集群:从Minikube到多节点集群的完整教程

相关文章

contact