跳到主要内容

Kubernetes 环境配置

本章将介绍如何搭建 Kubernetes 开发环境,包括本地集群和云端集群的安装配置。

环境选择

根据不同场景选择合适的 Kubernetes 环境:

工具特点适用场景
Minikube单节点,简单易用学习、开发
KindDocker 内置集群,快速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

小结

本章我们学习了:

  1. kubectl 安装配置:命令行工具的安装和配置
  2. Minikube:本地单节点 Kubernetes 环境
  3. Kind:使用 Docker 运行 Kubernetes
  4. K3s:轻量级 Kubernetes
  5. 云端集群:EKS、GKE、ACK 的创建和配置
  6. 集群验证:检查集群状态和测试部署

练习

  1. 在本地使用 Minikube 搭建 Kubernetes 集群
  2. 使用 kubectl 部署一个 nginx 应用
  3. 使用 Kind 创建一个多节点集群
  4. 配置云端 Kubernetes 集群(可选)

准备好继续学习了吗?点击下一章了解 Pod 的概念和使用!