public:kubernetes:install_kubeflow

Kubernetes 安装 Kubeflow

本文以 Debian 10, kubernetes 1.19.3 为例,进行 Kubeflow 1.1.0 的安装讲解。

参考资料:

Kubernetes 里需要配置了一个默认的动态卷供应 dynamic volume provisioner (重要,一些应用需要这个来存储数据) 。可通过此文档 Kubernetes 配置 NFS StorageClass 配置一个 NFS StorageClass 。

打开 https://github.com/kubeflow/kfctl/releases/ 页面,下载合适的版本。这里以 V1.1.0 版本为例。

# 下载二进制文件
wget https://github.com/kubeflow/kfctl/releases/download/v1.1.0/kfctl_v1.1.0-0-g9a3621e_linux.tar.gz
 
# 解压
tar -zxvf kfctl_v1.1.0-0-g9a3621e_linux.tar.gz

这里把解压出来的 kfctl 放在 ~/kubeflow/bin 目录下。

创建目录

mkdir ~/kubeflow/kfctl-k8s-istio

创建环境变量文件

vi ~/kubeflow/kfctl-k8s-istio/env.sh
env.sh
# 把 kfctl 加到 PATH 中。
export PATH=$PATH:~/kubeflow/bin
 
# 设置 Config 文件下载地址
export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.1-branch/kfdef/kfctl_k8s_istio.v1.1.0.yaml"
 
# 设置 KF_NAME 。可随便设置,官方示例是以它作为文件夹名称,暂不知道应用内部是否需要此变量。
export KF_NAME=kfctl-k8s-istio
 
# 设置 KF_DIR 。按需设置,官方示例是以它作为文件夹名称,暂不知道应用内部是否需要此变量。
export BASE_DIR=~/kubeflow
export KF_DIR=${BASE_DIR}/${KF_NAME}
# 进入 KF_DIR , 这里是 ~/kubeflow/kfctl-k8s-istio
cd ~/kubeflow/kfctl-k8s-istio
 
# 加载环境变量,主要是 PATH 和 CONFIG_URI
source env.sh
 
# 应用配置文件
kfctl apply -V -f ${CONFIG_URI}

此时经过漫长的部署,等所有应用都正常运行,即为部署成功。

若不想使用 kubeflow 了,运行以下命令进行删除。

cd ${KF_DIR}
 
kfctl delete -f ${CONFIG_FILE}

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 错误。

A2:

修改 kfctl_k8s_istio.v1.1.0.yaml 文件,最后那部分改为:

repos:
  - name: manifests
    uri: https://github.com/DavidSpek/manifests/archive/v1.1-branch.tar.gz
  version: v1.1-branch

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 错误。

A4:

修改 /etc/kubernetes/manifests/kube-apiserver.yaml ,增加

    - --service-account-signing-key-file=/etc/kubernetes/pki/sa.key
    - --service-account-issuer=kubernetes.default.svc

保存即可,k8s会自动重新加载

  • 最后更改: 2021/06/24 20:48
  • 由 Jinkin Liu