文章最后更新时间:
Kubernetes(K8s)是容器编排的事实标准,但K8s概念多、配置复杂,很多开发者望而却步。本文从实战角度讲解K8s部署,帮你快速上手生产环境配置。
一、K8s核心概念
Pod
Pod是K8s最小的部署单元,一个Pod可以包含一个或多个容器。
Deployment
Deployment管理Pod的副本数、更新策略等,是常用的部署控制器。
Service
Service提供稳定的访问入口,将请求分发到后端Pod。
Ingress
Ingress是HTTP路由规则,将外部请求路由到内部Service。
ConfigMap/Secret
ConfigMap存储配置数据,Secret存储敏感数据(密码、密钥等)。
二、部署配置文件
Deployment配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myimage:latest
ports:
- containerPort: 8080
resources:
limits:
memory: "512Mi"
cpu: "500m"
requests:
memory: "256Mi"
cpu: "250m"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
Service配置
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 8080
type: ClusterIP
Ingress配置
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80
三、常用命令
部署管理
# 部署应用 kubectl apply -f deployment.yaml # 查看部署状态 kubectl get deployments # 查看Pod状态 kubectl get pods # 查看Pod详情 kubectl describe pod myapp-xxx # 查看日志 kubectl logs myapp-xxx # 进入容器 kubectl exec -it myapp-xxx -- /bin/sh
扩缩容
# 手动扩容 kubectl scale deployment myapp --replicas=5 # 自动扩缩容 kubectl autoscale deployment myapp --min=2 --max=10 --cpu-percent=80
更新回滚
# 更新镜像 kubectl set image deployment/myapp myapp=myimage:v2 # 查看更新状态 kubectl rollout status deployment/myapp # 回滚到上一版本 kubectl rollout undo deployment/myapp # 查看历史版本 kubectl rollout history deployment/myapp
四、生产环境配置
资源限制
为每个容器设置资源请求和限制,防止资源争抢。
健康检查
配置livenessProbe和readinessProbe,自动重启不健康的容器。
滚动更新
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
持久化存储
spec:
volumes:
- name: data
persistentVolumeClaim:
claimName: myapp-pvc
containers:
- name: myapp
volumeMounts:
- name: data
mountPath: /data
五、监控与日志
监控方案
- Prometheus + Grafana:指标监控
- ELK Stack:日志收集分析
- Jaeger:分布式追踪
日志查看
# 查看Pod日志 kubectl logs -f myapp-xxx # 查看最近100行 kubectl logs --tail=100 myapp-xxx # 查看多个容器日志 kubectl logs -f myapp-xxx -c container-name
六、常见问题
Q:Pod一直处于Pending状态?
A:检查资源是否充足、节点是否健康、调度约束是否满足。
Q:Pod频繁重启?
A:检查健康检查配置、资源限制、应用日志排查原因。
Q:如何调试Pod?
A:使用kubectl exec进入容器,或使用kubectl describe查看事件。
Q:如何实现零停机更新?
A:配置readinessProbe,设置maxUnavailable=0,确保新Pod就绪后再终止旧Pod。
总结
K8s是容器编排标准。核心概念:Pod、Deployment、Service、Ingress。生产配置要点:资源限制、健康检查、滚动更新、持久化存储。掌握kubectl常用命令和监控方案,K8s部署不再困难。
瀚煜云提供Kubernetes部署及运维服务。


















暂无评论内容