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

Lak*_*kar 1 google-cloud-platform kubernetes google-kubernetes-engine

假设我有两个多容器Pod和将Pod暴露给集群的服务。我还具有用于随时维护Pod数量的Replication控制器。

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

我知道所有文件都可以放在一个目录中,并使用kubectl create -f目录在单个命令中执行整个操作。但是,我觉得文件管理是一项开销。是否有类似docker-compose.yml的文件,我们可以在其中将所有Pod包含在一个文件中。

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

Iva*_*lov 5

您可以在这些示例中使用三点划线或列表资源:

例子:

清单

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
Run Code Online (Sandbox Code Playgroud)

三重破折号

---
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
Run Code Online (Sandbox Code Playgroud)