You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Minikube的K8S集群中正确部署Apache NiFi?

在Minikube上部署Apache NiFi集群的正确步骤

一、先解决ZooKeeper Pod Pending问题

你的zk-1处于Pending状态,核心原因是Minikube默认分配的CPU/内存资源不足以支撑ZooKeeper集群,先扩容Minikube资源:

minikube stop
minikube start --cpus=4 --memory=8192

重新部署ZooKeeper并等待所有Pod就绪:

kubectl delete -f https://k8s.io/examples/application/zookeeper/zookeeper.yaml
kubectl apply -f https://k8s.io/examples/application/zookeeper/zookeeper.yaml
# 实时监控Pod状态,直到所有zk-* Pod都显示Running
kubectl get pods -w

二、选择正确的NiFi镜像

不要使用第三方私有镜像,直接采用Apache官方维护的镜像,格式为apache/nifi:<版本号>,建议选用最新稳定版(比如apache/nifi:1.26.0,可根据官网更新调整版本)。

三、使用适配K8S新版本的NiFi部署配置

你提供的旧YAML存在API版本过时、配置冗余、资源规划不合理等问题,以下是修正后的生产级配置(用StatefulSet替代Deployment,更适合NiFi集群的稳定网络需求):

nifi-statefulset.yaml

# NiFi 服务配置
apiVersion: v1
kind: Service
metadata:
  name: nifi-service
spec:
  selector:
    app: nifi
  ports:
  - protocol: TCP
    targetPort: 8080
    port: 8080
    name: ui
  - protocol: TCP
    targetPort: 9088
    port: 9088
    name: node-protocol
  - protocol: TCP
    targetPort: 8888
    port: 8888
    name: s2s
  type: NodePort  # Minikube环境用NodePort更易访问,LoadBalancer需额外配置
---
# NiFi StatefulSet 集群配置
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nifi
spec:
  serviceName: nifi-service
  replicas: 2
  selector:
    matchLabels:
      app: nifi
  template:
    metadata:
      labels:
        app: nifi
    spec:
      containers:
      - name: nifi
        image: apache/nifi:1.26.0
        ports:
        - containerPort: 8080
          name: http
        - containerPort: 9088
          name: node-protocol
        - containerPort: 8888
          name: s2s
        resources:
          requests:
            cpu: "1"
            memory: "4Gi"
          limits:
            cpu: "2"
            memory: "6Gi"
        env:
        - name: NIFI_CLUSTER_IS_NODE
          value: "true"
        - name: NIFI_CLUSTER_NODE_PROTOCOL_PORT
          value: "9088"
        - name: NIFI_ELECTION_MAX_CANDIDATES
          value: "2"
        - name: NIFI_ZK_CONNECT_STRING
          value: "zk-0.zk-hs.default.svc.cluster.local:2181,zk-1.zk-hs.default.svc.cluster.local:2181,zk-2.zk-hs.default.svc.cluster.local:2181"
        - name: NIFI_WEB_HTTP_PORT
          value: "8080"
        - name: NIFI_S2S_PORT
          value: "8888"

四、部署NiFi的终端命令顺序

  1. 将上述配置保存为nifi-statefulset.yaml文件
  2. 执行部署命令:
kubectl apply -f nifi-statefulset.yaml
  1. 监控Pod启动状态,直到所有NiFi Pod进入Running:
kubectl get pods -w
  1. 获取NiFi UI的访问端口:
kubectl get service nifi-service

找到ui对应的NodePort(例如30080),再获取Minikube节点IP:

minikube ip

最终访问地址:http://<minikube-ip>:<node-port>

五、集群验证

进入NiFi UI后,点击右上角集群图标,确认所有节点已成功加入集群;可创建简单数据流(如GenerateFlowFile -> LogAttribute)验证功能正常。

内容的提问来源于stack exchange,提问作者codelifevcd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:10:29