Kubernetes环境搭建 #

一、环境搭建概述 #

在开始学习Kubernetes之前,我们需要搭建一个可用的Kubernetes环境。根据不同的使用场景,有多种搭建方式可供选择。

1.1 环境类型对比 #

环境类型 适用场景 特点
Minikube 本地学习开发 单节点,安装简单
Kind 本地测试CI/CD 使用Docker容器模拟节点
Docker Desktop Mac/Windows开发 内置Kubernetes
kubeadm 生产环境 多节点,官方推荐
托管服务 生产环境 GKE、EKS、AKS

1.2 系统要求 #

text
最低硬件要求
    │
    ├── CPU ─── 2核以上
    │
    ├── 内存 ─── 4GB以上(推荐8GB)
    │
    └── 磁盘 ─── 20GB以上

二、Minikube安装 #

Minikube是在本地运行Kubernetes的最佳选择,适合学习和开发。

2.1 安装Minikube #

macOS安装:

bash
# 使用Homebrew安装
brew install minikube

# 或者下载二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube

Linux安装:

bash
# 下载并安装
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Windows安装:

powershell
# 使用Chocolatey
choco install minikube

# 或者下载exe文件
# https://storage.googleapis.com/minikube/releases/latest/minikube-windows-amd64.exe

2.2 启动Minikube #

bash
# 使用默认驱动启动
minikube start

# 指定驱动启动
minikube start --driver=docker

# 指定Kubernetes版本
minikube start --kubernetes-version=v1.28.0

# 分配更多资源
minikube start --cpus=4 --memory=8192

# 使用国内镜像源
minikube start --image-mirror-country=cn

2.3 Minikube常用命令 #

bash
# 查看状态
minikube status

# 停止集群
minikube stop

# 删除集群
minikube delete

# 进入节点SSH
minikube ssh

# 打开Dashboard
minikube dashboard

# 查看插件列表
minikube addons list

# 启用插件
minikube addons enable ingress
minikube addons enable metrics-server

2.4 Minikube配置 #

bash
# 查看配置
minikube config view

# 设置默认内存
minikube config set memory 8192

# 设置默认CPU
minikube config set cpus 4

# 设置默认驱动
minikube config set driver docker

三、Kind安装 #

Kind(Kubernetes in Docker)使用Docker容器作为节点来运行Kubernetes集群。

3.1 安装Kind #

macOS/Linux:

bash
# macOS
brew install kind

# Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

Windows:

powershell
choco install kind

3.2 创建集群 #

bash
# 创建默认集群
kind create cluster

# 指定集群名称
kind create cluster --name my-cluster

# 指定Kubernetes版本
kind create cluster --image kindest/node:v1.28.0

# 使用配置文件创建多节点集群
kind create cluster --config kind-config.yaml

3.3 Kind配置文件 #

yaml
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
bash
# 创建3节点集群
kind create cluster --config kind-config.yaml

3.4 Kind常用命令 #

bash
# 查看集群列表
kind get clusters

# 查看节点
kind get nodes

# 删除集群
kind delete cluster

# 删除指定集群
kind delete cluster --name my-cluster

# 加载镜像到集群
kind load docker-image my-image:latest

四、Docker Desktop #

Docker Desktop在Mac和Windows上内置了Kubernetes支持。

4.1 启用Kubernetes #

  1. 打开Docker Desktop设置
  2. 选择Kubernetes选项卡
  3. 勾选"Enable Kubernetes"
  4. 点击"Apply & Restart"

4.2 验证安装 #

bash
# 查看集群信息
kubectl cluster-info

# 查看节点
kubectl get nodes

# 输出示例
NAME             STATUS   ROLES           AGE   VERSION
docker-desktop   Ready    control-plane   10m   v1.28.0

五、kubeadm安装 #

kubeadm是官方推荐的集群安装工具,适合生产环境。

5.1 系统准备 #

所有节点执行:

bash
# 关闭交换分区
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab

# 设置内核参数
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 modprobe br_netfilter

5.2 安装容器运行时 #

bash
# 安装containerd
sudo apt-get update
sudo apt-get install -y containerd

# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

# 重启containerd
sudo systemctl restart containerd
sudo systemctl enable containerd

5.3 安装kubeadm、kubelet、kubectl #

bash
# 添加Kubernetes源
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

# 添加仓库
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

5.4 初始化控制平面 #

在Master节点执行:

bash
# 初始化集群
sudo kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --kubernetes-version=v1.28.0

# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

5.5 安装网络插件 #

bash
# 安装Calico网络插件
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml

# 或者安装Flannel
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

5.6 加入工作节点 #

在Worker节点执行:

bash
# 使用初始化时输出的join命令
sudo kubeadm join <control-plane-ip>:6443 --token <token> \
    --discovery-token-ca-cert-hash sha256:<hash>

# 如果token过期,重新生成
kubeadm token create --print-join-command

5.7 验证集群 #

bash
# 查看节点状态
kubectl get nodes

# 查看组件状态
kubectl get cs

# 查看Pod状态
kubectl get pods -A

六、安装kubectl #

kubectl是Kubernetes的命令行工具,用于与集群交互。

6.1 安装kubectl #

macOS:

bash
# 使用Homebrew
brew install kubectl

# 或者下载二进制
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Linux:

bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Windows:

powershell
# 使用Chocolatey
choco install kubernetes-cli

6.2 配置kubectl #

bash
# 查看当前配置
kubectl config view

# 查看当前上下文
kubectl config current-context

# 切换上下文
kubectl config use-context <context-name>

# 查看集群列表
kubectl config get-clusters

6.3 启用自动补全 #

Bash:

bash
# 临时启用
source <(kubectl completion bash)

# 永久启用
echo "source <(kubectl completion bash)" >> ~/.bashrc

Zsh:

bash
# 临时启用
source <(kubectl completion zsh)

# 永久启用
echo "source <(kubectl completion zsh)" >> ~/.zshrc

七、验证安装 #

7.1 检查集群状态 #

bash
# 查看集群信息
kubectl cluster-info

# 查看节点
kubectl get nodes -o wide

# 查看系统Pod
kubectl get pods -n kube-system

# 查看组件状态
kubectl get componentstatuses

7.2 运行测试应用 #

bash
# 创建部署
kubectl create deployment nginx --image=nginx

# 暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort

# 查看服务
kubectl get svc

# 访问应用
# Minikube方式
minikube service nginx

# 获取NodePort
kubectl get svc nginx -o jsonpath='{.spec.ports[0].nodePort}'

八、常见问题解决 #

8.1 镜像拉取失败 #

bash
# 使用国内镜像源
# 对于Minikube
minikube start --image-mirror-country=cn

# 对于kubeadm,修改配置
kubeadm config images pull --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers

8.2 节点NotReady #

bash
# 检查网络插件是否安装
kubectl get pods -n kube-system | grep -E 'calico|flannel'

# 检查kubelet状态
sudo systemctl status kubelet

# 查看kubelet日志
sudo journalctl -u kubelet -f

8.3 清理环境 #

bash
# Minikube清理
minikube delete

# Kind清理
kind delete cluster

# kubeadm重置
sudo kubeadm reset
sudo rm -rf /etc/kubernetes/
sudo rm -rf /var/lib/etcd/
sudo rm -rf $HOME/.kube

九、开发工具推荐 #

9.1 IDE插件 #

工具 插件 功能
VS Code Kubernetes YAML补全、集群管理
VS Code Docker 容器管理
IntelliJ Kubernetes YAML支持

9.2 图形化管理工具 #

工具 说明
Kubernetes Dashboard 官方Web UI
Lens 桌面客户端
k9s 终端UI
Octant Web UI

十、总结 #

10.1 环境选择建议 #

场景 推荐方案
本地学习 Minikube
CI/CD测试 Kind
Mac/Windows开发 Docker Desktop
生产环境 kubeadm或托管服务

10.2 下一步 #

环境搭建完成后,让我们在 第一个应用 中部署你的第一个Kubernetes应用!

最后更新:2026-03-28