入门指南 (Get Started)
单机部署(Standalone)
独立版安装操作员(Install_standalone-operator)

使用 Milvus Operator 安装独立版 Milvus

Milvus Operator 是一个解决方案,可以帮助你在 Kubernetes(K8s)集群中部署和管理完整的 Milvus 服务栈。该栈包括所有 Milvus 组件以及相关依赖项,如 etcd、Pulsar 和 MinIO。本主题描述了如何使用 Milvus Operator 安装独立版 Milvus。

先决条件

在进行安装之前,请先 查看硬件和软件要求

创建 K8s 集群

如果你已经为生产部署创建了 K8s 集群,可以跳过此步骤,直接进入 部署 Milvus Operator。否则,请按照以下步骤快速创建用于测试的 K8s 集群,然后使用它来部署带有 Milvus Operator 的 Milvus 集群。

{{fragments/create_a_k8s_cluster_using_minikube.md}}

部署 Milvus Operator

Milvus Operator 在 Kubernetes 自定义资源 (opens in a new tab) 之上定义了 Milvus 集群的自定义资源。当定义自定义资源时,你可以使用 K8s API 进行声明式管理 Milvus 部署栈,以确保其可伸缩性和高可用性。

先决条件

  • 确保你可以通过 kubectlhelm 访问 K8s 集群。
  • 确保已安装 StorageClass 依赖项,因为 Milvus 集群依赖于默认的 StorageClass 进行数据持久化。当安装时,minikube 具有对默认 StorageClass 的依赖。通过运行命令 kubectl get sc 检查依赖项是否已安装。如果已安装 StorageClass,则会显示以下输出。如果没有安装,请参阅 更改默认的 StorageClass (opens in a new tab) 获取更多信息。
NAME                  PROVISIONER                  RECLAIMPOLICY    VOLUMEBIINDINGMODE    ALLOWVOLUMEEXPANSION     AGE
standard (default)    k8s.io/minikube-hostpath     Delete           Immediate             false                    3m36s

1. 安装 cert-manager

Milvus Operator 使用 cert-manager (opens in a new tab) 为 webhook 服务器提供证书。运行以下命令安装 cert-manager。

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml

如果已安装 cert-manager,则可以看到以下输出。

customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created
namespace/cert-manager created
serviceaccount/cert-manager-cainjector created
serviceaccount/cert-manager created
serviceaccount/cert-manager-webhook created
clusterrole.rbac.authorization.k8s.io/cert-manager-cainjector created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-issuers created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-clusterissuers created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-certificates created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-orders created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-challenges created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-ingress-shim created
clusterrole.rbac.authorization.k8s.io/cert-manager-view created
clusterrole.rbac.authorization.k8s.io/cert-manager-edit created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-approve:cert-manager-io created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-certificatesigningrequests created
clusterrole.rbac.authorization.k8s.io/cert-manager-webhook:subjectaccessreviews created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-cainjector created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-issuers created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-clusterissuers created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-certificates created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-orders created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-challenges created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-ingress-shim created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-approve:cert-manager-io created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-certificatesigningrequests created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-webhook:subjectaccessreviews created
role.rbac.authorization.k8s.io/cert-manager-cainjector:leaderelection created
role.rbac.authorization.k8s.io/cert-manager:leaderelection created
role.rbac.authorization.k8s.io/cert-manager-webhook:dynamic-serving created
rolebinding.rbac.authorization.k8s.io/cert-manager-cainjector:leaderelection created
rolebinding.rbac.authorization.k8s.io/cert-manager:leaderelection created
rolebinding.rbac.authorization.k8s.io/cert-manager-webhook:dynamic-serving created
service/cert-manager created
service/cert-manager-webhook created
deployment.apps/cert-manager-cainjector created
deployment.apps/cert-manager created
deployment.apps/cert-manager-webhook created
mutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created

运行 $ kubectl get pods -n cert-manager 检查 cert-manager 是否运行。如果所有的 pod 都正在运行,可以看到以下输出。

NAME                                      READY   STATUS    RESTARTS   AGE
cert-manager-848f547974-gccz8             1/1     Running   0          70s
cert-manager-cainjector-54f4cc6b5-dpj84   1/1     Running   0          70s
cert-manager-webhook-7c9588c76-tqncn      1/1     Running   0          70s

2. 安装 Milvus Operator

有两种方式可以在 K8s 上安装 Milvus Operator:

  • 使用 helm chart
  • 直接使用原始清单使用 kubectl 命令

通过 Helm 命令安装

helm install milvus-operator \
  -n milvus-operator --create-namespace \
  --wait --wait-for-jobs \
  https://github.com/zilliztech/milvus-operator/releases/download/v{{var.milvus_operator_version}}/milvus-operator-{{var.milvus_operator_version}}.tgz

如果已安装 Milvus Operator,你将看到以下输出。

名称:milvus-operator
部署日期:2022年7月7日星期四13:18:40
命名空间:milvus-operator
状态:已部署
修订版本:1
测试套件:无
注意事项:
Milvus Operator正在启动,使用 `kubectl get -n milvus-operator deploy/milvus-operator` 检查是否成功安装
如果运算符启动不成功,请使用 `kubectl -n milvus-operator logs job/milvus-operator-checker` 检查检查器日志
完整的安装文档可以在 https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md找到
使用 `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml` 快速启动
更多示例可以在 https://github.com/zilliztech/milvus-operator/tree/main/config/samples 找到
CRD文档可以在 https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD 找到

使用 kubectl 命令安装

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml

如果已安装 Milvus Operator,你将看到以下输出。

名称空间 /milvus-operator 已创建
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io 已创建
serviceaccount/milvus-operator-controller-manager 已创建
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role 已创建
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role 已创建
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader 已创建
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role 已创建
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding 已创建
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding 已创建
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding 已创建
configmap/milvus-operator-manager-config 已创建
service/milvus-operator-controller-manager-metrics-service 已创建
service/milvus-operator-webhook-service 已创建
deployment.apps/milvus-operator-controller-manager 已创建
certificate.cert-manager.io/milvus-operator-serving-cert 已创建
issuer.cert-manager.io/milvus-operator-selfsigned-issuer 已创建
mutatingwebhookconfiguration.admissionregistration.k8s.io/milvus-operator-mutating-webhook-configuration 已创建
validatingwebhookconfiguration.admissionregistration.k8s.io/milvus-operator-validating-webhook-configuration 已创建

运行 $ kubectl get pods -n milvus-operator 来检查 Milvus Operator 是否正在运行。如果 Milvus Operator 正在运行,你将会看到以下输出。

名称                                 已准备   状态    重启   年龄
milvus-operator-5fd77b87dc-msrk4   1/1     正在运行   0          46秒

安装独立的 Milvus

1. 安装 Milvus

当 Milvus Operator 启动后,运行以下命令来安装 Milvus。

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml

2. 检查独立的 Milvus 状态

运行以下命令来检查你刚安装的 Milvus 的状态。

$ kubectl get milvus my-release -o yaml

当 Milvus 成功安装后,你可以学习如何 管理集合

连接到 Milvus

验证 Milvus 服务器监听的本地端口。使用你自己的 Pod 名称替换。

$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530

在一个新的终端中运行以下命令,将本地端口转发到 Milvus 使用的端口。可以选择省略指定的端口,使用 :19530kubectl 为你分配一个本地端口,这样你就不必处理端口冲突。

$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530

默认情况下,kubectl 的端口转发仅在本地主机上进行侦听。如果要让 Milvus 服务器在选定的 IP 或所有 IP 地址上侦听,请使用 address 标志。

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530

卸载独立的 Milvus

运行以下命令以卸载 Milvus。

$ kubectl delete milvus my-release

卸载 Milvus Operator

在 K8s 上卸载 Milvus Operator 也有两种方法:

使用 Helm 命令卸载 Milvus Operator

$ helm -n milvus-operator uninstall milvus-operator

使用 kubectl 命令卸载 Milvus Operator

$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v{{var.milvus_operator_version}}/deploy/manifests/deployment.yaml

删除 K8s 集群

当你不再需要测试环境中的 K8s 集群时,可以运行 $ minikube delete 来删除它。

下一步操作

使用安装了 Milvus 的方式,你可以: -查看 Hello Milvus 以运行一个包含不同 SDK 的示例代码,了解 Milvus 的功能。 -了解 Milvus 的基本操作: