我写下了一个简单的Deploymnet yaml,但由于错误而失败
kubectl create -f deployment.yaml
error: error validating "deployment.yaml": error validating data: the server could not find the requested resource; if you choose to ignore these errors, turn validation off with --validate=false
这曾经在以前的版本中起作用,如果我打开--validate = false,它仍然有帮助,但是我想了解为什么会看到错误。
我的deployment.yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd-deployment
labels:
app: httpd
spec:
replicas: 1
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: httpd:latest
ports:
- containerPort: 80
resources:
requests:
cpu: "0.3"
memory: "500Mi"
我正在minikube上运行,而minikube版本是: minikube版本:v1.2.0
对于创建部署yaml文件的新版本,我们是否需要遵循任何标准。
除了这些警告外,没有显示任何错误,因此进行故障排除正变得很痛苦。
因此,如果有什么可以帮助我解决的问题,请您帮忙。
谢谢
答案 0 :(得分:2)
这是kubectl验证将要发送到API服务器而不是Minikube本身的问题。
错误在于缩进,因为cpu
和memory
属性应该嵌套在请求中,并且不在资源中:
spec:
containers:
- name: httpd
image: httpd:latest
ports:
- containerPort: 80
resources:
requests:
cpu: "0.3"
memory: "500Mi"
我已经使用kubectl v1.15.0对其进行了测试,并且该错误已正确显示:
$ kubectl apply -f test.yaml
$ error: error validating "test.yaml": error validating data: [ValidationError(Deployment.spec.template.spec.containers[0].resources): unknown field "cpu" in io.k8s.api.core.v1.ResourceRequirements, ValidationError(Deployment.spec.template.spec.containers[0].resources): unknown field "memory" in io.k8s.api.core.v1.ResourceRequirements]; if you choose to ignore these errors, turn validation off with --validate=false