我已經在我的集群中啟動并運行了一個 nodered 服務器(自動化工具)。但我想在 nodered 中添加對 Elasticsearch 的支持。
如果我在本地使用物理服務器,我會運行 npm install node-red-contrib-elasticsearch-jd(和我叔叔:-)。
但是我是 kubernetes 的新手,我該怎么做?與ConfigMap? 我猜這個容器還需要安裝 npm 工具。
有小費嗎?
uj5u.com熱心網友回復:
如果你想向正在運行的容器添加一些東西,你可以在你的 Pod 中執行命令,就像在物理服務器上一樣。
kubectl exec -it {target-pod-name} -- npm install node-red-contrib-elasticsearch-jd
但是,上面的命令只是將包添加到容器中,所以當你重新啟動容器時,你需要同樣的程序再次安裝依賴項。
如果你想讓它永久化,你需要創建 Dockerfile 并從你使用的鏡像重新構建一個鏡像。
Dockerfile:
FROM {your-image}
RUN npm install node-red-contrib-elasticsearch-jd
然后執行docker build以構建新映像。如果你使用新的鏡像,它應該和以前一樣作業,但是安裝了一個新的依賴項。
uj5u.com熱心網友回復:
我認為有三種好方法可以解決這個問題。
第一個是在您的 pod/部署檔案中使用postStart處理程式。在您的情況下,它將如下所示:
...
containers:
- name: your-pod
image: your-image
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "npm install node-red-contrib-elasticsearch-jd"]
它會在容器啟動后立即運行command塊中的命令:
Kubernetes 在容器啟動后立即發送 postStart 事件
使用postStart處理程式部署 NGINX 的示例以安裝curl包:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
spec:
selector:
matchLabels:
app: my-nginx
replicas: 2
template:
metadata:
labels:
app: my-nginx
spec:
containers:
- name: my-nginx
image: nginx:1.14.2
ports:
- containerPort: 80
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "apt update && apt -y install curl"]
第二個是在正在運行的容器中運行命令:
kubectl exec -it {your-pod-name} -- npm install node-red-contrib-elasticsearch-jd
這是臨時的(重啟后將沒有包),如果您希望該包在重啟后永久存在,請添加postStart處理程式(如前所述)或構建新的 Docker 映像(如下)。
最后一個,如評論中所建議的,是從以下Dockerfile構建新的 Docker 鏡像:
FROM {your-image-name}
RUN npm install node-red-contrib-elasticsearch-jd
然后您可以將新構建的映像上傳到注冊表并從那里拉取它 - 如果您使用私有注冊表,您需要通過添加憑據來配置 Kubernetes,并在 pod/部署檔案中參考它們。
uj5u.com熱心網友回復:
第一種方法應該是使用內置于 Node-RED 中的 Palette Manager 來安裝節點。您可以從編輯器右上角的選單中訪問它。
如果您已將卷安裝到/data容器的目錄中,那么這在容器重新啟動時應該是持久的。
如果您希望容器的所有實體都預先安裝節點,那么您需要擴展官方 Node-RED 容器(或構建一個完全自定義的容器)。
使用以下 Dockerfile 構建容器應該可以作業,但是如果您需要添加任何本地 pre-req,請務必記住基礎容器是構建在 Alpine 容器上的
FROM nodered/node-red
RUN npm install node-red-contrib-elasticsearch-jd
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395432.html
標籤:弹性搜索 Kubernetes 节点红色
