前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes运维之容器编排Deployment详解

Kubernetes运维之容器编排Deployment详解

作者头像
王先森sec
发布2023-04-24 17:13:05
1850
发布2023-04-24 17:13:05
举报
文章被收录于专栏:王先森王先森

Deployment介绍

官方介绍

一个 Deployment 为 Pods 和 ReplicaSets提供声明式的更新能力

负责描述 Deployment 中的 目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态, 使其变为期望状态。你可以定义 Deployment 以创建新的ReplicaSet,或删除现有 Deployment, 并通过新的 Deployment 收养其资源。

而是通过管理ReplicaSet来间接管理pod,即:deployment管理ReplicaSet,ReplicaSet管理pod。所以Deployment比ReplicaSet的功能更强大。

一个Deployment产生三个资源:

  • Deployment资源所有功能
  • ReplicaSet资源的所有功能
  • POD资源

Deployment控制RS,RS控制POD副本数 Kubernetes官方强烈建议避免直接使用ReplicaSet,而应该通过Deployment来创建RS和Pod。

Deployment资源清单详解

代码语言:javascript
复制
apiVersion: apps/v1          # 版本号
kind: Deployment             # 类型
metadata:                    # 元数据
  name:                      # deploy名称,不能使用大写(遵循域名编写规范)
  namespace:                 # 所属命名空间
  labels:                    # 标签
    controller: deploy
spec:                        # 详情描述
  replicas:                  # 期望的数量(副本数量)
  revisionHistoryLimit:      # 保留历史版本,默认是10
  paused:                    # 暂停部署,默认是false
  progressDeadlineSeconds:   # 部署超时时间(s),默认是600
  minReadySeconds: 10        # 这个POD 10S以后才会认为是read状态,影响多久杀死旧的POD.
  strategy:                  # 部署策略,指定新策略
    type: RollingUpdates     # 更新策略,Recreate重新创建、RollingUpdates滚动升级。
    rollingUpdate:           # 详细滚动更新策略
      maxSurge:              # 最大可以存在的副本数,可以为百分比,也可以为整数
      maxUnavaliable:        # 最大不可用状态的pod的最大值,可以为百分比,也可以为整数
  selector:                  # 选择器,通过它指定该控制器管理哪些pod(必须字段)。
    matchLabels:             # Labels匹配规则,要与模板中Labels相匹配
       app: nginx-pod        # 和模板template里面POD标签必须一致。
    matchExpressions:        # 匹配表达式规则,不常用。
      - {key: app, operator: In, values: [nginx-pod]}
      # In: 表示key指定标签的值是在个集合内的
      # NotIn:表示key指定标签的值不是在这个集合内的
      # Exists:只要有key标签即可,不用管值是多少
      # DoesNotExist:只要Pod上没有指定标签,不用管值是多少
  template:                  # 模板,当副本数量不足时,会根据下面的创建pod
    metadata:                # POD的metadata。
        labels:
          app: nginx-pod     # 和selector标签必须一致
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80  

创建Deployment

下面是 Deployment 示例。其中创建了一个 ReplicaSet,负责启动三个 nginx Pods:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Deployment介绍
  • Deployment资源清单详解
  • 创建Deployment
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档