考虑一下:豆荚是not由部署直接管理,但部署管理 ReplicaSet。
这可以使用以下方法进行验证
kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-d-5b686ccd46 3 3 3 74s
nginx-d2-7c76fbbbcb 3 3 0 74s
您可以通过指定选择器来选择要考虑将哪些 pod 用于副本集或部署。除此之外,每个部署都会添加自己的标签,以便能够区分哪些 Pod 由自己的副本集管理,哪些由其他副本集管理。
您也可以检查一下:
kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-d-5b686ccd46-7j4md 1/1 Running 0 4m app=mynginx,pod-template-hash=5b686ccd46
nginx-d-5b686ccd46-9j7tx 1/1 Running 0 4m app=mynginx,pod-template-hash=5b686ccd46
nginx-d-5b686ccd46-zt4ls 1/1 Running 0 4m app=mynginx,pod-template-hash=5b686ccd46
nginx-d2-5b686ccd46-ddcr2 1/1 Running 0 75s app=mynginx,pod-template-hash=5b686ccd46
nginx-d2-5b686ccd46-fhvm7 1/1 Running 0 79s app=mynginx,pod-template-hash=5b686ccd46
nginx-d2-5b686ccd46-q99ww 1/1 Running 0 83s app=mynginx,pod-template-hash=5b686ccd46
这些将作为匹配标签添加到副本集中:
spec:
replicas: 3
selector:
matchLabels:
app: mynginx
pod-template-hash: 5b686ccd46
因为即使这些都是相同的,您也可以检查 Pod 并看到也有一个所有者参考:
kubectl get pod nginx-d-5b686ccd46-7j4md -o yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2021-10-28T14:53:17Z"
generateName: nginx-d-5b686ccd46-
labels:
app: mynginx
pod-template-hash: 5b686ccd46
name: nginx-d-5b686ccd46-7j4md
namespace: default
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: nginx-d-5b686ccd46
uid: 7eb8fdaf-bfe7-4647-9180-43148a036184
resourceVersion: "556"
有关这方面的更多信息可以在这里找到:https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/ https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/
因此,部署(和副本集)可以消除哪些 pod 由哪些管理的歧义,并且每个 pod 都确保所需的副本数量。