在混合云中创建 Qdrant 集群
创建混合云环境后,您可以在该环境中创建 Qdrant 集群。使用相同的流程来创建集群。请确保将您的混合云环境选为目标。
请注意,在“Kubernetes 配置”部分,您可以额外配置:
- Qdrant 数据库 Pod 的节点选择器
- Qdrant 数据库 Pod 的容忍度
- Qdrant 数据库 Pod 的附加标签
- Qdrant 数据库服务的服务类型和注解
这些设置也可以在集群创建后在集群详情页上更改。
调度配置
创建或编辑集群时,您可以配置数据库 Pod 在 Kubernetes 集群中的调度方式。这对于确保 Qdrant 数据库在专用节点上运行非常有用。您可以在集群创建期间的“Kubernetes 配置”部分或在集群详情页上配置必要的节点选择器和容忍度。
Qdrant 集群的身份验证
在混合云中,身份验证信息由 Kubernetes secrets 提供。
您可以在 Qdrant 集群详情页的“配置”部分配置 Qdrant 集群的身份验证。您可以在此处配置用作 API 密钥和/或只读 API 密钥的 Kubernetes secret 名称和密钥。
创建 secret 的一种方法是使用 kubectl
kubectl create secret generic qdrant-api-key --from-literal=api-key=your-secret-api-key --namespace the-qdrant-namespace
生成的 secret 将如下所示:
apiVersion: v1
data:
api-key: ...
kind: Secret
metadata:
name: qdrant-api-key
namespace: the-qdrant-namespace
type: kubernetes.io/generic
使用此命令,secret 名称将是 qdrant-api-key
,密钥将是 api-key
。
如果想再次检索 secret,也可以使用 kubectl
kubectl get secret qdrant-api-key -o jsonpath="{.data.api-key}" --namespace the-qdrant-namespace | base64 --decode
观看视频
在本教程中,我们将引导您完成将运行在 Qdrant 混合云上的 Qdrant 数据库集群暴露给 Kubernetes 集群外部的外部应用或用户的步骤。了解如何配置 TLS 证书以实现安全通信,设置身份验证,并探索不同的方法,如负载均衡器、ingress 和端口配置。
将 Qdrant 集群暴露给您的客户端应用
您可以使用 Kubernetes services 和 ingresses 将 Qdrant 集群暴露给您的客户端应用。默认情况下,会为每个 Qdrant 集群创建一个 ClusterIP
service。
在您的 Kubernetes 集群内,您可以使用服务名称和端口访问 Qdrant 集群
http://qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24.qdrant-namespace.svc:6333
此端点也在集群详情页上可见。
如果您想从本地开发机器访问数据库,可以使用 kubectl port-forward
将服务端口转发到您的本地机器
kubectl --namespace your-qdrant-namespace port-forward service/qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24 6333:6333
您也可以使用 LoadBalancer
(如果在您的 Kubernetes 环境中支持)、NodePort
service 或 ingress 将数据库暴露到 Kubernetes 集群外部。
服务类型和必要的注解可以在集群创建期间的“Kubernetes 配置”部分或在集群详情页上配置。
特别是如果您创建 LoadBalancer Service,您可能需要为负载均衡器配置提供注解。请参阅您的云提供商文档以获取更多详情。
示例
- AWS EKS LoadBalancer 注解
- Azure AKS Public LoadBalancer 注解
- Azure AKS Internal LoadBalancer 注解
- GCP GKE LoadBalancer 注解
您也可以手动创建 Loadbalancer service,如下所示:
apiVersion: v1
kind: Service
metadata:
name: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24-lb
namespace: qdrant-namespace
spec:
type: LoadBalancer
ports:
- name: http
port: 6333
- name: grpc
port: 6334
selector:
app: qdrant
cluster-id: 9a9f48c7-bb90-4fb2-816f-418a46a74b24
ingress 可能如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24
namespace: qdrant-namespace
spec:
rules:
- host: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24.your-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: qdrant-9a9f48c7-bb90-4fb2-816f-418a46a74b24
port:
number: 6333
请参阅 Kubernetes、ingress controller 和云提供商文档以获取更多详情。
如果您像这样暴露数据库,您将能够在集群详情页上看到它也反映为一个端点。并且将看到指向它的 Qdrant 数据库仪表盘链接。
配置 TLS
如果您想在混合云中为访问 Qdrant 数据库配置 TLS,有两种选项:
- 您可以在 ingress 或负载均衡器层面卸载 TLS。
- 您可以直接在 Qdrant 数据库中配置 TLS。
如果您想在 ingress 或负载均衡器层面卸载 TLS,请参阅其各自的文档。
如果您想直接在 Qdrant 数据库中配置 TLS,可以在 Qdrant 集群详情页的“配置”部分引用一个包含 TLS 证书和密钥的 secret。
要创建这样的 secret,可以使用 kubectl
kubectl create secret tls qdrant-tls --cert=mydomain.com.crt --key=mydomain.com.key --namespace the-qdrant-namespace
生成的 secret 将如下所示:
apiVersion: v1
data:
tls.crt: ...
tls.key: ...
kind: Secret
metadata:
name: qdrant-tls
namespace: the-qdrant-namespace
type: kubernetes.io/tls
使用此命令,要在 UI 中输入的 secret 名称将是 qdrant-tls
,密钥将是 tls.crt
和 tls.key
。
配置 CPU 和内存资源预留
创建 Qdrant 数据库集群时,Qdrant Cloud 会调度具有特定 CPU 和内存 requests 和 limits 的 Pod,以确保最佳性能。它将使用相等的 requests 和 limits 来保证稳定性。理想情况下,Kubernetes 节点应与 Pod 大小匹配,每个 VM 运行一个数据库 Pod。
默认情况下,Qdrant Cloud 会在每个 Pod 上预留 20% 的可用 CPU 和内存。这样做是为了给操作系统、Kubernetes 和系统组件留出空间。这个保守的默认设置可能需要根据节点大小进行调整,较小的节点可能需要预留更多资源,而较大的节点则需要较少资源。
您可以在 Qdrant 集群详情页的“配置”部分修改此预留。
如果您想检查空 Kubernetes 节点上有多少可用资源,可以使用以下命令:
kubectl describe node <node-name>
这将为您提供 Kubernetes 的可用资源明细,以及已为系统 Pod 预留和使用了多少资源。