centos7安装kubeflow

前言:公司研发需要机器学习的相关技术栈做推荐使用,于是第一次开始涉足kubeflow、tensorflow、YoutubeDNN等。(ML:Machine learning)

环境

centos7.5
k8s v1.20.5
docker 19.03.15
复制代码

安装

建议参考官方文档:https://www.kubeflow.org/docs/started/k8s/kfctl-k8s-istio/

wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0-gbc038f9_linux.tar.gz
tar -xf kfctl_v1.2.0-0-gbc038f9_linux.tar.gz
mv kfctl /usr/sbin
创建目录(自定义):mkdir -p /letv/kubeflow/kf-test
export PATH=$PATH:/usr/sbin/kfctl
export KF_NAME=kf-test
export BASE_DIR=/letv/kubeflow
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_FILE=${KF_DIR}/kfctl_k8s_istio.v1.2.0.yaml
cd /letv/kubeflow/kf-test
kfctl apply -V -f ${CONFIG_FILE}
kubectl -n kubeflow get all
复制代码

创建pv

上面通过kfctl apply创建kubeflow的一大堆pod时,目前碰到俩问题:

  1. gcr.io镜像无法下载,解决办法是给服务器挂代理,本文结束..

我用的办法是本地梯子下载好后,传给harbor,然后在用服务器下载harbor的一大堆镜像; 或者参考其他办法:
通过阿里云下载gcr.io镜像

  1. 创建pv和pvc;有四个pvc需要绑定(katib-mysq、metadata-mysql、minio-pvc、mysql-pv-claim)

我用的办法是创建pv和pvc的yaml文件,用的NFS,举例一个:

root@vm-10-124-65-248 ~/test/kubeflow/PV$ cat PV_katib-mysql.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  labels:
    name: pv-katib-mysql
  name: pv-katib-mysql
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: katib-mysql
    namespace: kubeflow
  nfs:
    path: /letv/nfs_kubeflow/data/v1/katib-mysql/
    server: 10.124.65.247
  persistentVolumeReclaimPolicy: Retain
  volumeMode: Filesystem
复制代码
root@vm-10-124-65-248 ~/test/kubeflow/PV$ cat PVC_katib-mysql.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app.kubernetes.io/component: katib
    app.kubernetes.io/name: katib-controller
  name: katib-mysql
  namespace: kubeflow
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeMode: Filesystem
  volumeName: pv-katib-mysql
复制代码

还有的pod提示镜像sha256的问题,我这里解决办法是编辑对应ns下的deploy,删除里面image最后的一串sha256即可:kubectl edit deploy activator -n knative-serving

Dashboard

masterip:31380

image.png
首次进入dashboard会让创建一个命名空间,之后比方像Notebook Servers所创建的pod都在该命名空间下。

运行Notebook Servers

请先参考:aws.amazon.com/cn/blogs/ch…

这里说一下我遇到的一个坑:使用Notebook Servers创建一个测试模型时,也需要创建pv和pvc,否则模型数据不会保留;但是我创建好后,pod依然失败了,kubectl logs查看竟然提示/home/jovyan无权限,原因就是NFS创建的PV没权限导致,这里直接把NFS的挂载路径给了777,问题解决..

image.png

image.png

Notebook Servers运行custom image

在kubeflow的dashboard上运行Notebook Servers时,可以选择自定义镜像,举例:

image.png
于是我尝试用tensorflow镜像运行,创建后pod果然有问题,describe排查提示docker login有权限问题?继续研究:

原因是因为缺少sa(serviceAccount)配置导致:

  • kubeflow需要权限去pull镜像,这里没有对应的pull权限
  • 于是再其namespace下创建了一个secret,该secret是专为docker registry的认证信息准备的,我这里是叫myregistry
  • 虽然创建了secret,但是kubeflow界面创建的应用是statefulsets应用,该statefulsets里指定了一个sa: default-editor
  • 这个sa:default-editor里原来没有指定任何secret,指定即可(myregistry)
  • statefulsets正常运行起来。

image.png

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享