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 #
- 打开Docker Desktop设置
- 选择Kubernetes选项卡
- 勾选"Enable Kubernetes"
- 点击"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