部署 Kyuubi

在 Kubernetes 上部署 Kyuubi

师成师成· 更新于 2026-09-29· 阅读 7 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

环境要求

要在 Kubernetes 上部署 Kyuubi,你最好先了解以下内容。

Kyuubi 官方 Docker 镜像

你可以在 Docker Hub - apache/kyuubi 找到官方 Docker 镜像。

构建 Kyuubi Docker 镜像

你可以使用二进制包中提供的 ${KYUUBI_HOME}/bin/docker-image-tool.sh 脚本来自定义构建 Docker 镜像。

示例:

  - Build and push image with tag "v1.8.1" to docker.io/myrepo
    $0 -r docker.io/myrepo -t v1.8.1 build
    $0 -r docker.io/myrepo -t v1.8.1 push

  - Build and push with tag "v1.8.1" and Spark-3.5.1 as base image to docker.io/myrepo
    $0 -r docker.io/myrepo -t v1.8.1 -b BASE_IMAGE=repo/spark:3.5.1 build
    $0 -r docker.io/myrepo -t v1.8.1 push

  - Build and push for multiple archs to docker.io/myrepo
    $0 -r docker.io/myrepo -t v1.8.1 -X build

  - Build with Spark placed "/path/spark"
    $0 -s /path/spark build

  - Build with Spark Image myrepo/spark:3.4.2
    $0 -S /opt/spark -b BASE_IMAGE=myrepo/spark:3.4.2 build

${KYUUBI_HOME}/bin/docker-image-tool.sh 默认使用 Kyuubi 版本号作为 Docker 标签,并始终构建 ${repo}/kyuubi:${tag} 镜像。

该脚本还可以帮助将外部 Spark 构建到 Kyuubi 镜像中,使其作为提交任务的客户端,可通过 -s ${SPARK_HOME} 参数实现。

当然,如果你已经有一个包含 Spark 二进制包的镜像,则无需在本地复制 Spark。可以使用 -S ${SPARK_HOME_IN_DOCKER} 和 -b BASE_IMAGE=${SPARK_IMAGE} 参数,将你的 Spark 镜像设置为 BASE_IMAGE。

你可以使用 ${KYUUBI_HOME}/bin/docker-image-tool.sh -h 查看更多参数。

部署

推荐使用 Helm Chart 在 Kubernetes 上运行 Kyuubi。

[可选] ServiceAccount

根据 Kubernetes RBAC,你需要授予 Kyuubi server 相应的 Kubernetes 权限,以便在 Kubernetes 中 创建/列出/删除 引擎 Pod。

你应该创建自己的 ServiceAccount(或复用具有相应权限的账号),并为 Kyuubi Pod 设置你的 ServiceAccountName,你可以在 ${KYUUBI_HOME}/docker/kyuubi-deployment.yaml 或 ${KYUUBI_HOME}/docker/kyuubi-pod.yaml 中找到该模板。

例如,你可以通过以下命令创建 ServiceAccount:

kubectl create serviceAccount kyuubi -n <your namespace>
kubectl create rolebinding kyuubi-role --role=edit --serviceAccount=<your namespace>:kyuubi --namespace=<your namespace>

更多相关详情请参阅 使用 RBAC 授权 和 为 Pod 配置服务账户。

配置

你可以通过在镜像中放置 kyuubi-defaults.conf 来以传统方式配置 Kyuubi。Kyuubi 不建议在 Kubernetes 上使用这种方式。

Kyuubi 提供了 ${KYUUBI_HOME}/docker/kyuubi-configmap.yaml 来为 Kyuubi 构建 ConfigMap。

你可以在上述文件内的注释中找到使用方法。

如果你想了解 Kyuubi 引擎在 Kubernetes 上的配置,可以参考 在 Kubernetes 上部署 Kyuubi 引擎。

连接

如果你没有使用 Service 或 HostNetwork 来获取 Kyuubi 部署所在节点的 IP 地址,你应该像这样连接:

kubectl exec -it kyuubi-example -- /bin/bash
${KYUUBI_HOME}/bin/beeline -u 'jdbc:kyuubi://localhost:10009'

或者,你也可以通过本地 beeline 直接提交任务:

${KYUUBI_HOME}/bin/beeline -u 'jdbc:kyuubi://${hostname}:${port}'

使用 service nodePort 时,port 指的是 nodePort,hostname 指的是 Kubernetes 节点的任意主机名。

使用 HostNetwork 时,port 指的是 Kyuubi 容器的 containerPort,hostname 指的是部署 Kyuubi 所在节点的主机名。

TODO

Kyuubi 未来将提供更多连接方式,例如 Ingress、负载均衡(Load Balance)。

评论

登录后参与评论

正在加载评论…