如何将所有 kubernetes 对象包含到一个文件中
How to include all kubernetes objects into one file
假设我有两个多容器 pods 和用于将 pods 暴露给集群的服务。我还有 Replication controller 用于随时维护 pods 的数量。
上面的集群是一个简单的例子。此时我有两个 pod 文件、两个服务文件和两个 RC 文件。这使得文件管理变得困难。
我知道所有文件都可以放在一个目录中,然后使用 kubectl create -f directory 在一个命令中执行整个过程。但是,我觉得文件管理是一项开销。有没有像 docker-compose.yml 这样的东西,我们可以在一个文件中包含所有 pods。
我想知道在生产中使用 kubernetes 的最佳实践。在生产中更改许多文件似乎不是一个好主意。
您可以使用三重破折号或列表资源,如以下示例所示:
示例:
列表
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
假设我有两个多容器 pods 和用于将 pods 暴露给集群的服务。我还有 Replication controller 用于随时维护 pods 的数量。
上面的集群是一个简单的例子。此时我有两个 pod 文件、两个服务文件和两个 RC 文件。这使得文件管理变得困难。
我知道所有文件都可以放在一个目录中,然后使用 kubectl create -f directory 在一个命令中执行整个过程。但是,我觉得文件管理是一项开销。有没有像 docker-compose.yml 这样的东西,我们可以在一个文件中包含所有 pods。
我想知道在生产中使用 kubernetes 的最佳实践。在生产中更改许多文件似乎不是一个好主意。
您可以使用三重破折号或列表资源,如以下示例所示:
示例:
列表
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