使用 Milvus Operator 在 Kubernetes 中執行 Milvus
本頁說明如何使用 MilvusOperator 在 Kubernetes 中啟動 Milvus 實例。
概述
Milvus Operator 是一個解決方案,可以幫助您部署和管理完整的 Milvus 服務堆疊到目標 Kubernetes (K8s) 集群。堆疊包括所有 Milvus 元件和相關的依賴項目,例如 etcd、Pulsar 和 MinIO。
先決條件
安裝StorageClass。您可以按以下步驟檢查已安裝的 StorageClass。
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false
安裝前檢查軟硬體需求。
在安裝 Milvus 之前,建議使用Milvus Sizing Tool根據您的資料大小來估計硬體需求。這有助於確保 Milvus 安裝的最佳性能和資源分配。
如果您在拉動映像時遇到任何問題,請聯繫我們community@zilliz.com,並提供有關問題的詳細資訊,我們將為您提供必要的支援。
安裝 Milvus 操作器
Milvus Operator 定義了Kubernetes 自訂資源之上的 Milvus 叢集自訂資源。定義了自訂資源後,您可以宣告式的方式使用 K8s API,並管理 Milvus 部署堆疊,以確保其可擴充性及高可用性。
您可以使用下列任一種方式安裝 Milvus Operator:
使用 Helm 安裝
執行下列指令,以 Helm 安裝 Milvus Operator。
$ helm install milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.2.0/milvus-operator-1.2.0.tgz
安裝程序結束後,您會看到類似以下的輸出。
NAME: milvus-operator
LAST DEPLOYED: Thu Jul 7 13:18:40 2022
NAMESPACE: milvus-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Milvus Operator Is Starting, use `kubectl get -n milvus-operator deploy/milvus-operator` to check if its successfully installed
If Operator not started successfully, check the checker's log with `kubectl -n milvus-operator logs job/milvus-operator-checker`
Full Installation doc can be found in https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md
Quick start with `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml`
More samples can be found in https://github.com/zilliztech/milvus-operator/tree/main/config/samples
CRD Documentation can be found in https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD
使用 kubectl 安裝
執行下列指令,以kubectl
安裝 Milvus Operator。
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
安裝程序結束後,您會看到類似以下的輸出。
namespace/milvus-operator created
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io created
serviceaccount/milvus-operator-controller-manager created
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding created
configmap/milvus-operator-manager-config created
service/milvus-operator-controller-manager-metrics-service created
service/milvus-operator-webhook-service created
deployment.apps/milvus-operator-controller-manager created
您可以檢查 Milvus Operator pod 是否正在執行,如下所示:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
部署 Milvus
1.部署 Milvus 集群
一旦 Milvus Operator pod 運行,您就可以按以下方式部署 Milvus 叢集。
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
上面的指令使用預設的設定,將 Milvus 叢集的元件和相依性分別部署在不同的 Pod 中。若要自訂這些設定,建議您使用Milvus 大小調整工具,根據實際資料大小調整配置,然後下載相對應的 YAML 檔案。要瞭解有關配置參數的更多資訊,請參閱Milvus 系統配置清單。
- 版本名稱只能包含字母、數字和破折號。發行版名稱中不允許點。
- 您也可以在獨立模式下部署 Milvus 實例,即所有元件都包含在單一 pod 中。要做到這一點,請將上述命令中的配置文件 URL 改為
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2.檢查 Milvus 集群狀態
執行以下指令檢查 Milvus 叢集狀態
$ kubectl get milvus my-release -o yaml
一旦您的 Milvus 叢集準備就緒,上述命令的輸出應該與下面相似。如果status.status
欄位保持Unhealthy
,您的 Milvus 叢集仍在創建中。
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "2021-11-02T05:59:41Z"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "2021-11-02T06:06:23Z"
message: Pulsar is ready
reason: PulsarReady
status: "True"
type: PulsarReady
- lastTransitionTime: "2021-11-02T05:59:41Z"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "2021-11-02T06:12:36Z"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
Milvus Operator 會建立 Milvus 依賴項目,例如 etcd、Pulsar 和 MinIO,然後是 Milvus 元件,例如 proxy、coordinator 和節點。
一旦您的 Milvus 叢集準備就緒,Milvus 叢集中所有 Pod 的狀態應該類似於下面。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 14m
my-release-etcd-1 1/1 Running 0 14m
my-release-etcd-2 1/1 Running 0 14m
my-release-milvus-datanode-5c686bd65-wxtmf 1/1 Running 0 6m
my-release-milvus-indexnode-5b9787b54-xclbx 1/1 Running 0 6m
my-release-milvus-proxy-84f67cdb7f-pg6wf 1/1 Running 0 6m
my-release-milvus-querynode-5bcb59f6-nhqqw 1/1 Running 0 6m
my-release-milvus-mixcoord-fdcccfc84-9964g 1/1 Running 0 6m
my-release-minio-0 1/1 Running 0 14m
my-release-minio-1 1/1 Running 0 14m
my-release-minio-2 1/1 Running 0 14m
my-release-minio-3 1/1 Running 0 14m
my-release-pulsar-bookie-0 1/1 Running 0 14m
my-release-pulsar-bookie-1 1/1 Running 0 14m
my-release-pulsar-bookie-init-h6tfz 0/1 Completed 0 14m
my-release-pulsar-broker-0 1/1 Running 0 14m
my-release-pulsar-broker-1 1/1 Running 0 14m
my-release-pulsar-proxy-0 1/1 Running 0 14m
my-release-pulsar-proxy-1 1/1 Running 0 14m
my-release-pulsar-pulsar-init-d2t56 0/1 Completed 0 14m
my-release-pulsar-recovery-0 1/1 Running 0 14m
my-release-pulsar-toolset-0 1/1 Running 0 14m
my-release-pulsar-zookeeper-0 1/1 Running 0 14m
my-release-pulsar-zookeeper-1 1/1 Running 0 13m
my-release-pulsar-zookeeper-2 1/1 Running 0 13m
3.將本機連接埠轉送至 Milvus
執行下列指令以取得 Milvus 叢集服務的連接埠。
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
輸出顯示 Milvus 實例在預設的19530 連接埠提供服務。
如果您以獨立模式部署 Milvus,請將 Pod 名稱從my-release-milvus-proxy-xxxxxxxxxx-xxxxx
改為my-release-milvus-xxxxxxxxxx-xxxxx
。
然後執行下列指令,將本機連接埠轉寄到 Milvus 服務的連接埠。
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
您可以選擇在上述指令中使用:19530
而不是27017:19530
,讓kubectl
替您分配一個本機連接埠,這樣您就不必管理連接埠衝突。
預設情況下,kubectl 的連接埠轉發只會在localhost
上監聽。如果您希望 Milvus 監聽選定或所有的 IP 位址,請使用address
。以下指令會讓 port-forward 聆聽主機上所有的 IP 位址。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
現在,您可以使用轉送的連接埠連線到 Milvus。
存取 Milvus WebUI
Milvus 隨附一個內建的 GUI 工具,稱為 Milvus WebUI,您可以透過瀏覽器存取。Milvus Web UI 以簡單直觀的介面增強系統的可觀察性。您可以使用 Milvus Web UI 觀察 Milvus 元件和相依性的統計和指標、檢查資料庫和收集的詳細資訊,以及列出 Milvus 的詳細配置。有關 Milvus Web UI 的詳細資訊,請參閱Milvus WebUI。
要啟用對 Milvus Web UI 的存取,您需要將代理 pod 的連接埠轉發到本機連接埠。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
現在,您可以在http://localhost:27018
存取 Milvus Web UI。
卸載 Milvus
執行下列指令卸載 Milvus 叢集。
$ kubectl delete milvus my-release
- 當您使用預設設定刪除 Milvus 叢集時,etcd、Pulsar 和 MinIO 等相依性不會被刪除。因此,下次安裝相同的 Milvus 叢集實例時,這些依賴將再次被使用。
- 若要連同 Milvus 叢集一起刪除依賴項目和私有虛擬雲 (PVC),請參閱組態檔案。
解除安裝 Milvus 操作系統
解除安裝 Milvus Operator 也有兩種方式。
使用 Helm 卸載
$ helm -n milvus-operator uninstall milvus-operator
使用 kubectl 卸載
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.2.0/deploy/manifests/deployment.yaml
下一步
在 Docker 中安裝 Milvus 後,您就可以:
檢查Hello Milvus,看看 Milvus 能做什麼。
學習 Milvus 的基本操作:
在雲上部署您的 Milvu 集群:
探索Milvus WebUI,Milvus 可觀察與管理的直覺式網頁介面。
探索Milvus 備份,Milvus 資料備份的開放原始碼工具。
探索Birdwatcher,用於調試 Milvus 和動態組態更新的開放原始碼工具。
探索Attu,一個開放源碼 GUI 工具,用於直觀的 Milvus 管理。