Kubernetes
Ozone 专为在 Kubernetes 上良好运行而设计。本文档提供了在 K8s 上部署和体验 Ozone 的指南,涵盖使用 Helm Chart、MiniKube 或自建 Kubernetes 集群的方式。
Helm Chart
若想简化在 Kubernetes 上部署 Apache Ozone 的流程,建议使用 Apache Ozone Helm Chart。该 Helm Chart 将最佳实践封装为一组可配置的 Kubernetes 资源,从而简化 Ozone 集群的安装与管理。
添加 Ozone Helm 仓库
首先,添加 Apache Ozone Helm 仓库并更新本地 Helm 仓库缓存:
helm repo add ozone-helm https://apache.github.io/ozone-helm-charts/ helm repo update安装 Chart
使用以下命令安装 Ozone Helm Chart。该命令将部署一个默认的 Ozone 集群:
helm install my-ozone-cluster ozone-helm/ozone自定义部署
若要自定义配置,请创建或修改 values.yaml 文件并填入所需的设置,然后按如下方式安装该 Chart:
helm install my-ozone-cluster -f values.yaml ozone-helm/ozone
如需更详细的文档和高级配置选项,请参阅 Apache Ozone Helm Chart 文档。
Minikube
环境要求
- 正常运行的 minikube 环境
- kubectl
部署服务
Ozone 发行版的 kubernetes/examples 目录中包含适用于多种使用场景的 Kubernetes 部署资源文件。默认情况下,这些 Kubernetes 资源文件配置为使用 Docker Hub 上的 apache/ozone 镜像。
要将其部署到 minikube,请使用 minikube 配置集:
cd kubernetes/examples/minikube
kubectl apply -k .然后你可以用以下方式检查结果:
kubectl get pod
kubectl exec scm-0 -- ozone version注意
kubernetes/examples/minikube 资源集针对 minikube 的使用进行了优化:
- 即使只有一台主机,也可以运行多个 Datanode(在真实的生产集群中,通常每个物理主机需要一个 Datanode)
- 服务通过 node port 发布
访问服务
现在你可以访问任意服务。对于每个 Web 端点,minikube 的 k8s 资源集中都额外定义了一个 NodeType 服务。NodeType 服务可通过任意主机节点上生成的端口访问:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
datanode ClusterIP None <none> <none> 27s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 118m
om ClusterIP None <none> 9874/TCP 27s
om-public NodePort 10.108.48.148 <none> 9874:32649/TCP 27s
s3g ClusterIP None <none> 9878/TCP 27s
s3g-public NodePort 10.97.133.137 <none> 9878:31880/TCP 27s
scm ClusterIP None <none> 9876/TCP 27s
scm-public NodePort 10.105.231.28 <none> 9876:32171/TCP 27sMinikube 提供了一个便捷命令,可用于访问任意 NodePort 服务:
minikube service s3g-public
Opening kubernetes service default/s3g-public in default browser...托管 Kubernetes 集群
注意: 此处的 Kubernetes 示例和脚本已在 Kubernetes 1.34.2(k3s v1.34.2+k3s1)上经过测试。
前置要求
- 正常运行的 Kubernetes 集群(不需要 LoadBalancer、PersistentVolume)
- kubectl
部署到 Kubernetes
由于 apache/ozone 镜像已发布在 Docker Hub 上,部署流程与 Minikube 部署非常相似。唯一的较大区别是,我们为托管集群准备了专门的一套 k8s 文件(例如,可以为每个主机部署一个 Datanode)。
要部署到托管集群,请使用 Ozone 子目录:
cd kubernetes/examples/ozone
kubectl apply -k .你可以通过以下方式检查结果
kubectl get pod
kubectl exec scm-0 -- ozone version访问服务
现在你可以访问其中任意服务。默认情况下这些服务并未对外发布,但可以通过端口转发规则来访问它们。
kubectl port-forward s3g-0 9878:9878
kubectl port-forward scm-0 9876:9876评论
登录后参与评论
KnowForge