如何将所有kubernetes对象都包含在一个文件中

时间:2016-12-08 08:14:28

标签: kubernetes google-cloud-platform google-kubernetes-engine

假设我有两个多容器窗格和服务,用于将窗格暴露给群集。我还有Replication控制器,可以随时保持pod的数量。

以上群集是一个简单的例子。在这一点上,我有两个pod文件,两个服务文件和两个RC文件。这使文件管理变得困难。

我知道所有文件都可以放在一个目录中,并使用 kubectl create -f directory 在一个命令中执行整个操作。但是,我觉得文件管理是一个开销。有没有像docker-compose.yml这样的东西,我们可以将所有pod包含在一个文件中。

我想知道在生产中使用kubernetes的最佳实践。在生产中更改许多文件似乎不是一个好主意。

1 个答案:

答案 0 :(得分:4)

您可以使用三重破折号或列表资源,如下例所示:

的示例:

<强>列表

apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: Service
  metadata:
    name: list-service-test
  spec:
    ports:
    - protocol: TCP
      port: 80
    selector:
      app: list-deployment-test
- apiVersion: extensions/v1beta1
  kind: Deployment
  metadata:
    name: list-deployment-test
    labels:
      app: list-deployment-test
  spec:
    replicas: 1
    template:
      metadata:
        labels:
          app: list-deployment-test
      spec:
        containers:
          - name: nginx
            image: nginx

三次破折号

---
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: redis
    redis-sentinel: "true"
    role: master
  name: redis-master
spec:
  containers:
    - name: master
      image: kubernetes/redis:v1
      env:
        - name: MASTER
          value: "true"
      ports:
        - containerPort: 6379
      resources:
        limits:
          cpu: "0.5"
      volumeMounts:
        - mountPath: /redis-master-data
          name: data
    - name: sentinel
      image: kubernetes/redis:v1
      env:
        - name: SENTINEL
          value: "true"
      ports:
        - containerPort: 26379
  volumes:
    - name: data
      emptyDir: {}
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: redis-proxy
    role: proxy
  name: redis-proxy
spec:
  containers:
  - name: proxy
    image: kubernetes/redis-proxy:v1
    ports:
    - containerPort: 6379
      name: api