Kubernetes(K8s)已成为容器编排的事实标准。本文从核心概念入手,帮助你快速建立 K8s 的知识体系。
一、为什么需要 Kubernetes?
当容器数量达到一定规模,手动管理变得不可能:
- 容器宕机后自动重启恢复
- 根据负载自动扩缩容
- 滚动更新,实现零停机部署
- 跨节点负载均衡和服务发现
- 统一配置和密钥管理
二、核心资源对象
- Pod:最小调度单元,包含一个或多个共享网络/存储的容器
- Deployment:管理无状态应用的副本数,支持滚动更新和回滚
- Service:为 Pod 提供稳定的网络访问入口,支持 ClusterIP/NodePort/LoadBalancer
- ConfigMap / Secret:分离配置与代码,Secret 用于存储敏感信息
- Ingress:HTTP/HTTPS 路由,将外部流量分发到不同 Service
- PersistentVolume:为有状态应用提供持久化存储
三、一个完整的应用部署示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web
image: nginx:1.25
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
四、常用 kubectl 命令
kubectl get pods -n default # 查看 Pod 状态
kubectl describe pod <pod-name> # 查看 Pod 详情
kubectl logs <pod-name> -f # 实时查看日志
kubectl exec -it <pod-name> -- bash # 进入容器
kubectl apply -f deployment.yaml # 应用配置
kubectl rollout undo deployment/web # 回滚部署
总结
Kubernetes 的学习曲线较陡,但一旦掌握,你将拥有管理大规模容器化应用的能力。从部署一个简单的 Deployment 开始,逐步深入探索更高级的特性。