[Kube] Kubeflow, WHO ARE YOU?

IT_Engineer/클라우드|2022. 11. 2. 16:46
728x90

 

1. 개요 : KUBEFLOW란?

  KUBEFLOW  = "Kube"rnetes + ML "FLOW" 의 합성어
  즉, 쿠버네티스 기반의 Machine Learning FLOW 플랫폼 (혹은 AI 플랫폼)

 

 

🔵 쿠버네티스 기반에서 머신러닝(Machine Learning)

워크플로우(Workflow)를 자동화, ML 워크플로우 각 단계에서

머신러닝 모델을 개발하는데 필요한 도구와 환경 제공

→ ML 모델 쉽게 개발 및 배포, 확장 및 이식이 용이

 

※  머신러닝 워크플로우: 머신러닝 모델을 개발하는 모든 과정
   (데이터 전처리, 탐색적 데이터 분석, 데이터 변환, 하이퍼 파라미터 튜닝, 머신러닝 모델 학습, 머신러닝 모델 배포단계)

 

2. 아키텍처 및 구조

 

 

728x90

댓글()

[K8S] Windows WSL Minikube 및 Wordpress 설치

IT_Engineer/클라우드|2020. 11. 30. 11:34
728x90

기초 환경 설정

! Windows Docker 설치 가능 환경

  • Windows 7 이상 (Windows8, Windows10)
  • 컴퓨터 하드웨어가 가상화(Virtualization) 지원
  • 작업관리자(ctrl+ alt+ delete) > 성능 탭 > 가상화 : 사용

  • 윈도우의 Hyper-V 실행 :
    프로그램 제거 또는 변경 > Windows 기능 켜기/끄기 > Hyper-V 체크 후 확인

 


수행 내용

  • Winodws Docker, WSL2, minikube 설치
  • minikube를 통해서 mysql 과 연동된 wordpress 구축

1. Docker for Windows 설치

! Docker for Windows 설치

2.  WSL2 설치

  • https://docs.microsoft.com/ko-kr/windows/wsl/install-win10 > 4단계
    x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 클릭 및 다운로드
  • wsl_update_x64.exe 설치 프로그램 실행
  • WSL 프로그램 실행
  • Microsoft Store > Ubuntu, Windows Terminal 설치
  • Windows Terminal에서 상단의 버튼 누르면 Ubuntu 열림
  • Windows Powershell 마우스 오른쪽 클릭 > 관리자 모드 실행 > wsl 확인
> wsl l -v # wsl Version 2 확인

 
> wsl 진입
# apt-get 패키지 업데이트
> sudo apt-get update && sudo apt-get install
           apt-transport-https
           ca-certificates
           curl
           software-properties-common


#docker 설치
> sudo apt-get install docker
> sudo apt-get install docker.io
> docker version # docker 설치 버전 확인
 

 

3. Kubernetes(minikube) 설치

! minikube 설치

  • Docker for Windows > Settings > Resources > NETWORK, WSL ~ 모두 체크
  • Docker for Windows > Settings > Kubernetes 모두 체크

# minikube 설치
$ curl LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
$ sudo dpkg i minikube_latest_amd64.deb


# minikube 실행
$ minikube start driver=docker
$ minikube kubectl

 

 

4. mysql을 연동한 wordpress 구축

! kustomization.yaml 생성하기

  • 시크릿 생성자 추가
# kustomization.yaml 생성
# password (password 부분) 수정 가능
$ cat <<EOF >./kustomization.yaml
secretGenerator:
- name: mysql-pass 
  literals: 
  - password=password(#본인 비밀번호)
EOF

 

  • MySQL 디플로이먼트 단일 인스턴스 기술
  • MySQL 컨테이너는 퍼시스턴트볼륨을 /var/lib/mysql에 마운트
  • MYSQL_ROOT_PASSWORD 환경변수는 시크릿에서 가져와 DB 암호 설정
  • MySQL deployment 구성 파일 다운로드
# MySQL 디플로이먼트 구성 파일 다운로드
$ curl LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml


# Wordpress 디플로이먼트 구성 파일 다운로드
$curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml



 

  • 위 두 yaml 파일을 kustomization.yaml에 추가
$ cat <<EOF >>./kustomization.yaml
resources: 
     - mysql-deployment.yaml
     - wordpress-deployment.yaml
EOF

! yaml 내용

  • mysql-deployment.yaml 파일 내용
더보기

# mysql-deployment.yaml

apiVersion: v1

kind: Service

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

ports:

- port: 3306

selector:

app: wordpress

tier: mysql

clusterIP: None

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mysql-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

---

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2

kind: Deployment

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: mysql

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: mysql

spec:

containers:

- image: mysql:5.6

name: mysql

env:

- name: MYSQL_ROOT_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: mysql-persistent-storage

mountPath: /var/lib/mysql

volumes:

- name: mysql-persistent-storage

persistentVolumeClaim:

claimName: mysql-pv-claim

  • wordpress-deployment.yaml 내용
더보기

# wordpress-deployment.yaml

apiVersion: v1

kind: Service

metadata:

name: wordpress

labels:

app: wordpress

spec:

ports:

- port: 80

selector:

app: wordpress

tier: frontend

type: LoadBalancer

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: wp-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

---

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2

kind: Deployment

metadata:

name: wordpress

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: frontend

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: frontend

spec:

containers:

- image: wordpress:4.8-apache

name: wordpress

env:

- name: WORDPRESS_DB_HOST

value: wordpress-mysql

- name: WORDPRESS_DB_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 80

name: wordpress

volumeMounts:

- name: wordpress-persistent-storage

mountPath: /var/www/html

volumes:

- name: wordpress-persistent-storage

persistentVolumeClaim:

claimName: wp-pv-claim

 

 

5. yaml 파일 적용 및 확인

  • kustomization.yamlWordpress 사이트와 MySQL 데이터베이스를 배포하는 모든 리소스를 포함
  • 다음과 같이 디렉토리 적용 가능
$ kubectl apply k ./

 

  • 적용 확인
# 시크릿 존재 확인
$ kubectl get secrets


# 퍼시스턴트 볼륨이 동적으로 프로비저닝이 되었는지 확인
$ kubectl get pvc


# 파드 확인
$ kubectl get pods


# 워드프레스 서비스가 실행중인지 확인
$ kubectl get services wordpress


# 워드프레스 서비스 IP주소 확인
$ minikube service wordpress —url

 

6. 웹 브라우저를 통한 확인

  • kubectl을 통한 pvc, service, url 확인 커맨드

  • URL 주소를 복사하여 웹 브라우저에서 사이트 확인

  • Wordpress 설치 환경 설정

 

7. 성공 화면

 

 

 

728x90

댓글()

[Docker] Docker, Docker-ce 설치

IT_Engineer/클라우드|2020. 11. 2. 19:48
728x90

0. 설치 환경

  • CentOS
    • 권장 사양 : CentOS 7 64bit 이상
    • 낙서쟁이 사양 : CentOS Linux release 7.8.2003 (Core)
  • Kubernetes 구축을 위한 사양 (꼭 잘 확인하세요!! 확인 안하고 했다가, VM 지우고 다시 설치한 1인)

1. Docker 설치

  • 목적 : 컨테이너 이미지를 생성, 관리, 공유
  • 기존에 설치된 경우, 구버전 삭제 
# yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ Docker-logrotate \ docker engine

 

    • Docker-CE 설치를 위한 필수 패키지 설치 및 저장소 설정
## 필수 패키지( yum-utils 설치)
# sudo yum install -y yum-utils device-Mapper-persistent-data lvm2

## docker-ce stable 저장소 설정
#sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • stable이 아닌 edge나 test를 사용하려는 경우에도, stable 저장소는 반드시 설정 필요
  • edge 활성화 : sudo yum-config-manager --enable docker-ce-edge
  • test 활성화 : sudo yum-config-manager --enable docker-ce-test
  • edge나 test 저장소를 비활성화하련면, --enable을 --disable로 변경

 

  • Doiucker daemon에 insecure-registries 등록
# vi /etc/docker/daemon.json
{
    "insecure-registries": ["{IP}:5000"]
}

 

  • Docker 설치
# yum install -y docker-ce docker-ce-cli containerd.io
  • docker-ce : daemon 프로세스가 있는 서버
  • docker-ce-cli : docker daemon과 통신하고 지시하는데 사용할 수 있는 인터페이스를 지정하는 API
  • containerd.io : pod에서 컨테이너를 실행하기 위한 컨테이너 런타임

 

 

  • Docker 실행
# systemctl enable docker
# systemctl restart docker 
# systemctl status docker
  • 재시작 시 Docker가 자동실행되도록 설정
  • 아래와 같은 상태가 나오면 성공!

 

728x90

댓글()