我刚开始学习kubernetes。请帮帮我。
根据我的假设,如果部署中使用的任何具有相同选择器标签的现有运行pod必须由调度器利用,则在我的下面的情况下,当deplyoment对象要基于选择器创建副本集时,它不会被使用。如果我错了,请纠正我,否则请帮我找出哪里错了。
pod.yml
apiVersion: v1
kind: Pod
metadata:
name: web
labels:
type: frontend
spec:
containers:
- name: nginx-container
image: nginx
deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
spec:
template:
metadata:
name: web
labels:
type: frontend
spec:
containers:
- name: nginx-container
image: nginx
selector:
matchLabels:
type: frontend
replicas: 2我先创建了一个pod,然后尝试部署相同类型的pod。
kubectl get pods
NAME READY STATUS RESTARTS AGE
web 1/1 Running 0 22m
web-deployment-89d6bf94f-5dqxj 1/1 Running 0 13m
web-deployment-89d6bf94f-xrngx 1/1 Running 0 21m发布于 2020-11-09 22:22:27
如果您查看由deployment创建的其中一个pod(例如kubectl describe pod web-deployment-89d6bf94f-5dqxj)的描述,您会发现它有额外的标签pod-template-hash,这是由deployment控制器添加到它的底层副本集中的。以下是docs中关于如何以及为什么设置此标签的一小段内容:
此标签可确保部署的子ReplicaSets不会重叠。它是通过对ReplicaSet的PodTemplate进行哈希处理并将生成的哈希用作添加到ReplicaSet选择器、Pod模板标签以及ReplicaSet可能具有的任何现有Pod中的标签值来生成的。
因此,基本上,在部署之外创建的pod不是此部署的副本集的一部分。
发布于 2020-11-08 03:59:17
为什么要尝试通过部署覆盖pod规范?
为什么不直接使用部署呢?
如果您想要编辑pod规范,为什么不直接编辑它,而不是尝试使用部署覆盖它?
https://stackoverflow.com/questions/64731373
复制相似问题