kubernetes - 出现错误 PodSpec.containers: got "map", expected "array" or Container.volumeMounts: got "map", expected "array";
问题描述
我正在尝试开始部署,但出现此错误
error: error validating "httpd-basic-deployment.yaml": error validating data: ValidationError(Deployment.spec.template.spec.containers): invalid type for io.k8s.api.core.v1.PodSpec.containers: got "map", expected "array"; if you choose to ignore these errors, turn validation off with --validate=false
下面的 pod 定义文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ebay-app
spec:
selector:
matchLabels:
environment: dev
app: ebay
replicas: 1
template:
metadata:
labels:
environment: dev
app: ebay
spec:
volumes:
- name: volume
hostPath:
path: /mnt/data
containers:
name: container1-nginx
image: nginx
volumeMounts:
name: volume
mountPath: /var/nginx-data
name: container2-tomcat
image: tomcat
nodeSelector:
boardType: x86vm
我尝试再次列出 cotnainers:
volumes:
- name: volume
hostPath:
path: /mnt/data
containers:
- name: container1-nginx
image: nginx
volumeMounts:
name: volume
mountPath: /var/nginx-data
- name: container2-tomcat
image: tomcat
nodeSelector:
boardType: x86vm
导致不同的错误
error: error validating "httpd-basic-deployment.yaml": error validating data: ValidationError(Deployment.spec.template.spec.containers[0].volumeMounts): invalid type for io.k8s.api.core.v1.Container.volumeMounts: got "map", expected "array"; if you choose to ignore these errors, turn validation off with --validate=false
我究竟做错了什么 ?
解决方案
VolumeMounts 也应该有-
. 它表示数组的开始。如下图所示进行更改。
volumeMounts:
- name: volume
mountPath: /var/nginx-data
查看此示例 yaml以创建具有两个容器并共享相同卷的 pod。在这个例子中,它清楚地在哪里使用-
符号,在哪里不使用。
推荐阅读
- arrays - 快速从字典数组中创建字符串数组
- reactjs - 如何firestore获取数组中具有最低值的文档,然后首先排序最低值
- c - 使用 Doxygen 的 C 库的类图表示
- html - Bootstrap:将两个表放在一个 boostrap 列中
- php - JSON UNESCAPED UNICODE 不适用于 Laravel Nova 管理面板中的文本字段
- firebase-cloud-messaging - Firebase 静默通知不适用于 iOS13
- vidyo - Vidyo.io 相机和麦克风无法在 chrome 上运行
- python - Python - 检查列表中的单词是否是另一个字符串的子字符串
- arrays - 从类型联合创建唯一数组项的联合(打字稿)
- c# - 如何在控制台项目中使用创建 DataContext 实例?