kubernetes--资源调度Selector/Deployment/SatatefulSet/DaemonSet

Label 和 Selector

在 Kubernetes 中,标签选择器(Label Selector) 是一种用于筛选、组织和管理资源(如 Pod、Service、Deployment 等)的机制。通过标签选择器,用户可以将操作精确到具有特定标签的资源对象。

标签选择器在 Kubernetes 中扮演了一个“资源过滤器”的角色,它帮助你在大量资源中找到符合条件的资源,并对它们进行管理。

形象地理解:
  标签(Label):像是每个资源对象上的标签或标记,定义它的属性。
  标签选择器(Label Selector):像是一个查询规则,决定如何找到带有特定标签的资源。

在生产环境中,标签选择器广泛应用于 Service、Deployment、Ingress、ConfigMap 等资源,确保 Kubernetes 能够对特定资源进行精准管理和调度。

标签与选择器的类比

可以将 标签(Label) 类比为每个资源对象上的 标记 或 “贴纸”,用来标记它的属性或用途。而 选择器(Selector) 就像是根据特定的规则去筛选带有这些“贴纸”的资源。

例如:
  '标签' 是 Pod 上的标记,比如 "app: nginx"'选择器' 就像是在说:“我要找到所有带有 app: nginx 这个标记的 Pod”。

这就像在文件夹或笔记本上贴了标签,你可以使用标签筛选出需要的内容。

可以把 Kubernetes 的资源想象成超市里的各种商品,标签 就像商品的价格标签或类别标签,而 标签选择器 是你的购物清单。

  1.商品的标签:
      每个商品(Pod 或 Service 等)都会有标签,比如 “类别: 水果”、“品牌: 苹果” 或 “价格: 便宜”。
      
  2.购物清单(选择器):
      你拿着购物清单说“我要买所有 类别: 水果 的商品”,这样超市系统就能通过选择器找到所有符合条件的商品。

Service 与 Pod 的关联

Kubernetes Service 使用标签选择器来找到它应该管理的 Pod。例如,某个 Service 需要选择属于 app=nginx 的 Pod,那么 Service 配置如下:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

这里的 selector: app: nginx 告诉 Service 只与标签为 app=nginx 的 Pod 进行关联和负载均衡。

Deployment 管理 Pod

Deployment 通过标签选择器选择它要管理的 Pod。比如,我们有一个 Deployment 配置,它会选择所有带有 app=nginx 标签的 Pod,并管理其副本数:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16
        
此 Deployment 会确保始终有 3 个带有 app=nginx 标签的 Pod 运行,并自动修复崩溃的 Pod。

Deployment

在 Kubernetes 中,Deployment 是用于管理应用部署的控制器,它提供了 声明式的更新,帮助用户定义应用的所需状态,并自动进行管理以保持这个状态。Deployment 是更高级别的控制器,它通过管理 ReplicaSet 来控制应用的生命周期,包括自动扩展、滚动更新和回滚等功能。

Deployment概念

Deployment 是生产环境中实现高可用性、弹性扩展和持续交付的重要工具。Deployment 是 Kubernetes 中用于管理应用生命周期的核心控制器,提供了滚动更新、扩展、缩减、副本管理和回滚等功能。

 通过 Deployment,用户可以实现:
  1.高可用性:通过副本管理确保应用的容错性。
  2.滚动更新:逐步替换旧版本,确保服务不中断。
  3.回滚:在更新出现问题时快速回滚到稳定版本。
  4.自动扩展:与 HPA 配合动态调整副本数,优化资源使用。

作用

Deployment 主要有以下几个作用:
  1.管理应用副本:通过管理 ReplicaSet 来确保应用有固定数量的 Pod 副本运行,以实现高可用性和扩展性。
  2.滚动更新:当更新应用时,Deployment 允许滚动更新 Pod 副本,逐步用新的 Pod 替换旧的,确保服务不中断。
  3.回滚:如果新版本出现问题,Deployment 可以轻松回滚到以前的版本。
  4.扩展和缩减:通过简单地修改副本数,Deployment 可以轻松扩展或缩减应用实例。
  5.自愈能力:如果某些 Pod 崩溃或意外终止,Deployment 会通过重新调度确保集群中始终有预期数量的 Pod 副本。

工作机制

Deployment 的工作机制依赖于它对 ReplicaSet 的管理。每次用户创建或更新 Deployment 时,Deployment 控制器会创建或更新对应的 ReplicaSet。ReplicaSet 通过维护指定数量的 Pod 来确保应用的可用性。部署新版本时,Deployment 会更新 ReplicaSet 中的 Pod 模板,并逐步用新的 Pod 替换旧的 Pod,从而实现滚动更新。

工作流程:
  1.初始创建:创建一个 Deployment 时,系统会创建一个 ReplicaSet,并根据配置的副本数量创建相应的 Pod。
  2.更新:更新 Deployment 时,控制器会创建一个新的 ReplicaSet,并开始逐步替换旧 ReplicaSet 中的 Pod。
  3.回滚:如果新版本出现问题,用户可以指示 Deployment 回滚到以前的版本,控制器会自动恢复到旧的 ReplicaSet。
  4.扩展与缩减:可以随时调整副本数量以增加或减少工作负载的处理能力。

YAML 配置

简单的 Deployment YAML 配置示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  rep
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值