====================
本地安装
====================
本指南介绍了如何在本地机器上运行的 Kubernetes 集群中设置和安装 Seldon Core。最终,您将启动并运行 Seldon Core,并准备好开始部署机器学习模型。
先决条件
-----------------
为了在本地安装 Seldon Core,您需要以下工具:
.. warning:: 根据您的本地计算机的权限和您正在使用的目录,某些工具可能需要 root 访问权限
Docker 或 Podman
^^^^^^^^^^^^^^^^^^^
`Docker `_ 和 `Podman `_ 是容器引擎。Kind 需要一个容器引擎(如 docker 或 podman)来实际运行集群内的容器。
您只需要 Docker 或 Podman 之一。请注意,Docker 不再免费为大公司供个人使用:
* 为 `Linux `_ , `Mac `_ , `Windows `_ 安装 Docker
或
* `安装 Podman `_
.. note:: 如果使用 Podman 记得设置 ``alias docker=podman``
Kind
^^^^^^^^^^^^^
`Kind `_ 是一个在本地运行 Kubernetes 集群的工具。我们将使用它在您的机器上创建一个集群,以便您可以在其中安装 Seldon Core。如果您的机器上还没有安装 `kind `_,您需要按照他们的安装指南进行操作:
* `安装 Kind `_
Kubectl
^^^^^^^^^^^^^
`kubectl `_ 是 Kubernetes 命令行工具。它允许您对 Kubernetes 集群运行命令,这是设置 Seldon Core 的一部分。
* `在 Linux 安装 kubectl `_
* `在 macOS 安装 kubectl `_
* `在 Windows 安装 kubectl `_
Helm
^^^^^^^^^^^^^
`Helm `_ 是一个包管理工具,可以轻松查找、共享和使用为 Kubernetes 构建的软件。如果你还没有在本地安装 Helm,你可以在这里安装它:
* `安装 Helm `_
设置 Kind
----------------
当在及其安装 kind 之后,通过运行以下命令创建一个先的 Kubernetes 集群
.. tab-set::
.. tab-item:: Istio
.. code-block:: bash
kind create cluster --name seldon
.. tab-item:: Ambassador
.. code-block:: bash
cat <`_ 或 `Ambassador `_ 来管理传入流量。Seldon Core 自动创建将流量路由到您部署的机器学习模型所需的对象和规则。
.. tab-set::
.. tab-item:: Istio
Istio 是一个开源服务网格。如果您对 *service mesh* 不熟悉,非常值得去阅读 `更多关于Istio 的内容 `_ 。
**下载 Istio**
对于 Linux 及 macOS,最简单的方式是使用以下命令下载 Istio:
.. code-block:: bash
curl -L https://istio.io/downloadIstio | sh -
进入 Istio 包目录。比如,包 ``istio-1.11.4``:
.. code-block:: bash
cd istio-1.11.4
添加 istioctl 客户端到 path (Linux or macOS):
.. code-block:: bash
export PATH=$PWD/bin:$PATH
**安装 Istio**
Istio 提供了一个命令工具 ``istioctl`` 来使安装更便捷。``示例`` `配置项 `_ 有一组很好的默认值来运行在你本地集群。
.. code-block:: bash
istioctl install --set profile=demo -y
命名空间标签 ``istio-injection=enabled`` 指示 Istio 注入自动代理我们在该命名空间中部署的任何内容。我们将为我们的 ``default`` 命名空间设置它:
.. code-block:: bash
kubectl label namespace default istio-injection=enabled
**创建 Istio 网关**
为了让 Seldon Core 使用 Istio 的特性来管理流量,我们使用如下命令来创建一个 `Istio Gateway `_ :
.. warning:: 你需要拷贝下面全部的命令
.. code-block:: yaml
kubectl apply -f - << END
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: seldon-gateway
namespace: istio-system
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
END
自定义配置及更多 seldon core 集成 Istio 安装的细节请查看 `Istio 入口 <../ingress/istio.md>`_ 页。
.. tab-item:: Ambassador
`Ambassador `_ 是 Kubernetes 入口控制器及 API 网关。他通过配置路由请求流量到 kubernetes 负载。
**安装 Ambassador**
首先通过命令安装 Custom Resource Definitions:
.. code-block:: bash
kubectl apply -f https://github.com/datawire/ambassador-operator/releases/latest/download/ambassador-operator-crds.yaml
现在安装 kind-specific manifests in the ``ambassador`` namespace:
.. code-block:: bash
kubectl apply -n ambassador -f https://github.com/datawire/ambassador-operator/releases/latest/download/ambassador-operator-kind.yaml
kubectl wait --timeout=180s -n ambassador --for=condition=deployed ambassadorinstallations/ambassador
Ambassador 已就绪。自定义配置及更多集成 Ambassador 安装 seldon core 的细节请查看 `Ambassador 入口 <../ingress/ambassador.md>`_ 页。
安装 Seldon Core
----------------------------
在安装 Seldon Core 前,创建一个 operator 运行所在的命名空间 ``seldon-system`` :
.. code:: bash
kubectl create namespace seldon-system
现在我们已经为在集群安装 Seldon Core 准备就绪。根据选择的入口类型执行如下命令:
.. tab-set::
.. tab-item:: Istio
.. code:: bash
helm install seldon-core seldon-core-operator \
--repo https://storage.googleapis.com/seldon-charts \
--set usageMetrics.enabled=true \
--set istio.enabled=true \
--namespace seldon-system
.. tab-item:: Ambassador
.. code:: bash
helm install seldon-core seldon-core-operator \
--repo https://storage.googleapis.com/seldon-charts \
--set usageMetrics.enabled=true \
--set ambassador.enabled=true \
--namespace seldon-system
使用以下命令检查 Seldon Controller 运行状态:
.. code-block:: bash
kubectl get pods -n seldon-system
你应该能看到 ``seldon-controller-manager`` pod 的 ``STATUS=Running`` 状态。
本地端口转发
-------------------------------
因为 kubernetes 集群运行在本地,我们需要转发一个本地及其端口到集群,以便我们从外部访问。可通过命令尝试:
.. tab-set::
.. tab-item:: Istio
.. code-block:: bash
kubectl port-forward -n istio-system svc/istio-ingressgateway 8080:80
.. tab-item:: Ambassador
.. code-block:: bash
kubectl port-forward -n ambassador svc/ambassador 8080:80
这将转发本地端口 8080 的任意流量到集群内 80 端口。
现在成功在本地安装 Seldon Core 并就绪 `开始部署模型 <../workflow/github-readme.md>`_ 作为生产微服务。