Предисловие: Исследования и разработки компании требуют, чтобы технологические стеки, связанные с машинным обучением, были рекомендованы для использования, поэтому она впервые начала ступить на kubeflow, tensorflow, YoutubeDNN и т. д. (ML: машинное обучение)
окрестности
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
создать пв
При создании большого количества подов kubeflow с помощью kfctl apply выше я сталкиваюсь с двумя проблемами:
- Зеркало gcr.io не может быть загружено,
Решение - повесить прокси на сервер, конец этой статьи..
Метод, который я использую, заключается в том, чтобы загрузить локальную лестницу, передать ее в гавань, а затем использовать сервер для загрузки большого количества изображений гавани; или обратиться к другим методам:Загрузите образ gcr.io через Alibaba Cloud
- Создайте pv и pvc; нужно связать четыре pvc (katib-mysq, metadata-mysql, minio-pvc, mysql-pv-claim)
Метод, который я использую, заключается в создании файлов yaml pv и pvc с использованием 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
Также есть поды, которые вызывают проблему зеркалирования sha256, Мое решение здесь — отредактировать развертывание под соответствующим ns и удалить последнюю строку sha256 в образе:kubectl edit deploy activator -n knative-serving
Dashboard
masterip:31380
При первом входе на панель мониторинга создается пространство имен, в котором создаются модули, такие как серверы ноутбуков.
Запуск серверов ноутбуков
Пожалуйста, обратитесь к:AWS.Amazon.com/talent/blogs/eat…
Вот такая яма, с которой я столкнулся: при использовании Notebook Servers для создания тестовой модели нужно также создать pv и pvc, иначе данные модели не сохранятся, но после того, как я ее создал, pod все равно вышел из строя, и логи kubectl показывали что /home/jovyan не имеет разрешения, причина в том, что PV, созданный NFS, не имеет разрешения.Здесь путь монтирования NFS напрямую указан в 777.,проблема решена..
Серверы ноутбуков запускают пользовательский образ
При запуске серверов ноутбуков на панели управления kubeflow вы можете выбрать собственное изображение, например:
Поэтому я попытался запустить его с изображением tensorflow.После создания модуля возникла проблема с модулем.Описание устранения неполадок предполагает, что у входа в систему Docker есть проблема с разрешением? Продолжайте изучать:
Причина в том, что отсутствует конфигурация sa (serviceAccount):
- Kubeflow требуется разрешение на извлечение зеркала, здесь нет соответствующего разрешения на извлечение
- Итак, секрет был создан в его пространстве имен. Секрет специально подготовлен для аутентификационной информации реестра докеров. Здесь я называюсь myregistry.
- Несмотря на то, что создается секрет, приложение, созданное интерфейсом kubeflow, является приложением statefulsets, и в statefulsets указывается sa: default-editor
- Этот sa:default-editor не указывал никакого секрета, просто указывал (myregistry)
- statefulsets запущены и работают нормально.