【问题标题】:error:error parsing yaml , converting YAML to JSON: yaml: line 20: did not find expected '-' indicator Kubernetes错误:解析 yaml 时出错,将 YAML 转换为 JSON:yaml:第 20 行:未找到预期的 '-' 指示符 Kubernetes
【发布时间】:2021-04-05 15:36:46
【问题描述】:

大家好,我正在尝试部署一个在 Kubernetes 中运行 mongoDB 的 nodejs 应用程序。为了做到这一点,我创建了一个名为 k8s 的文件夹,在该文件夹中我有 2 个文件 - deployment_nodejs.yamldeployment_mongo.yaml。运行命令 kubectl apply -f k8s 后。 我成功创建了“deployment_nodejs.yaml”,但我失败部署了另一个。错误内容如下:“错误:解析 k8s/deployment_mongo.yaml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 20 行:未找到预期的“-”指示符”。 我意识到错误可能是 ports 命令,尽管我不明白为什么,因为在我看来我做错了什么。希望你能帮我修复这个错误。

deployment_mongo.yaml 文件的代码:

kind: PersistentVolumeClaim
metadata:
  name: mongo-pvc 
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 256Mi

---
apiVersion: v1
kind: Service
metadata:
  name: mongo
spec:
  selector:
    app: mongo
  ports:
  - port: 27017
    targetPort: 27017
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
spec: 
  selector: 
    matchLabels: 
      app: mongo
  template:
    metadata:
      labels:
        app: mongo
    specs:
      containers:
        - name: mongo
          image: 3.6.23-xenial
          ports:
            - containerPort: 27017
          volumeMounts: 
            - name: storage
            mountPath: /data/db
      volumes:
        - name: storage
        PersistentVolumeClaim:
          claimName: mongo-pvc 

【问题讨论】:

    标签: mongodb kubernetes deployment yaml


    【解决方案1】:

    尝试根据给定的 YAML 生成资源,以下是发现的问题。 第一行没有提到 api-version,volumes 和 volumeMounts 在 Deployment Yaml 中没有正确缩进。 PersistentVolumeClaim(大写的 P 应该是 persistentVolumeClaim),claimName 没有缩进。修复它们或使用下面的清单,你应该很高兴。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mongo-pvc 
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 256Mi
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mongo
    spec:
      selector:
        app: mongo
      ports:
      - port: 27017
        targetPort: 27017
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mongo
    spec: 
      selector: 
        matchLabels: 
          app: mongo
      template:
        metadata:
          labels:
            app: mongo
        spec:
          containers:
            - name: mongo
              image: 3.6.23-xenial
              ports:
                - containerPort: 27017
              volumeMounts: 
                - name: storage
                  mountPath: /data/db
          volumes:
            - name: storage
              persistentVolumeClaim:
                claimName: mongo-pvc 
    
    

    【讨论】:

    • 是的!你是对的人。很抱歉,因为我传递了一些小错误,但我相信错误出在卷中,并且 volumeMounts 没有很好地识别,并且 PersistentVolumeClaim 中的大写 P。非常感谢你
    【解决方案2】:

    你在第 20 行有spce:,而不是spec:

    在部署中,将specs:更改为spec:

    【讨论】:

    • 这并没有解决错误,它一直在出现。谢谢你,因为那是错误的
    • 完全一样-'错误:解析k8s/deployment_mongo.yaml时出错:将YAML转换为JSON时出错:yaml:第20行:没有找到预期的'-'指示符'
    • 我还将specs: 更改为spec: 以及一些错误仍然存​​在的原因。很抱歉,您已经遇到了我所做的 2 个小错误,但错误是一样的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2019-06-26
    相关资源
    最近更新 更多