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

使用NifiKop部署NiFi集群失败,集群无法正常启动

问题:NiFi集群部署后无法启动

按官方流程安装NifiKop并部署NiFi集群,但集群节点Pod未启动,仅能看到NifiKop和ZooKeeper的Pod正常运行。

执行的操作步骤

1. 创建命名空间

kubectl create namespace nifi
kubectl create namespace zookeeper
kubectl create namespace cert-manager

2. 创建自定义StorageClass

cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
parameters:
type: pd-standard
provisioner: kubernetes.io/gce-pd
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
EOF

3. 创建ServiceAccount

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: nifikop
EOF

4. 安装ZooKeeper

helm install nifikop-zk bitnami/zookeeper \
--namespace=nifi \
--set resources.requests.memory=256Mi \
--set resources.requests.cpu=250m \
--set resources.limits.memory=256Mi \
--set resources.limits.cpu=250m \
--set networkPolicy.enabled=true \
--set replicaCount=3 \
--set namespaces={“nifi”}

5. 安装CRDs

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.1.0/cert-manager.yaml
kubectl apply -f https://raw.githubusercontent.com/Orange-OpenSource/nifikop/master/config/crd/bases/nifi.orange.com_nificlusters.yaml
kubectl apply -f https://raw.githubusercontent.com/Orange-OpenSource/nifikop/master/config/crd/bases/nifi.orange.com_nifiusers.yaml
kubectl apply -f https://raw.githubusercontent.com/Orange-OpenSource/nifikop/master/config/crd/bases/nifi.orange.com_nifiusergroups.yaml
kubectl apply -f https://raw.githubusercontent.com/Orange-OpenSource/nifikop/master/config/crd/bases/nifi.orange.com_nifidataflows.yaml
kubectl apply -f https://raw.githubusercontent.com/Orange-OpenSource/nifikop/master/config/crd/bases/nifi.orange.com_nifiparametercontexts.yaml
kubectl apply -f https://raw.githubusercontent.com/Orange-OpenSource/nifikop/master/config/crd/bases/nifi.orange.com_nifiregistryclients.yaml

6. 安装NifiKop

helm install nifikop orange-incubator/nifikop \
--namespace=nifi \
--version="0.4.2-alpha" \
--set resources.requests.memory=256Mi \
--set resources.requests.cpu=250m \
--set resources.limits.memory=256Mi \
--set resources.limits.cpu=250m \
--set namespaces={"nifi"} --skip-crds

7. 创建NiFi集群

cat <<EOF | kubectl create -n nifi -f -
apiVersion: nifi.konpyutaika.com/v1
kind: NifiCluster
metadata:
  name: simplenifi
spec:
  service:
    headlessEnabled: true
  zkAddress: "nifikop-zk-zookeeper:2181"
  zkPath: /simplenifi
  clusterImage: "apache/nifi:1.17.0"
  oneNifiNodePerNode: false
  nodeConfigGroups:
    default_group:
      isNode: true
      serviceAccountName: nifikop
      storageConfigs:
        - mountPath: "/opt/nifi/nifi-current/logs"
          name: logs
          pvcSpec:
            accessModes:
              - ReadWriteOnce
            storageClassName: "local-storage"
            resources:
              requests:
                storage: 10Gi
      resourcesRequirements:
        limits:
          cpu: "2"
          memory: 3Gi
        requests:
          cpu: "1"
          memory: 1Gi
  nodes:
    - id: 1
      nodeConfigGroup: "default_group"
    - id: 2
      nodeConfigGroup: "default_group"
  propagateLabels: true
  nifiClusterTaskSpec:
    retryDurationMinutes: 10
  listenersConfig:
    internalListeners:
      - containerPort: 8080
        type: http
        name: http
      - containerPort: 6007
        type: cluster
        name: cluster
      - containerPort: 10000
        type: s2s
        name: s2s
      - containerPort: 9090
        type: prometheus
        name: prometheus
      - containerPort: 6342
        type: load-balance
        name: load-balance

EOF

当前状态

执行上述操作后,nifi命名空间下仅存在以下Pod:

root@bh-gsn-57-asca-dev-01:~/nifikop# k get pods -n nifi
NAME                      READY   STATUS    RESTARTS   AGE
nifikop-5d6f94854-fjx4q   1/1     Running   0          32m
nifikop-zk-zookeeper-0    1/1     Running   0          39m
nifikop-zk-zookeeper-1    1/1     Running   0          39m
nifikop-zk-zookeeper-2    1/1     Running   0          39m

NiFi集群CR已存在但无节点Pod启动:

root@bh-gsn-57-asca-dev-01:~/nifikop# k get NifiCluster -n nifi
NAME         AGE
simplenifi   19m

排查与解决建议

1. 检查NifiKop控制器日志

NifiKop负责监听NifiClusterCR并创建节点Pod,直接查看日志定位问题:

kubectl logs -n nifi nifikop-5d6f94854-fjx4q -f

重点关注ZooKeeper连接失败、权限不足、存储类绑定失败、CRD版本不兼容等报错。

2. 验证ZooKeeper连通性

确认NifiKop能正常访问ZooKeeper:

kubectl exec -n nifi nifikop-5d6f94854-fjx4q -- nc -zv nifikop-zk-zookeeper 2181

若连接失败,检查ZooKeeper的NetworkPolicy配置(你启用了networkPolicy.enabled=true),确保允许nifi命名空间内的Pod访问ZooKeeper端口。

3. 检查StorageClass与PVC状态

你的StorageClass使用kubernetes.io/gce-pd作为Provisioner,需确认集群是GKE环境且节点有权限创建GCE磁盘。同时检查PVC是否创建:

kubectl get pvc -n nifi

如果PVC处于Pending状态,可能是存储类配置错误或集群资源不足。

4. 确认ServiceAccount权限

nifikop ServiceAccount需要创建Pod、PVC、Service等资源的权限,检查RBAC配置:

kubectl get clusterrole,clusterrolebinding -n nifi | grep nifikop

若缺少权限,可重新安装NifiKop时去掉--skip-crds(让Helm自动配置RBAC),或手动绑定必要的ClusterRole。

5. 检查CRD与NifiKop版本兼容性

你安装的NifiKop是0.4.2-alpha,需确保手动安装的CRD与该版本兼容。建议用Helm自动安装CRD:

helm upgrade nifikop orange-incubator/nifikop \
--namespace=nifi \
--version="0.4.2-alpha" \
--set resources.requests.memory=256Mi \
--set resources.requests.cpu=250m \
--set resources.limits.memory=256Mi \
--set resources.limits.cpu=250m \
--set namespaces={"nifi"}

6. 查看NifiCluster CR详细状态

通过描述CR获取事件和错误提示:

kubectl describe NifiCluster simplenifi -n nifi

重点关注Status字段和Events部分,通常会明确Pod未创建的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:20:22