Kubernetes(K8s)部署实战:容器编排与生产环境配置

文章最后更新时间:2026-04-14 12:05:04

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部署及运维服务。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容