【问题标题】:What is the need of defining .spec.selectors in Kubernetes Deployment.yaml file?在 Kubernetes Deployment.yaml 文件中定义 .spec.selectors 需要什么?
【发布时间】:2021-12-06 03:00:55
【问题描述】:

.spec.selector 字段定义了 Deployment 如何找到要管理的 Pod。但是我们还在模板中定义了标签,那么我们使用 .spec.selectors 字段获得的额外内容是什么,因为部署也可以使用模板中定义的标签找到要管理的 Pod?

在下面的代码中,带有“标签 occloud.oracle.com/open-network-policy:allow”的 pod 如何由部署管理,因为它在 spec.selectors 中没有描述

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cheeseshop
spec:
  replicas: 1
  progressDeadlineSeconds: 180
  selector:
     matchLabels:
       app.kubernetes.io/name: tutorial
       app.kubernetes.io/component: cheeseshop
  template:
     metadata:
       labels:
         app.kubernetes.io/name: tutorial
         app.kubernetes.io/component: cheeseshop
         occloud.oracle.com/open-network-policy: allow
       name: cheeseshop
   

【问题讨论】:

    标签: kubernetes yaml google-kubernetes-engine kubernetes-pod kubernetes-deployment


    【解决方案1】:

    spec.seletor 字段由 Deployment/Replicaset 控制器使用。它必须是podTemplate 中指定的标签的子集。这就是为什么您的 pod 中可能有额外的标签。但它们仍将由部署管理。

    spec.selector 也用于检查任何现有的ReplicaSet 是否已经匹配这些条件。如果Deployment controller 发现了一个孤儿ReplicaSet,它将被部署使用而不是创建一个新的。 见https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/deployment/deployment_controller.go#L222

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 2019-12-31
      相关资源
      最近更新 更多