【Kubernets】Kubernets资源类型Deployment详细先容

打印 上一主题 下一主题

主题 1028|帖子 1028|积分 3084

Kubernets资源概览


Kubernetes Deployment 资源类型详细先容

Deployment 是 Kubernetes 中用于管理 无状态应用 的核心资源类型之一。它提供了一种声明式的方式来界说应用的期望状态,并确保 Pod 的副本数、更新策略和回滚机制等都能按照预期运行。
Deployment 的重要功能


  • 声明式更新

    • 界说应用的期望状态(如副本数、镜像版本等),Kubernetes 会主动调整实际状态以匹配期望状态。

  • 副本管理

    • 确保指定命量的 Pod 副本始终运行。
    • 支持动态扩缩容。

  • 滚动更新

    • 支持无缝更新应用版本,徐徐更换旧版本的 Pod。
    • 可以配置更新策略(如最大不可用 Pod 数和最大超出副本数)。

  • 回滚机制

    • 如果更新失败,可以快速回滚到之前的稳定版本。

  • 健康查抄

    • 联合 Readiness Probe 和 Liveness Probe,确保只有健康的 Pod 才会吸收流量。

  • 版本汗青

    • 记载每次更新的汗青,方便回滚和审计。

Deployment 的核心字段

以下是一个典范的 Deployment 配置文件示例:
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: myapp-deployment
  5.   labels:
  6.     app: myapp
  7. spec:
  8.   replicas: 3
  9.   selector:
  10.     matchLabels:
  11.       app: myapp
  12.   template:
  13.     metadata:
  14.       labels:
  15.         app: myapp
  16.     spec:
  17.       containers:
  18.       - name: myapp-container
  19.         image: myapp:1.0
  20.         ports:
  21.         - containerPort: 80
  22.         resources:
  23.           requests:
  24.             memory: "64Mi"
  25.             cpu: "250m"
  26.           limits:
  27.             memory: "128Mi"
  28.             cpu: "500m"
  29.         livenessProbe:
  30.           httpGet:
  31.             path: /healthz
  32.             port: 80
  33.           initialDelaySeconds: 3
  34.           periodSeconds: 10
  35.         readinessProbe:
  36.           httpGet:
  37.             path: /ready
  38.             port: 80
  39.           initialDelaySeconds: 5
  40.           periodSeconds: 10
  41.       restartPolicy: Always
  42.   strategy:
  43.     type: RollingUpdate
  44.     rollingUpdate:
  45.       maxUnavailable: 1
  46.       maxSurge: 1
复制代码
字段详解

1. metadata



  • name:Deployment 的名称。
  • labels:为 Deployment 添加标签,用于组织和选择资源。
2. spec



  • replicas:指定 Pod 的副本数。例如,replicas: 3 表示运行 3 个 Pod。
  • selector:界说 Deployment 如何选择管理的 Pod。

    • matchLabels:通过标签选择 Pod。必须与 template.metadata.labels 匹配。

3. template



  • 界说 Pod 的模板,用于创建 Pod。
  • metadata:Pod 的元数据,包罗标签。
  • spec:Pod 的规格,界说容器、卷、环境变量等。
4. containers



  • 界说 Pod 中的容器。
  • name:容器名称。
  • image:容器镜像。
  • ports:容器暴露的端口。
  • resources:资源哀求和限制。

    • requests:容器启动所需的最小资源。
    • limits:容器可以利用的最大资源。

  • livenessProbe:健康查抄,用于判断容器是否存活。
  • readinessProbe:停当查抄,用于判断容器是否准备好吸收流量。
5. strategy



  • 界说更新策略。
  • type:更新类型,默认为 RollingUpdate。

    • RollingUpdate:滚动更新,徐徐更换旧 Pod。
    • Recreate:先删除所有旧 Pod,再创建新 Pod。

  • rollingUpdate:滚动更新的详细配置。

    • maxUnavailable:更新过程中答应的最大不可用 Pod 数(可以是数字或百分比)。
    • maxSurge:更新过程中答应的最大超出副本数(可以是数字或百分比)。

6. restartPolicy



  • 界说 Pod 的重启策略,默认为 Always。
  • 可选值:

    • Always:容器退出时总是重启。
    • OnFailure:容器失败时重启。
    • Never:容器退出时不重启。

Deployment 的生命周期


  • 创建 Deployment

    • 用户通过 kubectl apply -f deployment.yaml
      创建 Deployment。
    • Kubernetes 根据 spec.template 创建 Pod。

  • 更新 Deployment

    • 修改 Deployment 的配置(如镜像版本)并重新应用。
    • Kubernetes 根据更新策略(如滚动更新)徐徐更换旧 Pod。

  • 回滚 Deployment

    • 如果更新失败,可以通过 kubectl rollout undo deployment/<deployment-name> 回滚到之前的版本。

  • 扩缩容

    • 修改 replicas 字段并重新应用,Kubernetes 会主动调整 Pod 的数量。

  • 删除 Deployment

    • 通过 kubectl delete deployment/<deployment-name> 删除 Deployment,同时会删除其管理的所有 Pod。

Deployment 的常用操纵

1. 创建 Deployment

  1. kubectl apply -f deployment.yaml
复制代码
2. 查看 Deployment 状态

  1. kubectl get deployments
复制代码
3. 查看 Pod 状态

  1. kubectl get pods -l app=myapp
复制代码
4. 更新 Deployment(修改镜像版本)

  1. kubectl set image deployment/myapp-deployment myapp-container=myapp:2.0
复制代码
5. 回滚 Deployment

  1. kubectl rollout undo deployment/myapp-deployment
复制代码
6. 查看更新汗青

  1. kubectl rollout history deployment/myapp-deployment
复制代码
7. 扩缩容

  1. kubectl scale deployment/myapp-deployment --replicas=5
复制代码
8. 删除 Deployment

  1. kubectl delete deployment/myapp-deployment
复制代码
Deployment 的适用场景


  • 无状态应用

    • 例如 Web 服务器、API 服务等。
    • 每个 Pod 是独立的,不依赖本地存储或状态。

  • 滚动更新

    • 必要无缝更新应用版本,制止停机。

  • 主动恢复

    • 当 Pod 失败时,Deployment 会主动创建新的 Pod 更换。

  • 多副本负载均衡

    • 通过 Service 将流量负载均衡到多个 Pod。

总结



  • Deployment 是 Kubernetes 中用于管理无状态应用的核心资源。
  • 它支持副本管理、滚动更新、回滚和健康查抄等功能。
  • 通过声明式配置,用户可以轻松界说和管理应用的期望状态。
  • 适用于必要高可用性、无缝更新和主动恢复的场景。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表