error:error parsing yaml , converting YAML to JSON: yaml: line 20: did not find expected '-' indicator Kubernetes

error:error parsing yaml , converting YAML to JSON: yaml: line 20: did not find expected '-' indicator Kubernetes

大家好我正在尝试在 Kubernetes 中部署 运行s mongoDB 的 nodejs 应用程序。为了实现这一点,我创建了一个名为 k8s 的文件夹,在该文件夹中我有 2 个文件 - deployment_nodejs.yamldeployment_mongo.yaml。在 运行 命令 kubectl apply -f k8s 之后。 我成功创建了 'deployment_nodejs.yaml',但 部署另一个失败 。错误说明如下:'error: error parsing k8s/deployment_mongo.yaml: error converting YAML to JSON: yaml: line 20: did not find expected '-'指示器'。 我意识到错误可能是 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 

第 20 行 spce:,而不是 spec:

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

已尝试根据给定的 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