为了我的学习目的,我试图对replicaSet做一些研究。我成功地用replicaSet创建了一个matchLabels。为了测试matchExpression选择器,我首先创建了一个pod,然后创建了一个新的副本集,以测试副本集是否能够检查正在运行的豆荚中的标签。但这是错误的失败。以下是我迄今为止所做的。
中指定的标签相匹配。
在第二步之后,我得到了错误。下面是YAML文件和错误。你能帮我理解一下这个问题吗?
这是豆荚的定义。
apiVersion: v1
kind: Pod
metadata:
name: nginx-app
labels:
tier: frontend1
spec:
containers:
- name: nginx-c
image: nginx这是复制集定义. Here
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-2
spec:
replicas: 2
selector:
matchExpressions:
- {key: tier, operator: In, values: [frontend1]}
template:
metadata:
labels:
tier: nginx
spec:
containers:
- name: nginx
image: nginx创建副本集时出错:
主$ kubectl创建-f /root/复制集-finition.yaml
ReplicaSet“复制集-2”无效: spec.template.metadata.labels:无效值: match {“tier”:“nginx”}:selector与模板labels不匹配。
发布于 2020-02-12 09:00:53
您能否通过更改模板部分中的标签来尝试使用以下内容。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-2
spec:
replicas: 2
selector:
matchExpressions:
- {key: tier, operator: In, values: [frontend1]}
template:
metadata:
labels:
tier: frontend1
spec:
containers:
- name: nginx
image: nginx发布于 2020-02-13 09:24:44
若要使用matchExpressions使pod落入新创建的ReplicaSet的范围,您必须在RS中使用已经创建的pod中定义的相同标签,或者必须在表达式中添加其他标签,如下所示:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-2
spec:
replicas: 2
selector:
matchExpressions:
- key: tier
operator: In
values:
- frontend1
- nginx
template:
metadata:
labels:
tier: nginx
spec:
containers:
- name: nginx
image: nginx这样,RS将认识到已经存在的pod是它自己的,并且只创建一个额外的pod来满足在replicas字段中定义的需求。
https://stackoverflow.com/questions/60184469
复制相似问题