嗨,我所有的工作是在Nifi和我试图安装在AKS (Azure kubernetes服务)。使用nifi 1.9.2版本。在AKS中安装它时会给出一个错误
replacing target file /opt/nifi/nifi-current/conf/nifi.properties
sed: preserving permissions for ‘/opt/nifi/nifi-current/conf/sedSFiVwC’: Operation not permitted
replacing target file /opt/nifi/nifi-current/conf/nifi.properties
sed: preserving permissions for ‘/opt/nifi/nifi-current/conf/sedK3S1JJ’: Operation not permitted
replacing target file /opt/nifi/nifi-current/conf/nifi.properties
sed: preserving permissions for ‘/opt/nifi/nifi-current/conf/sedbcm91T’: Operation not permitted
replacing target file /opt/nifi/nifi-current/conf/nifi.properties
sed: preserving permissions for ‘/opt/nifi/nifi-current/conf/sedIuYSe1’: Operation not permitted
NiFi running with PID 28.
The specified run.as user nifi
does not exist. Exiting.
Received trapped signal, beginning shutdown...下面是我的nifi.yml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nifi-core
spec:
replicas: 1
selector:
matchLabels:
app: nifi-core
template:
metadata:
labels:
app: nifi-core
spec:
containers:
- name: nifi-core
image: my-azurecr.io/nifi-core-prod:1.9.2
env:
- name: NIFI_WEB_HTTP_PORT
value: "8080"
- name: NIFI_VARIABLE_REGISTRY_PROPERTIES
value: "./conf/custom.properties"
resources:
requests:
cpu: "6"
memory: 12Gi
limits:
cpu: "6"
memory: 12Gi
ports:
- containerPort: 8080
volumeMounts:
- name: my-nifi-core-conf
mountPath: /opt/nifi/nifi-current/conf
volumes:
- name: my-nifi-core-conf
azureFile:
shareName: my-file-nifi-core/nifi/conf
secretName: my-nifi-secret
readOnly: false我在nifi Dockerfile中进行了一些定制,它复制了一些与我的配置相关的配置文件。当我在我的本地上运行my-azurecr.io/nifi-core-prod:1.9.2对接映像时,它像预期的那样工作,但是当我试图在AKS上运行它时,它会出现上述错误。由于它与权限相关,我在Dockerfile中尝试过用户nifi和root。
在同一资源组中运行的卷my-nifi-core-conf中提供了所有所需的配置文件。由于我使用的是码头启动nifi,我的例外是,不管环境如何,它的行为都是一样的。无论是在我的本地人还是在AKS。但是错误也说用户nifi不存在。官方的nifi图像设置了用户需求。
任何人都可以帮忙,我不能在交互模式下启动容器,而不是在运行模式下启动容器。提前谢谢。
发布于 2019-07-22 12:18:03
我认为你错过了你的库伯内特斯球的安全上下文定义。Nifi在Docker中运行的用户有一个特定的UID和GID,使用您得到的错误消息,我怀疑因为该用户不是在Pod的安全上下文中定义的,所以它没有按预期启动。
看一看关于安全上下文的Kubernetes文档部分,这应该足够让您开始工作了。
我还想看看在测试Kubernetes部署时使用类似Minikube之类的东西,因为Kubernetes在一个容器引擎(如Docker )周围增加了大量的控件。
安全上下文文档:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ Minikube:https://kubernetes.io/docs/setup/learning-environment/minikube/
发布于 2021-09-02 16:57:45
如果您不知道这一点,我就可以在主容器之前运行一个initContainer,并在那里更改目录。
initContainers:
- name: init1
image: busybox:1.28
volumeMounts:
- name: nifi-pvc
mountPath: "/opt/nifi/nifi-current"
command: ["sh", "-c", "chown -R 1000:1000 /opt/nifi/nifi-current"] #or whatever you want to do as root发布于 2021-09-20 12:01:11
更新:不适用于nifi 1.14.0 -适用于1.13.2
https://stackoverflow.com/questions/57141136
复制相似问题