Kubernetes 安装 Kubeflow
Kubernetes 安装 Kubeflow
本文以 Debian 10, kubernetes 1.19.3 为例,进行 Kubeflow 1.1.0 的安装讲解。
参考资料:
- Kubeflow Deployment with kfctl_k8s_istio 基础版本
- Multi-user, auth-enabled Kubeflow with kfctl_istio_dex 多用户认证版本
1. 准备环境
1.1 配置动态卷供应
Kubernetes 里需要配置了一个默认的动态卷供应 dynamic volume provisioner (重要,一些应用需要这个来存储数据) 。可通过此文档 Kubernetes 配置 NFS StorageClass 配置一个 NFS StorageClass 。
1.2 下载
打开 https://github.com/kubeflow/kfctl/releases/ 页面,下载合适的版本。这里以 V1.1.0 版本为例。
这里把解压出来的 kfctl 放在 ~/kubeflow/bin 目录下。
2. 安装基础版本
参考: https://www.kubeflow.org/docs/started/k8s/kfctl-k8s-istio/
2.1 创建一个环境变量文件
创建目录
mkdir ~/kubeflow/kfctl-k8s-istio
创建环境变量文件
vi ~/kubeflow/kfctl-k8s-istio/env.sh
| |
2.2 安装和部署 kubeflow
此时经过漫长的部署,等所有应用都正常运行,即为部署成功。
3. 安装多用户认证版本
3.1 安装和部署
部署过程跟基础版本类似, 只是 CONFIG_URI 改为 https://raw.githubusercontent.com/kubeflow/manifests/v1.1-branch/kfdef/kfctl_istio_dex.v1.1.0.yaml
结尾: 删除 kubeflow
若不想使用 kubeflow 了,运行以下命令进行删除。
其他: 可能遇到的问题
Q1. failed calling webhook “webhook.cert-manager.io”
Q1: 部署过程中,日志报 failed calling webhook “webhook.cert-manager.io” 错误。
A1: 可能是 kubernetes 网络不通。如果是 debian 10,可以考虑把 iptables 改成 legacy 版本(官方说 iptables 的兼容性问题已解决,本人尚未做验证)。
Q2. CustomResourceDefinition.apiextensions.k8s.io “seldondeployments.machinelearning.seldon.io” is invalid
Q2: 部署过程中,日志报 CustomResourceDefinition.apiextensions.k8s.io “seldondeployments.machinelearning.seldon.io” is invalid 错误。
A2:
修改 kfctl_k8s_istio.v1.1.0.yaml 文件,最后那部分改为:
Q3. 镜像总是拉取不下来
Q3: 部署过程中,需要下载大量镜像,而且不少镜像是位于 gcr.io 和 quay.io 服务器中。由于众所周知的原因,国内可能访问不了这两个服务器,手动下载也很难找全,导致应用无法启动。
A3: 参考 docker 配置代理 中关于 http 代理那部分,挂上梯子,可以解决所有镜像问题。
Q4. MountVolume.SetUp failed for volume “istio-token” : failed to fetch token: the API server does not have TokenRequest endpoints enabled
Q4: 有的应用报 MountVolume.SetUp failed for volume “istio-token” : failed to fetch token: the API server does not have TokenRequest endpoints enabled 错误。
A4:
修改 /etc/kubernetes/manifests/kube-apiserver.yaml ,增加
保存即可,k8s会自动重新加载