报错:MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable"/>
k8s部署redis报错:MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
在k8s集群中部署redis时报错:
The Deployment "redis" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"redis"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
报错原因:
在同一个命名空间已经部署一个相同name的deployment,之前部署的redis的它deployment名字和这次部署的redis的deployment名字相同,但选择器的标签不同。
已部署的gitlab-redis.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: kube-opslabels:name: redis
spec:selector:matchLabels:name: redistemplate:metadata:labels:name: redisspec:containers:- name: redisimage: sameersbn/redisimagePullPolicy: IfNotPresentports:- name: rediscontainerPort: 6379volumeMounts:- mountPath: /var/lib/redisname: datalivenessProbe:exec:command:- redis-cli- pinginitialDelaySeconds: 30timeoutSeconds: 5readinessProbe:exec:command:- redis-cli- pinginitialDelaySeconds: 5timeoutSeconds: 1volumes:- name: dataemptyDir: {}---
apiVersion: v1
kind: Service
metadata:name: redisnamespace: kube-opslabels:name: redis
spec:ports:- name: redisport: 6379targetPort: redisselector:name: redis
即将部署的prome-redis.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: kube-ops
spec:selector:matchLabels:app: redistemplate:metadata:annotations:prometheus.io/scrape: "true"prometheus.io/port: "9121"labels:app: redisspec:containers:- name: redisimage: redis:4resources:requests:cpu: 100mmemory: 100Miports:- containerPort: 6379- name: redis-exporterimage: oliver006/redis_exporter:latestresources:requests:cpu: 100mmemory: 100Miports:- containerPort: 9121
---
kind: Service
apiVersion: v1
metadata:name: redisnamespace: kube-ops
spec:selector:app: redisports:- name: redisport: 6379targetPort: 6379- name: promport: 9121targetPort: 9121
那么我们需要对prome-redis.yaml 的name进行修改
apiVersion: apps/v1
kind: Deployment
metadata:name: prome-redisnamespace: kube-ops
spec:selector:matchLabels:app: redistemplate:metadata:annotations:prometheus.io/scrape: "true"prometheus.io/port: "9121"labels:app: redis1spec:containers:- name: prome-redisimage: redis:4resources:requests:cpu: 100mmemory: 100Miports:- containerPort: 6379- name: redis-exporterimage: oliver006/redis_exporter:latestresources:requests:cpu: 100mmemory: 100Miports:- containerPort: 9121
---
kind: Service
apiVersion: v1
metadata:name: prome-redisnamespace: kube-ops
spec:selector:app: redisports:- name: redisport: 6379targetPort: 6379- name: promport: 9121targetPort: 9121
修改配置文件后,重新执行
root@ub001:~/k8s/devops/prometheus# kubectl apply -f prome-redis.yaml
deployment.apps/prome-redis created
service/prome-redis created
如果该篇文章对您有一点点帮助,请点个赞👍吧!
更多推荐
k8s部署redis报错:MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immu
发布评论