.spec.selector 欄位定義了 Deployment 如何找到要管理的 Pod。但是我們也在模板中定義了標簽,那么我們通過 .spec.selectors 欄位獲得的額外內容是什么,因為 Deployment 也可以使用模板中定義的標簽找到要管理的 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
uj5u.com熱心網友回復:
spec.seletor欄位由部署/副本集控制器使用。它必須是 中指定的標簽的子集podTemplate。這就是為什么您的 pod 中可能有其他標簽的原因。但它們仍將由部署管理。
spec.selector還用于檢查是否有任何現有的ReplicaSet已經匹配這些條件。如果Deployment controller找到一個 orphan ReplicaSet,部署將使用它而不是創建一個新的。見https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/deployment/deployment_controller.go#L222
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326797.html
標籤:Kubernetes 雅姆 google-kubernetes-engine Kubernetes-pod kubernetes-部署
