如何解决Kubernetes 未加载 mongo 部署 “无效值......字段是不可变的”
在我的微服务项目上运行 skaffold dev
时出现以下错误。我直接从微服务教程中提取了代码,但仍然出现错误:
The Deployment "orders-mongo-depl" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"orders-mongo"},MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
kubectl apply: exit status 1
这是我的“orders-mongo-depl.yaml”文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: orders-mongo-depl
spec:
replicas: 1
selector:
matchLabels:
app: orders-mongo
template:
metadata:
labels:
app: orders-mongo
spec:
containers:
- name: orders-mongo
image: mongo
---
apiVersion: v1
kind: Service
metadata:
name: orders-mongo-srv
spec:
selector:
app: orders-mongo
ports:
- name: db
protocol: TCP
port: 27017
targetPort: 27017
这是我的 skaffold.yaml 文件
apiVersion: skaffold/v2alpha3
kind: Config
deploy:
kubectl:
manifests:
- ./infra/k8s/*
build:
local:
push: false
artifacts:
- image: stephengrider/auth
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.ts'
dest: .
- image: stephengrider/client
context: client
docker:
dockerfile: Dockerfile
sync:
manual:
- src: '**/*.js'
dest: .
- image: stephengrider/tickets
context: tickets
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.ts'
dest: .
- image: stephengrider/orders
context: orders
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.ts'
dest: .
我尝试过重新启动 skaffold,删除并重新启动 Minikube,在 virtualbox 和 docker 之间更改 minikube 驱动程序,并重新启动我的计算机。我使用的是最新版本的 ubuntu,并且拥有最新的 minikube、kubernetes 和 docker。
解决方法
将此作为评论中的答案发布,因为它解决了问题。
简答
要清理所有部署和对象,应发出以下命令:
skaffold delete
更多细节
在开发和测试期间创建对象。当在配置或对象本身内完成任何更改时,会触发错误,例如
The Deployment "orders-mongo-depl" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"orders-mongo"},MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
在 kubernetes 中的简短测试表明,在服务或开发中更改 selector
会产生完全相同的错误,如果不清楚差异来自何处,则需要更正清单/对象或重置 skaffold
中的部署。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。