【问题标题】:How to include all kubernetes objects into one file如何将所有 Kubernetes 对象包含到一个文件中
【发布时间】:2016-12-08 08:14:27
【问题描述】:
假设我有两个多容器 pod 和用于将 pod 暴露给集群的服务。我还有用于随时维护 pod 数量的复制控制器。
上面的集群是一个简单的例子。在这一点上,我有两个 pod 文件、两个服务文件和两个 RC 文件。这使得文件管理变得困难。
我知道所有文件都可以放在一个目录中,并使用 kubectl create -f directory 在单个命令中执行整个操作。但是,我觉得文件管理是一种开销。有没有类似 docker-compose.yml 的东西,我们可以将所有 pod 包含在一个文件中。
我想知道在生产中使用 Kubernetes 的最佳实践。在生产环境中更改许多文件似乎不是一个好主意。
【问题讨论】:
标签:
kubernetes
google-cloud-platform
google-kubernetes-engine
【解决方案1】:
您可以使用三个破折号或列表资源,如以下示例所示:
例子:
列表
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