在 Kubernetes 系统中对长时间运行容器的要求是:其主程序需要一直在前台执行。
对于无法改造为前台执行的应用,也可以使用开源工具 Supervisor 辅助进行前台运行的功能。Supervisor 提供了一种可以同时启动多个后台应用,并保持 Supervisor 自身在前台执行的机制,可以满足 Kubernetes 对容器的启动要求。
关于 Supervisor 的安装和使用,请参考官网 http://supervisord.org 的文档说明。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
$ kubectl create -f simple-pod.yaml
pod/nginx created
$ kubectl get pods nginx
NAME READY STATUS RESTARTS AGE
nginx 0/1 ImagePullBackOff 0 35s
apiVersion: v1
kind: Pod
metadata:
name: web-redis-pod
labels:
name: web-redis-pod
spec:
containers:
- name: web
image: web-redis:1.0
ports:
- containerPort: 8890
resources:
limits:
memory: "128Mi"
cpu: "500m"
- name: redis
image: redis:7.0.12
ports:
- containerPort: 6379
resources:
limits:
memory: "128Mi"
cpu: "500m"
属于同一个 Pod 的多个容器应用之间相互访问时仅需要通过 localhost 就可以通信,使得这一组容器被“绑定”在了一个环境中。