繁体   English   中英

在 JSON 中允许多个 K8s 资源

[英]Allow multiple K8s resources in a JSON

我有一个 YAML 文件,其中包含多个资源部署和服务。

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: petclinic
  name: petclinic
spec:
  replicas: 1
  selector:
    matchLabels:
      app: petclinic
  strategy: {}
  template:
    metadata:
      labels:
        app: petclinic
    spec:
      containers:
        - image: arey/springboot-petclinic
          name: springboot-petclinic
          resources: {}
          ports:
            - containerPort: 8080
status: {}
---
apiVersion: v1
kind: Service
metadata:
  name: petclinic
spec:
  type: LoadBalancer
  selector:
    app: petclinic
  ports:
    - port: 8080
      targetPort: 8080
      protocol: TCP
      name: http

我正在用 JSON 创建一个类似的文件。 我能够使用 JSON 创建部署资源并成功部署,但是当我尝试包含服务资源时,它失败了。 任何关于我哪里出错的帮助将不胜感激。 以下是 JSON 的以下片段。

{
   "apiVersion": "apps/v1",
   "kind": "Deployment",
   "metadata": {
      "creationTimestamp": null,
      "labels": {
         "app": "petclinic"
      },
      "name": "petclinic"
   },
   "spec": {
      "replicas": 2,
      "selector": {
         "matchLabels": {
            "app": "petclinic"
         }
      },
      "strategy": {},
      "template": {
         "metadata": {
            "labels": {
               "app": "petclinic"
            }
         },
         "spec": {
            "containers": [
               {
                  "image": "arey/springboot-petclinic",
                  "name": "springboot-petclinic",
                  "resources": {},
                  "ports": [
                     {
                        "containerPort": 8080
                     }
                  ]
               }
            ]
         }
      }
   },
   "status": {}
}

{
   "apiVersion": "v1",
   "kind": "Service",
   "metadata": {
        "name": "petclinic"
   },
   "spec": {
      "type": "LoadBalancer",
      "selector": {
       
            "app": "petclinic"
         
      },
        
            "ports": [
               {
                  "port": 8080,
                  "targetPort": 8080,
                  "protocol": "TCP",
                  "name": "http"                   
                  ]
             }     
   }    
}

您的服务资源中存在语法错误( ports数组右括号)。 它应该是:

{
  "apiVersion": "v1",
  "kind": "Service",
  "metadata": {
    "name": "petclinic"
  },
  "spec": {
    "type": "LoadBalancer",
    "selector": {
      "app": "petclinic"
    },
    "ports": [
      {
        "port": 8080,
        "targetPort": 8080,
        "protocol": "TCP",
        "name": "http"
      }
    ]
  }
}

要使文件成为有效的 JSON 文件,您可以将定义包装在List资源中:

{
  "apiVersion": "v1",
  "kind": "List",
  "items": [
    {
      "apiVersion": "v1",
      "kind": "Deployment",
      ...
    },
    {
      "apiVersion": "v1",
      "kind": "Service",
      ...
    }
  ]
}

您可以先使用kubectl应用 yaml,然后使用kubectl get deploy,services -o json > example.json

一个JSON正确的语法是有,两种资源,而不是之间---如您在使用YAML

...
    // deployment
},
{
    // service
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM