-
[Jupyterhub for Kubernetes-1] MicroK8s를 통한 Bare Metal Host상의 kubernetes 설치 및 helm 설치Backend/Kubernetes 2022. 3. 16. 01:38728x90
kubernetes 위에서 jupyter hub를 실행시켜보기 위해 kubernetes set up을 시작했다. OS환경은 VMware 가상머신에서 우분투 환경이다. kubernetes를 Google Cloud나 Azure, AWS 등의 public cloud 위에서 설치하는 방법도 존재하지만 내가 하려는 것은 private cloud상의 kubernetes 설치임으로 다음의 document를 참고했다.
Setting up Kubernetes
1. MicroK8s 설치 및 시작
MicroK8s란 Kubernetes를 테스트 목적으로 사용해보기 위해서 우분투가 제공하는 가벼운 배포판이다.
- MicroK8s는 다음을 통해 설치할 수 있으며 document를 따라 진행했다.
sudo snap install microk8s --classic --channel=1.21
https://microk8s.io/docs/getting-started
2. 필수 추가 기능 활성화(add ons)
sudo microk8s.enable dns sudo microk8s.enable helm3
3. 네트워킹 구성
microk8s enable metallb:10.0.2.10-10.0.2.200
LoadBalancer의 대역폭의 경우 자신의 ip주소를 참고하여 작성해야한다. 나의 경우 virtual machine에서 진행중이기 때문에 virtual machine의 ip주소를 확인하고 이를 포함하는 대역폭을 구성했다. 이때 대역폭의 범위는 100정도로 하는게 적절하다.
## Example config.yaml proxy: https: enabled: true hosts: - jupyter.myschool.edu letsencrypt: contactEmail: me@myschool.edu service: loadBalancerIP: 10.0.2.10
config.yaml파일을 생성하여 위와같이 작성한다. hosts, contactEmail은 원하는 것으로 적고 loadBalancerIP는 이전에 설정했던 범위 내의 ip로 적어주면 된다.
4. storage 구성
claim을 사용하여 storage를 할당하는데 Cloud 공급업체는 자동적으로 claim을 다루지만 MicroK8에서는 OpenEBS 추가 기능을 활성화해야 claim이 storage에 바인딩된다. OpenEBS 활성화를 위해 클러스터링에 사용하는 iSCSi 서비스를 활성화해야한다.
sudo systemctl enable iscsid.service
만약 iscsid.service가 존재하지 않을 경우 iscsi를 먼저 설치해야한다.
sudo apt install open-iscsi
이후 openebs를 활성화한다.
microk8s enable openebs
만약 다음과 같은 경고가 발생한다면 권한 설정과 관련된 문제이므로 다음을 실행한다.
WARNING: Kubernetes configuration file is group-readable. This is insecure.
chmod 600 ~/.kube/config
Storage Class 자원의 default설정을 해 local-storage-dir.yaml 파일을 다음 내용으로 생성한다.
## local-storage-dir.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage-dir annotations: storageclass.kubernetes.io/is-default-class: "true" openebs.io/cas-type: local cas.openebs.io/config: | - name: StorageType value: hostpath - name: BasePath value: /path/to/your/storage provisioner: openebs.io/local reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer
/path/to/your/storage 부분의 경우 자신이 클러스터의 데이터를 저장하고 싶은 디렉토리의 경로의 path로 바꾸면 된다.
사용자가 지정된 StorageClass resource를 클러스터에 적용한다.
microk8s.kubectl apply -f local-storage-dir.yaml
5. 자원관리
config.yaml 파일에 다음과 같이 default로 설정한다.
## Example config.yaml singleuser: memory: guarantee: 1G cpu: guarantee: 0.5
6. 확인
다음의 명령어를 통해 2개의 running pods가 존재하는지 확인한다.
microk8s.kubectl -n metallb-system get all
Setting up helm
1. 설치
curl https://raw.githubusercontent.com/helm/helm/HEAD/scripts/get-helm-3 | bash
curl 명령어는 리눅스 상에서 http를 이용하여 경로의 데이터를 가져오는 것으로 해당 명령어가 실행되지 않는다면 설치가 필요하다.
다음의 명령어로 설치가 가능하다.
sudo apt install curl
2. 버전 확인
helm 설치 여부와 버전을 확인한다.
helm version
https://zero-to-jupyterhub.readthedocs.io/en/latest/kubernetes/setup-helm.html
JupyterHub 설치 준비 완료!
728x90'Backend > Kubernetes' 카테고리의 다른 글
[Minikube] Docker image를 minikube cluster로 실행하기 (0) 2022.04.10 [Minikube] Virtual box Ubuntu20.04에 minikube 설치 (1) 2022.03.27 [Jupyterhub for Kubernetes-2] JupyterHub 설치 (2) 2022.03.20