yaml令人烦恼的问题,我无法克服

时间:2018-10-08 13:10:26

标签: linux kubernetes cloud devops

我不断得到

  

错误:解析httpd-project-last.yaml.backup1时发生错误:转换时发生错误   YAML转换为JSON:yaml:第45行:未找到预期的密钥

。 所以这条线是 密钥:密码 我不知道该怎么办。现在拉扯我的头发一个小时,我一直保持着头发​​。 有提示吗?

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

2 个答案:

答案 0 :(得分:0)

您的配置有很多问题。例如:应该有一个容器部分和一个卷部分。每个容器都将指定一个volumeMount。

首先将定义简化为具有volumeMounts和volume的一个容器,然后考虑添加第二个容器(但保留一个容器部分!查找yaml列表)。

答案 1 :(得分:0)

正如社区指出的那样,您的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,因为我将其保留在那里是为您提供的静态链接。

您可以在此article或直接在Deployments的Kubernetes文档中找到有关如何创建yaml文件的更多信息