Kubernetes 环境配置
本章将介绍如何搭建 Kubernetes 开发环境,包括本地集群和云端集群的安装配置。
环境选择
根据不同场景选择合适的 Kubernetes 环境:
| 工具 | 特点 | 适用场景 |
|---|---|---|
| Minikube | 单节点,简单易用 | 学习、开发 |
| Kind | Docker 内置集群,快速 | CI/CD、测试 |
| K3s | 轻量级,低资源 | 边缘计算、学习 |
| 云服务 (EKS/GKE/ACK) | 托管服务,生产环境 | 生产环境 |
安装 kubectl
kubectl 是与 Kubernetes 集群交互的命令行工具。
Linux/macOS
# 方法1:使用 curl 安装
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 添加执行权限
chmod +x kubectl
# 移动到 PATH
sudo mv kubectl /usr/local/bin/
# 验证安装
kubectl version --client
Windows
# 使用 winget 安装
winget install Kubernetes.kubectl
# 或使用 chocolatey
chok install kubernetes-kubectl
配置 kubectl
# 配置集群访问
kubectl config set-cluster my-cluster \
--server=https://kubernetes.example.com:6443 \
--certificate-authority=/path/to/ca.crt
# 设置凭证
kubectl config set-credentials admin \
--username=admin \
--password=secret
# 创建上下文
kubectl config set-context my-context \
--cluster=my-cluster \
--user=admin
# 切换上下文
kubectl config use-context my-context
Minikube 安装
Minikube 是在本地运行单节点 Kubernetes 的工具。
安装 Minikube
# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# macOS
brew install minikube
# Windows - 使用 winget
winget install minikube
启动集群
# 使用默认驱动启动
minikube start
# 指定资源
minikube start --cpus 4 --memory 8192
# 使用 Docker 驱动
minikube start --driver=docker
# 使用 Kubernetes 版本
minikube start --kubernetes-version=v1.28.0
Minikube 命令
# 查看状态
minikube status
# 停止集群
minikube stop
# 删除集群
minikube delete
# 启用插件
minikube addons enable ingress
minikube addons enable dashboard
# 打开 Dashboard
minikube dashboard
# 获取 IP
minikube ip
# SSH 到节点
minikube ssh
Kind 安装
Kind(Kubernetes IN Docker)使用 Docker 容器运行 Kubernetes 节点。
安装 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
# macOS
brew install kind
# Windows
winget install Kind
创建集群
# 创建默认集群
kind create cluster
# 创建多节点集群
cat > kind-config.yaml << EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
EOF
kind create cluster --config kind-config.yaml
# 指定 Kubernetes 版本
kind create cluster --image kindest/node:v1.28.0
Kind 命令
# 列出集群
kind get clusters
# 删除集群
kind delete cluster
# 加载镜像到集群
kind load docker-image my-app:latest
# 查看节点
kind get nodes
K3s 安装
K3s 是轻量级的 Kubernetes,适合资源受限的环境。
安装 K3s
# 安装 K3s
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik" sh -
# 查看节点
kubectl get node
# 查看 K3s 状态
systemctl status k3s
# 获取 token
cat /var/lib/rancher/k3s/server/agent-node-token
K3s 客户端配置
# 配置 kubectl 访问 K3s
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
# 或者复制配置
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chmod 644 ~/.kube/config
云端集群
AWS EKS
# 安装 eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin/
# 创建集群
eksctl create cluster \
--name my-cluster \
--region us-west-2 \
--nodegroup-name my-nodes \
--node-type t3.medium \
--nodes 3
# 更新 kubeconfig
aws eks update-kubeconfig --name my-cluster --region us-west-2
Google GKE
# 安装 gcloud
curl https://sdk.cloud.google.com | bash
gcloud auth login
# 创建集群
gcloud container clusters create my-cluster \
--zone us-central1-a \
--node-locations us-central1-a
# 获取凭证
gcloud container clusters get-credentials my-cluster --zone us-central1-a
阿里云 ACK
# 安装阿里云 CLI
curl -o /usr/local/bin/aliyun https://aliyuncli.alicdn.com/aliyun-cli-linux-latest.tgz
aliyun configure
# 创建集群(需要通过控制台或 OpenAPI)
# 配置 kubeconfig
aliyun cs acknowledge-cluster-token --cluster-id <cluster-id>
集群验证
检查集群状态
# 查看节点
kubectl get nodes
# 查看系统 Pod
kubectl get pods -n kube-system
# 查看集群信息
kubectl cluster-info
# 查看 API 服务器端点
kubectl get endpoints -n default kubernetes
测试应用部署
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
# 部署应用
kubectl apply -f deployment.yaml
# 查看 Pod
kubectl get pods -l app=nginx
# 暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort
# 访问应用
curl $(minikube service nginx --url)
Docker Desktop Kubernetes
如果你使用 Docker Desktop,可以直接启用内置的 Kubernetes:
# 在 Docker Desktop 设置中启用 Kubernetes
# 然后验证
kubectl config get-contexts
# 切换到 docker-desktop 上下文
kubectl config use-context docker-desktop
# 验证
kubectl get nodes
常见问题
1. 镜像拉取失败
# 配置镜像加速器
minikube start --image-mirror-country=cn
# 或手动配置
minikube addons configure registry-aliases
2. 资源不足
# 增加资源
minikube config set memory 8192
minikube config set cpus 4
minikube delete
minikube start
3. 网络问题
# 检查网络插件状态
kubectl get pods -n kube-system -l k8s-app=kube-proxy
# 重置集群网络
minikube delete
minikube start
小结
本章我们学习了:
- kubectl 安装配置:命令行工具的安装和配置
- Minikube:本地单节点 Kubernetes 环境
- Kind:使用 Docker 运行 Kubernetes
- K3s:轻量级 Kubernetes
- 云端集群:EKS、GKE、ACK 的创建和配置
- 集群验证:检查集群状态和测试部署
练习
- 在本地使用 Minikube 搭建 Kubernetes 集群
- 使用 kubectl 部署一个 nginx 应用
- 使用 Kind 创建一个多节点集群
- 配置云端 Kubernetes 集群(可选)
准备好继续学习了吗?点击下一章了解 Pod 的概念和使用!