如何在单个 openshift yaml 模板中拥有多种对象类型?

rak*_*ian 3 yaml openshift kubernetes

这是单个 PersistentVolumeClaim 的示例模板,名称为: claim1

apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
  name: "claim1"
spec:
  accessModes:
    - "ReadWriteOnce"
  resources:
    requests:
      storage: "5Gi"
  volumeName: "pv0001"
Run Code Online (Sandbox Code Playgroud)

如何在同一个模板文件中添加多个 PersistentVolumeClaim。例如添加 claim2

我尝试从它下面复制粘贴相同的模板并将 claim1 更改为 claim2 但在 openshift UI 中,在导入模板时它给出了一个警告:重复映射键类型:PersistentVolumeClaim

更新:我已经尝试使用---评论中提到的。但这会Expected a single document in the stream but found more在导入 yaml 时在 openshift UI中引发错误

Iak*_*ias 6

要分离对象,您需要添加的是---

是的,正是这个:

---
Run Code Online (Sandbox Code Playgroud)

例如

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: replicaset-example-webapp-0-5
spec:
  selector:
    matchLabels:
      mylabel: mywebapp
  replicas: 6
  template:
    metadata:
      labels:
        mylabel: mywebapp
    spec:
      containers:
        - name: pod-example-0-5
          image: richardchesterwood/k8s-fleetman-webapp-angular:release0-5
---
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: replicaset-example-webapp-0
spec:
  selector:
    matchLabels:
      mylabel: mywebapp
  replicas: 2
  template:
    metadata:
      labels:
        mylabel: mywebapp
    spec:
      containers:
        - name: pod-example-0
          image: richardchesterwood/k8s-fleetman-webapp-angular:release0
---
apiVersion: v1
kind: Pod
metadata:
  name: just-a-queue
  labels:
    mylabelname: myqueueapp
spec:
  containers:
  - name: queue-app-container
    image: richardchesterwood/k8s-fleetman-queue:release1
Run Code Online (Sandbox Code Playgroud)

你也可以在同一个 yaml 文件下有多个 Kubernetes 对象,你需要做的就是用 --- 分隔它

但是在 OpenShift 中是这样的

实际上,如果创建一组项目,这会起作用:

apiVersion: v1beta3                                                                              
kind: List                                                                                       
items:                                                                                           
  - #list of API objects
Run Code Online (Sandbox Code Playgroud)


Wil*_*don 3

我建议编写一个实际的模板:https://docs.okd.io/latest/dev_guide/templates.html#writing-templates

具体来说,它看起来像:

apiVersion: v1
kind: Template
metadata:
  name: multiple-pvcs
objects:
- apiVersion: "v1"
  kind: "PersistentVolumeClaim"
  metadata:
    name: "claim1"
  spec:
    accessModes:
      - "ReadWriteOnce"
    resources:
      requests:
        storage: "5Gi"
    volumeName: "pv0001"
- apiVersion: "v1"
  kind: "PersistentVolumeClaim"
  metadata:
    name: "claim2"
  spec:
    accessModes:
      - "ReadWriteOnce"
    resources:
      requests:
        storage: "5Gi"
    volumeName: "pv0002"
parameters: []
Run Code Online (Sandbox Code Playgroud)

然后你可以用以下命令创建对象oc process template.yml | oc create -f -