Spring boot 在Kubernetes中验证部署错误

Spring boot 在Kubernetes中验证部署错误,spring-boot,kubernetes,kubectl,Spring Boot,Kubernetes,Kubectl,我尝试在Kubernetes集群中部署带有MySQL数据库的生产者服务应用程序。当我尝试部署producer-app时,抛出了以下验证错误 error: error validating "producer-deployment.yml": error validating data: apiVersion not set; if you choose to ignore these errors, turn validation off with --validate=fa

我尝试在Kubernetes集群中部署带有MySQL数据库的
生产者服务
应用程序。当我尝试部署
producer-app
时,抛出了以下验证错误

error: error validating "producer-deployment.yml": error validating data: apiVersion not set; if you choose to ignore these errors, turn validation off with --validate=false
生产者部署.yml

apiVerion: v1
kind: Service
metadata:
  name: producer-app
  labels:
    name: producer-app
spec:
  ports:
    -nodePort: 30163
    port: 9090
    targetPort: 9090
    protocol: TCP
  selector:
    app: producer-app
  type: NodePort

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: producer-app
spec:
  selector:
    matchLabels:
      app: producer-app
  replicas: 3
  template:
    metadata:
      labels:
        app: producer-app
    spec:
      containers:
        - name: producer
          image: producer:1.0
          ports:
            - containerPort: 9090
          env:
            - name: DB_HOST
              valueFrom:
               configMapKeyRef:
                name: db-config
                key: host
            - name: DB_NAME
              valueFrom:
               configMapKeyRef:
                name: db-config
                key: name
            - name: DB_USERNAME
              valueFrom:
               secretKeyRef:
                name: db-user
                key: username
            - name: DB_PASSWORD
              valueFrom:
               secretKeyRef:
                name: db-user
                key: password
我试图在配置文件中找到错误或打字错误,但仍然无法找到。
producer deployment.yml文件有什么问题

  • 请更改producer-deployment.yml中的第一行。字母s不见了

蜂王:v1


apiVersion:v1

第一行有一个输入错误:“apiVerion”应该是“apiVersion”。

多个问题:

  • 它将是
    服务中的
    apiVersion:v1
    而不是
    apivirion:v1

  • 错误的
    规范端口
    形成
    服务
    。由于
    节点端口
    端口
    目标端口
    协议
    作为列表列在
    端口
    下,但您的构成不正确

  • 您的服务yaml应如下所示:

    apiVersion: v1
    kind: Service
    metadata:
      name: producer-app
      labels:
        name: producer-app
    spec:
      ports:
        - nodePort: 30163
          port: 9090
          targetPort: 9090
          protocol: TCP
      selector:
        app: producer-app
      type: NodePort
    
    因此,您的总体
    yaml
    应该是:

    apiVersion: v1
    kind: Service
    metadata:
      name: producer-app
      labels:
        name: producer-app
    spec:
      ports:
        - nodePort: 30163
          port: 9090
          targetPort: 9090
          protocol: TCP
      selector:
        app: producer-app
      type: NodePort
    
    ---
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: producer-app
    spec:
      selector:
        matchLabels:
          app: producer-app
      replicas: 3
      template:
        metadata:
          labels:
            app: producer-app
        spec:
          containers:
            - name: producer
              image: producer:1.0
              ports:
                - containerPort: 9090
              env:
                - name: DB_HOST
                  valueFrom:
                    configMapKeyRef:
                      name: db-config
                      key: host
                - name: DB_NAME
                  valueFrom:
                    configMapKeyRef:
                      name: db-config
                      key: name
                - name: DB_USERNAME
                  valueFrom:
                    secretKeyRef:
                      name: db-user
                      key: username
                - name: DB_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: db-user
                      key: password
    
    您的第一个错误(不止一个)只是将您指向应该开始调查的地方

    error validating data: apiVersion not set;
    
    正如您所知,kubernetes中的每个对象都有自己的apiVersion。 检查,特别是部件:

    在要创建的Kubernetes对象的.yaml文件中,您将 需要为以下字段设置值:

    apiVersion
    -您正在使用哪个版本的Kubernetes API 创建此对象

    种类
    -要创建什么类型的对象

    元数据
    -帮助唯一标识对象的数据,包括 名称字符串、UID和可选名称空间

    spec
    -您想要什么状态 对于对象,对象等级库的精确格式与 每个Kubernetes对象,并包含特定于该对象的嵌套字段 反对

    Kubernetes API参考可以帮助您找到
    spec
    格式 对于可以使用Kubernetes创建的所有对象

    你可以查一下

    这些值是必需的,没有它们您将无法创建对象。所以,请下次仔细阅读你收到的错误