我使用minikube,下面是示例Yaml文件。尝试创建Pod时出现以下错误。
$ kubectl create -f nginx-rs.yml
error: error validating "nginx-rs.yml": error validating data: ValidationError(ReplicaSet.spec.template.metadata): unknown field "spec" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta; if you choose to ignore these errors, turn validation off with --validate=false
这是我的YAML文件。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
spec:
selector:
matchLabels:
app: nginx-app
replicas: 3
template:
metadata:
name: nginx-pod
labels:
app: nginx-app
tier: frontend
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerport: 80
我用this tool交叉检查了我的YAML,一切看起来都很好。
答案 0 :(得分:0)
模板spec
嵌套在metadata
下,而不是模板本身。
只需将spec
的一个凹痕移回嵌套在模板下:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
spec:
selector:
matchLabels:
app: nginx-app
replicas: 3
template:
metadata:
name: nginx-pod
labels:
app: nginx-app
tier: frontend
spec:
containers:
- name: nginx-container
image: nginx
旁注:最好使用Deployment
而不是ReplicaSet
以避免与端口冲突。 Deployment
对象会自动创建ReplicaSet
,以控制spec
中的容器。