Introduction

JeongChaeJin·2022년 11월 17일
0

구성 요소

  • Cluster : 우분투가 설치되어 있는 데스크톱 하나를 의미한다.
  • Client : 노트북 또는 클러스가 설치되어 있는 데스크톱 외의 클라이언트로 사용할 다른 데스크톱

Install ap pkgs

sudo apt-get update
sudo apt-get install -y socat
  • 추후 Client와 Clutser의 원활한 통신을 위해서는 Port-Forwarding 을 수행해야 하는데, Port-Forwarding을 위해 Cluster에 위 패키지를 설치해줘야한다.

Install Docker

sudo apt-get update && sudo apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • docker 공식 GPG key
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • apt 패키지 매니저로 docker 설치시 stable Repository에서 받아오도록 설정
sudo apt-get update && apt-cache madison docker-ce
apt-cache madison docker-ce | grep 5:20.10.11~3-0~ubuntu-focal
sudo apt-get install -y containerd.io docker-ce=5:20.10.11~3-0~ubuntu-focal docker-ce-cli=5:20.10.11~3-0~ubuntu-focal
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
  • sudo 키워드 없이 할 수 있도록 권한 추가

Turn off Swap Memory

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
  • kubelet 정상 동작을 위해 클러스터 노드에서 swap이라는 가상 메모리를 꺼 두어야 한다.
  • 클러스타와 클라이언트를 같은 데스크톱으로 사용 시 swap 메모리 종료 시 속도 저하기 있을 수 있다.

Install Kubectl

curl -LO https://dl.k8s.io/release/v1.21.7/bin/linux/amd64/kubectl
  • 현재 폴더에 kubectl 다운로드
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  • 파일의 권한과 위치를 변경해 kubectl 사용
kubectl version --client
  • 설치 확인

Install k3s

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.21.7+k3s1 sh -s - server --disable traefik --disable servicelb --disable local-storage --docker
  • k3s에서는 기본값으로 containerd를 백엔드로 설치한다. 하지만 GPU 사용을 위해 docker를 Backend로 사용해야해서 --docker 옵션을 통해 백엔드를 docker로 설치한다.
sudo cat /etc/rancher/k3s/k3s.yaml
  • k3s config 확인

Cluster Setup

mkdir .kube
sudo cp /etc/rancher/k3s/k3s.yaml .kube/config
  • k3s config를 Cluster의 kubeconfig로 사용하기 위해 복사
sudo chown $USER:$USER .kube/config
  • 복사된 파일에 user가 접근할 수 있는 권한 부여

Client Setup

  • Cluster에서 설정한 kube/config를 로컬로 이동 시킨다.
  • 로컬에서는 ~/.kube/config로 설정한다.
  • 처음 복사한 config에서는 server ip가 https://127.0.0.1:6443으로 되어있는데, 이 값을 Cluster의 ip에 맞게 수정한다.

Setup Kubernetes Modules

1. Helm

  • 쿠버네티스 패키지와 관련된 자원을 한 번에 배포하고 관리할 수 있게 도와주는 패키지 매니징 도구 중 하나
wget https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gz
tar -zxvf helm-v3.7.1-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
  • 압축 해제 후 파일 위치 변경
helm help

  • 정상 설치 확인

2. Kustomize

  • 여러 쿠버네티스 리소스를 한 번에 배포하고 관리할 수 있게 해주는 패키지 매니징 도구 중 하나
wget https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv3.10.0/kustomize_v3.10.0_linux_amd64.tar.gz
tar -zxvf kustomize_v3.10.0_linux_amd64.tar.gz
sudo mv kustomize /usr/local/bin/kustomize
kustomize help

3. CSI Plugin : Local Path Provisioner

  • 쿠버네티스 내 스토리지를 담당하는 모듈
  • 단일 노드 클러스터에서 쉽게 사용할 수 있는 CSI Pligin으로 Local Path Provisioner 사용
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.20/deploy/local-path-storage.yaml

kubectl -n local-path-storage get pod

  • local-path-storage namespace에 provisioner pod이 Running인지 확인
kubectl patch storageclass local-path  -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  • default storage class로 변경
kubectl get sc

  • storage class 존재 확인 (local-path (default))
profile
OnePunchLotto

0개의 댓글