Kubernetes 部署实战:从零开始掌握容器编排
Kubernetes(K8s)是容器编排的事实标准。本文从核心概念到实战部署,带你全面掌握 K8s。
🏗️ 核心架构
- Control Plane:API Server、etcd、Scheduler、Controller Manager
- Node:kubelet、kube-proxy、Container Runtime
- Pod:最小部署单元,包含一个或多个容器
📦 核心资源对象
1. Deployment:无状态应用部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
2. Service:服务发现与负载均衡
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
3. ConfigMap & Secret:配置管理
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
database_url: "postgres://db:5432/mydb"
🔄 滚动更新与回滚
# 滚动更新
kubectl set image deployment/nginx-deployment nginx=nginx:1.26
# 查看更新状态
kubectl rollout status deployment/nginx-deployment
# 回滚到上一版本
kubectl rollout undo deployment/nginx-deployment
📊 实用命令速查
kubectl get pods # 查看 Pod
kubectl describe pod <pod-name> # 查看 Pod 详情
kubectl logs <pod-name> # 查看日志
kubectl exec -it <pod-name> -- sh # 进入容器
kubectl apply -f deployment.yaml # 应用配置
kubectl delete -f deployment.yaml # 删除资源
🚀 生产环境最佳实践
- 使用命名空间(Namespace)隔离环境
- 设置资源请求和限制(requests/limits)
- 配置健康检查(liveness/readiness probe)
- 使用 Horizontal Pod Autoscaler 自动扩缩容
- 启用 RBAC 权限控制
- 使用 CI/CD 自动化部署
总结:Kubernetes 学习曲线较陡,但掌握后能大幅提升容器化应用的部署和运维效率。建议从 Minikube 本地环境开始实践。
本文整理自 Kubernetes 官方文档及技术社区实战教程