【发布时间】:2021-05-17 05:47:40
【问题描述】:
我有这个部署对象:
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-webserver-nginx
annotations:
description: This is a demo deployment for nginx webserver
labels:
app: deployment-webserver-nginx
spec:
replicas: 3
selector:
matchLabels:
app: deployment-webserver-pods
template:
metadata:
labels:
app: deployment-webserver-pods
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
我对这个 Deployment 对象的理解是,任何带有app:deployment-webserver-pods 标签的 Pod 都会被选中。当然,这个 Deployment 对象是创建了 3 个副本,但是我想像这样显式地再添加一个 Pod,所以我创建了一个 Pod 对象,它的标签为app:deployment-webserver-pods,下面是它的 Pod 定义:
apiVersion: v1
kind: Pod
metadata:
name: deployment-webserver-nginx-extra-pod
labels:
app: deployment-webserver-pods
spec:
containers:
- name: nginx-alpine-container-1
image: nginx:alpine
ports:
- containerPort: 81
我的期望是持续运行的 Deployment Controller 会选择这个新的 Pod,当我选择 kubectl get deploy 时,我会看到 4 个 Pod 正在运行。但这并没有发生。
我什至尝试先用这个标签创建这个 pod,然后创建我的 Deployment,并认为现在可能会选择这个显式的 Pod,但仍然没有发生。
标签和选择器不是这样工作的吗? 我知道我可以通过部署扩展到 4 个副本,但我试图了解如何使用标签和选择器选择 Pod/其他 Kubernetes 对象。
【问题讨论】:
标签: kubernetes google-kubernetes-engine kubernetes-pod kubernetes-deployment