本文汇总了Flink半托管(基于ACK)常见报错与解决方案。

VVP上传JAR文件失败,报错undefined,应该如何处理?

  • 报错详情
    VVP上上传JAR文件失败,报错undefined: undefined报错
  • 报错原因
    • 上传的JAR文件大小超出了50MB的限制,导致报错。
    • Kubernetes集群的ingress-controller把文件大小限制在了20MB。
  • 解决方法
    • 您可以在OSS控制台页面上传,或者直接使用OSS命令行工具上传JAR文件。
    • 修改kube-system目录下的nginx-configuration文件的proxy-body-size参数,例如设置为50MB。修改后,重启ingress-controller,同时删除kube-system下的nginx-ingress-controller pod,即可解决问题。

VVP上启动作业后,运行失败,应该如何处理?

  • 问题描述

    VVP上启动作业后,运行失败。

  • 排查思路
    1. 在VVP控制台上,查看作业对应的实例ID。jobs
    2. 在pod对应的物理机上执行如下命令:
      1. 查看作业的pod状态
        kubectl  get pod -n  namespace
        说明 namespeace为作业deploymentTarget里面配置的namespace。
      2. 查看对应pod的日志
        • 查看pod的Jobmanager日志。
          kubectl logs job-jobs ID-jobmanager-xxx -n namespace
        • 查看pod的Taskmanager日志。
          kubectl logs job-jobs ID-taskmanager-xxx -n namespace

自建Ingress如何打通Flink半托管(基于ACK)?

  • 报错详情
    在创建Kubernetes集群时,绑定了自建的Ingress后,在Flink半托管页签,单击开发控制台,出现如下报错。无法访问
  • 报错原因

    vvp-xxx namespace下面的Ingress默认使用alicontainer提供的域名。

  • 解决方法
    如果您需要使用自建的ingress-controller,请您提交工单,要求指定集群的alicontainer域名为自建的ingress-controller
    说明
    • 需要您提前申请负载均衡SLB,SLB必须绑定公网IP。
    • 提交工单时,产品名称请选择容器服务
    • 工单描述建议写为:创建了一套nginx-ingress-controller,集群默认的xxx.alicontainer.com域名解析的IP失效,需要重新订正。

如何安装Ingress组件?

  • 报错详情
    Flink半托管(基于ACK)页签,单击开发控制台,出现如下报错。报错信息
  • 报错原因

    在创建K8s集群时,没有选择Ingress

  • 解决方法
    1. 容器服务控制台集群列表页面,单击目标集群操作列中的管理1
    2. 组件管理页面,找到Ingress组件后,单击安装2
    3. 容器服务控制台左侧菜单栏,单击无状态后,选择集群,且命名空间选择kube-system3
      如果出现Ingress组件,则表示组件安装成功。安装成功

如何创建命名空间?

您可以通过以下步骤创建命名空间:
  1. 容器服务控制台左侧菜单栏,单击命名空间,选择VVP集群后,查看VVP自动创建的K8s命名空间。namespace
  2. 在本地新建一个TXT文件,复制如下代码后,替换{{ original-namespace }}{{ target-namespace }}值。
    说明
    • {{ original-namespace }}替换为步骤1获取到的K8s命名空间。
    • {{ target-namespace }}替换为步骤4中的目标命名空间
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: Role
    metadata:
      name: vvp-{{ target-namespace }}-role
    rules:
    - apiGroups: ["apps", "extensions"]
      resources: ["deployments", "daemonsets"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    - apiGroups: [""]
      resources: ["configmaps", "pods", "services", "secrets", "serviceaccounts"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["batch"]
      resources: ["jobs"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    - apiGroups: ["rbac.authorization.k8s.io"]
      resources: ["roles", "rolebindings"]
      verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: RoleBinding
    metadata:
      name: vvp-{{ target-namespace }}-rolebinding
    subjects:
    - kind: ServiceAccount
      name: {{ original-namespace }}-core
      namespace: {{ original-namespace }}
    roleRef:
      kind: Role
      name: vvp-{{ target-namespace }}-role
      apiGroup: rbac.authorization.k8s.io
  3. 容器服务控制台左侧菜单栏,选择应用 > 无状态后,单击页面右上角的使用模板创建使用模板创建
  4. 使用模板创建详情页面,选择正确的集群名称和命名空间后,使用步骤2编辑好的文本替换模板中已有的内容。填写信息
  5. 在页面右下角,单击创建

报错:com.alibaba.gemini.engine.exceptions.GeminiIllegalArgumentException

  • 报错详情
    Caused by: com.alibaba.gemini.engine.exceptions.GeminiIllegalArgumentException: Gemini needs more native(off-heap) memory for better performance. The memory lower bound is 268435456 bytes, while current configured memory is only 192937984 bytes. The recommended native memory size is 2GB. Please contact dev if you have any question.
    at com.alibaba.gemini.engine.dbms.SupervisorImpl.<init>(SupervisorImpl.java:174)
    at com.alibaba.gemini.engine.GeminiDB.<init>(GeminiDB.java:145)
    at com.alibaba.flink.statebackend.gemini.GeminiKeyedStateBackendBuilder.build(GeminiKeyedStateBackendBuilder.java:166)
    at com.alibaba.flink.statebackend.gemini.GeminiStateBackend.createKeyedStateBackend(GeminiStateBackend.java:404)
    at org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.lambda$keyedStatedBackend$1(StreamTaskStateInitializerImpl.java:288)
    at org.apache.flink.streaming.api.operators.BackendRestorerProcedure.attemptCreateAndRestore(BackendRestorerProcedure.java:142)
    at org.apache.flink.streaming.api.operators.BackendRestorerProcedure.createAndRestore(BackendRestorerProcedure.java:121)
  • 解决方法

    添加配置参数:state.backend.gemini.use.offheap= false

报错:err client ip is not in whitelist

  • 报错详情报错详情
  • 报错原因

    外部存储的白名单中未配置Flink半托管/基于ACK集群所在交换机的IP地址。

  • 解决方法

    外部存储的配置白名单中,不仅需要配置Flink半托管/基于ACK集群的IP地址,而且还需要配置Flink半托管/基于ACK集群所在交换机的IP地址。

报错:Service role not attach

  • 报错详情
    创建集群时,报错Service role not attach报错
  • 报错原因

    您的账号不具有容器服务ACK集群角色及权限。

  • 解决方法
    请正确授权并检查权限,详情请参见角色授权
    说明 角色授权后,请勿随意删除任何权限。