在单部署Kubernetes中运行带有节点应用程序的Worker



我有一个node.js应用程序和一个侦听RabbitMQ事件的工作程序。我在Kubernetes上有我的应用程序。我正在尝试看看是否有一种方法可以优化我的部署,这样我就可以在同一部署中运行我的应用程序和工作程序,因为我目前必须使用相同的docker映像创建不同的部署来运行我的部署和工作程序。

apiVersion: apps/v1
kind: Deployment
metadata:
name: xxx-service
spec:
replicas: 1
selector:
matchLabels:
app: xxx-service
template:
metadata:
labels:
app: xxx-service
spec:
containers:
- name: xxx-service
image: image:latest
ports:
- containerPort: 3004
env:
- name: PORT
value: '3004'
- name: SERVICE_NAME
value: 'xxx-service'
- name: WORKER_PORT
value: '3014'
imagePullPolicy: Always
readinessProbe:
httpGet: # make an HTTP request
port: 3004 # port to use
path: / # endpoint to hit
scheme: HTTP # or HTTPS
initialDelaySeconds: 180 # how long to wait before checking
periodSeconds: 20 # how long to wait between checks
successThreshold: 2 # how many successes to hit before accepting
failureThreshold: 3 # how many failures to accept before failing
timeoutSeconds: 2 # how long to wait for a responses

然后为我的员工进行另一次部署

apiVersion: apps/v1
kind: Deployment
metadata:
name: xxx-service-worker
spec:
replicas: 1
selector:
matchLabels:
app: xxx-service-worker
template:
metadata:
labels:
app: xxx-service-worker
spec:
containers:
- name: xxx-service-worker
image: image:latest
command: ['yarn', 'start:worker']
ports:
- containerPort: 3014
env:
- name: PORT
value: '3014'
- name: SERVICE_NAME
value: 'xxx-service'
- name: WORKER_PORT
value: '3014'

imagePullPolicy: Always

这是最好的方法还是有更好的方法,因为我不想浪费资源。

一般来说,它将同时管理不同的工作者和HTTP,但是的,有些人也管理单个部署。

多容器单部署

在POD中最好使用单个容器,但也可以运行多个容器,因此一个容器工作程序和一个容器HTTP的单个部署。(你必须注意服务和标签(

引用运行多个容器:https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/

代码合并单个Docker镜像

合并worker和Node代码,让Node在大约一段时间内使用异步管理worker进程

最新更新