KJH
Kubeflow(v1.1, v1.2) install (CentOS 7) 본문
[GCP 인스턴스 생성]
노란색으로 표시된 부분은 nfs-client-provisioner을 위해 추가한 디스크로 선택 사항입니다.
디스크 추가 항목은 인스턴스 생성 하는 화면에는 없고 인스턴스 수정을 통해 추가할 수 있습니다.
docker, microk8s 설치
----------
# centos
sudo yum install -y epel-release snapd wget git openssl checksum
----------
sudo systemctl enable --now snapd.socket
curl https://releases.rancher.com/install-docker/20.10.3.sh | sh -
sudo usermod -a -G docker ${USER}
sudo ln -s /var/lib/snapd/snap /snap
# snap 설치 이후 곧바로 사용할 경우 에러가 날때가 있음
sudo snap install microk8s --classic --channel=1.20/stable
sudo snap alias microk8s.kubectl k
sudo snap alias microk8s.kubectl kubectl
mkdir ~/.kube/
sudo usermod -a -G microk8s ${USER}
sudo chown -f -R ${USER} ~/.kube
# exit 후 재접속
# config가 644면 helm이 안될 수 도 있음 600으로 변경 (권한 확인 필요)
k config view --raw > $HOME/.kube/config
chmod 600 config
# ingress enable (istio ingress-http 사용)
microk8s enable dns
nfs 설치 및 설정
# 볼륨 추가 이후
# 볼륨확인
lsblk
# 볼륨포맷
sudo mkfs -t ext4 /dev/sdb
# 저장소생성
sudo mkdir /nfs_root
# 볼륨 마운트
sudo mount /dev/sdb/ /nfs_root
# 권한변경
sudo chown -R ${USER}. /nfs_root
sudo chmod -R 777 /nfs_root
# nfs 설치
sudo yum -y install nfs-utils nfs-utils-lib
# nfs 설정
sudo vi /etc/exports
----------------------------------------
/nfs_root {server-IP}(rw,no_root_squash,no_subtree_check)
----------------------------------------
# 설정 적용
sudo systemctl start nfs
sudo exportfs -ra
sudo systemctl status nfs
Helm 설치 및 nfs-client-provisioner 배포
# helm 간편 설치
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
chmod +x get_helm.sh
./get_helm.sh
# stable repo 추가
helm repo add stable https://charts.helm.sh/stable
# nfs client provisioner 설치
helm install nfs-client-provisioner \
--set nfs.server={nfs-server-ip} \
--set nfs.path={nfs-dir-path} \
--set storageClass.name=nfs \
--set storageClass.defaultClass=true \
stable/nfs-client-provisioner
Kubeflow 설치 [version 1.1.0]
# v1.1 설치시 apply하는 yaml 수정 필요, v1.2는 수정없이 설치 가능
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
sudo cp kfctl /usr/local/bin
sudo ln -s /usr/local/bin /usr/bin/kfctl
export KF_NAME=handson-kubeflow
export BASE_DIR=/home/${USER}
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.1-branch/kfdef/kfctl_k8s_istio.v1.1.0.yaml"
mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl build -V -f ${CONFIG_URI}
export CONFIG_FILE=${KF_DIR}/kfctl_k8s_istio.v1.1.0.yaml
vi kfctl_k8s_istio.v1.1.0.yaml
파일 맨아래 github주소를 바꿔줘야함 kubeflow -> DavidSpek
DavidSpek 이라는 사람이 kubeflow를 포크 떠가서 코드 수정함 kubeflow 측에서 인증도 받음
--------------
repos:
- name: manifests
uri: https://github.com/DavidSpek/manifests/archive/v1.1-branch.tar.gz
version: v1.1-branch
--------------
[엄청 오래걸림]
kfctl apply -V -f ./kfctl_k8s_istio.v1.1.0.yaml
중간에 5번 정도 같은 에러가 나는데 무시해도됨
Kubeflow 설치 [version 1.2.0]
# v1.2
wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0-gbc038f9_linux.tar.gz
tar -zxvf kfctl_v1.2.0-0-gbc038f9_linux.tar.gz
sudo cp kfctl /usr/local/bin
sudo ln -s /usr/local/bin /usr/bin/kfctl
export KF_NAME=handson-kubeflow
export BASE_DIR=/home/${USER}
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.2-branch/kfdef/kfctl_k8s_istio.v1.2.0.yaml"
mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl build -V -f ${CONFIG_URI}
export CONFIG_FILE=${KF_DIR}/kfctl_k8s_istio.v1.2.0.yaml
[엄청 오래걸림]
kfctl apply -V -f ./kfctl_k8s_istio.v1.2.0.yaml
중간에 5번 정도 같은 에러가 나는데 무시해도됨
Kubeflow 접속
함께 설치된 istio-http 노드포트로 접속가능 {external-ip}:{31380}
10분 이상 기다리면 namespace 이름 설정하고 시작하는 화면이 뜸
microk8s dashboard
# dashboard 추가
microk8s enable dashboard
# nodeport 오픈
kubectl -n kube-system edit service kubernetes-dashboard
---------------------------
ports:
- nodePort: 32443
port: 443
protocol: TCP
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
sessionAffinity: None
type: NodePort
---------------------------
# 접속
https://{external-IP}:{nodePort}
# KubeConfig로 접속
cat ~/.ssh/config 를 파일로 저장 후 사용
miniconda install & Kubeflow pipeline 설정
sudo yum install -y bzip2
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
which conda
export PATH=/home/${USER}/miniconda3/bin:$PATH
conda create --name mlpipeline python=3.7
# window는 conda로 실행
conda activate mlpipeline
# Linux는 source로 실행
source activate mlpipeline
# 에러 발생시 pip3 install kfp --upgrade --user 로 재시도
pip3 install kfp --upgrade
# pipeline.py 파일을 tar.gz로 압축
dsl-compile --py pipeline.py --output kjh-iris-pipeline.tar.gz
pipeline issue
# pipeline 실행시 docker container를 찾을 수 없다는 error 로그가 찍힐 수 있는데
# 임시 방편으로 containerRuntimeExecutor: docker, > pns, 로 변경 해주고 retry 하면 정상 배포가 된다
kubectl edit configmap workflow-controller-configmap -n kubeflow
----------------------------
apiVersion: v1
data:
config: |
{
executorImage: argoproj/argoexec:v2.3.0,
containerRuntimeExecutor: pns,
artifactRepository:
{
----------------------------
'DevOps' 카테고리의 다른 글
LVM 구성 (0) | 2021.07.08 |
---|---|
CentOS AirGap Repository 구성 (0) | 2021.07.08 |
Elastic Search 데이터 삭제 정책 등록(ILM) (0) | 2021.07.08 |
Jenkinsfile 작성법 (0) | 2020.10.11 |
Groovy 기본 문법 (0) | 2020.10.11 |