走向生产
已发行
本章内容概览:
- 部署微服务到 Kubernetes 集群
- 本地和云端 Kubernetes 部署
- Kubernetes 核心概念
- 部署清单文件
本章学习将微服务部署到生产环境。
6.1 为什么选择 Kubernetes?
Kubernetes 是开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。
主要优势:
- 自动化部署和更新应用
- 根据负载自动扩展
- 自动重启失败的容器
- 自动分发网络流量
- 零停机部署应用
- 避免云厂商锁定
6.2 核心概念
Pod:
- 最小部署单元
- 共享网络和存储
- 生命周期短暂
Deployment:
- 管理 Pod 的副本数量和更新策略
- 声明式管理、滚动更新、回滚
Service:
- 为 Pod 提供稳定的网络访问端点
- 类型:ClusterIP、NodePort、LoadBalancer、Ingress
ConfigMap 和 Secret:
- ConfigMap:存储配置数据
- Secret:存储敏感数据(密码、密钥)

架构组件:
控制平面:
- API Server:集群统一入口
- Scheduler:调度 Pod 到节点
- Controller Manager:维护集群状态
- etcd:存储集群配置
工作节点:
- Kubelet:管理容器
- Kube-proxy:网络代理和负载均衡
- Container Runtime:运行容器
6.3 本地 Kubernetes
Docker Desktop 包含本地 Kubernetes 实例。
启用步骤:
- 打开 Docker Desktop
- Settings → Kubernetes
- Enable Kubernetes
- Apply & Restart
验证安装:
kubectl version
kubectl cluster-info
kubectl get nodes
部署第一个应用:
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-node --type=NodePort --port=8080
6.4 部署清单
Deployment 清单:
apiVersion: apps/v1
kind: Deployment
metadata:
name: video-streaming
spec:
replicas: 3
selector:
matchLabels:
app: video-streaming
template:
metadata:
labels:
app: video-streaming
spec:
containers:
- name: video-streaming
image: registry/video-streaming:latest
ports:
- containerPort: 3000
Service 清单:
apiVersion: v1
kind: Service
metadata:
name: video-streaming
spec:
type: LoadBalancer
selector:
app: video-streaming
ports:
- port: 80
targetPort: 3000
应用部署:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl get pods
kubectl get services
6.5 云端 Kubernetes
6.5.1 Azure Kubernetes Service (AKS)
优势:
- 托管控制平面
- 自动升级和修补
- 集成 Azure 生态
- 简化操作
6.5.2 创建 AKS 集群
az group create --name myResourceGroup --location eastus
az aks create --resource-group myResourceGroup \
--name myAKSCluster \
--node-count 2 \
--enable-addons monitoring \
--generate-ssh-keys
6.5.3 连接到集群
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
kubectl get nodes
6.6 部署到云端
部署流程:
- 构建并推送 Docker 镜像
- 创建 Kubernetes 资源
- 配置负载均衡器
- 验证部署
监控部署:
kubectl get deployments
kubectl get pods
kubectl get services
kubectl logs <pod-name>

总结
- Kubernetes 是强大的容器编排平台
- Pod、Deployment、Service 是核心概念
- ConfigMap 和 Secret 管理配置和敏感数据
- Docker Desktop 包含本地 Kubernetes,适合开发测试
- 云服务商提供托管 Kubernetes 服务
- kubectl 是主要交互工具
- YAML 文件定义 Kubernetes 资源
- 提供自动化部署、弹性伸缩和自我修复
下一章学习使用 Terraform 实现基础设施即代码。