yaml 的烦人问题,我无法克服
Annoying issue with yaml which I cannot overcome
我不断收到
error: error parsing httpd-project-last.yaml.backup1: error converting
YAML to JSON: yaml: line 45: did not find expected key
。
所以这条线是
密钥:密码
我不知道该怎么办。现在我一直在拉头发一个小时。
有什么建议吗?
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: webandstorage
spec:
selector:
matchLabels:
app: apache
replicas: 1 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: apache
spec:
containers:
- name: httpd
image: httpd:latest
volumeMounts:
- name: storage
mountPath: /usr/local/apache2/htdocs/
volumes:
- name: storage
persistentVolumeClaim:
claimName: pvc1
dnsPolicy: ClusterFirst
dnsConfig:
nameservers:
- 8.8.8.8
spec:
containers:
- name: mysql
image: mysql:latest
volumeMounts:
- name: data3
mountPath: /var/lib/mysql
volumes:
- name: storage
persistentVolumeClaim:
claimName: data
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: dbparola
ports:
- protocol: TCP
port:8080
你的配置有不少问题。例如:应该有一个容器部分和一个卷部分。每个容器都会指定一个 volumeMount。
首先将您的定义剥离到只有一个容器,包含 volumeMounts 和卷,然后考虑添加第二个容器(但保留一个容器部分!查找 yaml 列表)。
正如社区指出的那样,您的 yaml 文件中存在一些错误。我已经修复了语法,所以它通过了验证测试。
如果您在配置方面遇到问题,可以随时提出其他问题。
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: webandstorage
spec:
replicas: 1 # tells deployment to run 2 pods matching the template
selector:
matchLabels:
app: apache
template:
metadata:
labels:
app: apache
spec:
containers:
- name: httpd
image: httpd:latest
volumeMounts:
- name: storage
mountPath: /usr/local/apache2/htdocs/
volumes:
- name: storage
persistentVolumeClaim:
claimName: pvc1
dnsPolicy: ClusterFirst
dnsConfig:
nameservers:
- 8.8.8.8
spec:
containers:
- name: mysql
image: mysql:latest
volumeMounts:
- name: data3
mountPath: /var/lib/mysql
volumes:
- name: storage
persistentVolumeClaim:
claimName: data
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: dbparola
ports:
- protocol: TCP
port:8080
您可以在任何 YAML 验证器上在线检查它,对于 example,您可以在这里找到您的 yaml,因为我把它作为静态 link 留在那里。
您可以在此 article or directly in the Kubernetes documentation for Deployments
中找到有关如何创建 yaml 文件的更多信息
我不断收到
error: error parsing httpd-project-last.yaml.backup1: error converting YAML to JSON: yaml: line 45: did not find expected key
。 所以这条线是 密钥:密码 我不知道该怎么办。现在我一直在拉头发一个小时。 有什么建议吗?
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: webandstorage
spec:
selector:
matchLabels:
app: apache
replicas: 1 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: apache
spec:
containers:
- name: httpd
image: httpd:latest
volumeMounts:
- name: storage
mountPath: /usr/local/apache2/htdocs/
volumes:
- name: storage
persistentVolumeClaim:
claimName: pvc1
dnsPolicy: ClusterFirst
dnsConfig:
nameservers:
- 8.8.8.8
spec:
containers:
- name: mysql
image: mysql:latest
volumeMounts:
- name: data3
mountPath: /var/lib/mysql
volumes:
- name: storage
persistentVolumeClaim:
claimName: data
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: dbparola
ports:
- protocol: TCP
port:8080
你的配置有不少问题。例如:应该有一个容器部分和一个卷部分。每个容器都会指定一个 volumeMount。
首先将您的定义剥离到只有一个容器,包含 volumeMounts 和卷,然后考虑添加第二个容器(但保留一个容器部分!查找 yaml 列表)。
正如社区指出的那样,您的 yaml 文件中存在一些错误。我已经修复了语法,所以它通过了验证测试。
如果您在配置方面遇到问题,可以随时提出其他问题。
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: webandstorage
spec:
replicas: 1 # tells deployment to run 2 pods matching the template
selector:
matchLabels:
app: apache
template:
metadata:
labels:
app: apache
spec:
containers:
- name: httpd
image: httpd:latest
volumeMounts:
- name: storage
mountPath: /usr/local/apache2/htdocs/
volumes:
- name: storage
persistentVolumeClaim:
claimName: pvc1
dnsPolicy: ClusterFirst
dnsConfig:
nameservers:
- 8.8.8.8
spec:
containers:
- name: mysql
image: mysql:latest
volumeMounts:
- name: data3
mountPath: /var/lib/mysql
volumes:
- name: storage
persistentVolumeClaim:
claimName: data
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: dbparola
ports:
- protocol: TCP
port:8080
您可以在任何 YAML 验证器上在线检查它,对于 example,您可以在这里找到您的 yaml,因为我把它作为静态 link 留在那里。
您可以在此 article or directly in the Kubernetes documentation for Deployments
中找到有关如何创建 yaml 文件的更多信息