Single Node Cluster Kubernetes 구축(K3S Server 설치)

이현우·2022년 6월 7일
0

쿠버네티스

목록 보기
6/11
post-custom-banner

기본 환경

  • WSL(ubuntu-20.04)

참고 - k3d는 도커 컨테이너에 k3s가 설치되어 kubernetes를 구축하는 형태

1. K3S 설치

single node cluster kubernetes를 구축할 예정
--write-kubeconfig-mode 644은 후에 kubectl을 설치 후 진행할 작업 때문에 붙여줌

$ curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644

$ curl -sfL https://get.k3s.io | sh -s - --docker --write-kubeconfig-mode 644

1.1 실행 에러 (host is down)

WSL(ubuntu-20.04)를 이용해 설치하다 다음과 같은 오류가 발생했다.
System has not been booted with systemd as init system (PID 1). Can’t operate. Failed to connect to bus: Host is down

아무래도 WSL 설치를 통해 직접 실행되니 시스템 명령어를 사용하지 못하게 되어있는 듯 함.

1.1.1 에러 해결 1 (비추천)

$ sudo apt install daemonize dbus-user-session fontconfig

$ sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target

$ exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME

$ snap version

$ systemctl start k3s
  • 해당 방법은 다른 에러가 생길 가능성이 큼
  • 특히 해당 코드를 치고 나면 docker가 다운됨.
  • 해결 방법을 찾지 못했음.

###1.1.2 에러 해결 2 (추천)

# 1. screen을 사용하여 백그라운드에서 k3s 서버를 실행하고 로그 출력을 /var/log/k3s.log에 저장
$ screen -d -m -L -Logfile /var/log/k3s.log /usr/local/bin/k3s server

# 새 창에서 사용하면 끝!

# 스크린 종료
$ screen -X -S <삭제할 스크린> kill

1.2. 설치 확인

$ k3s kubectl get node

2. Kubectl 설치

  • kubernetes를 관리하기 위해선 kubectl이라는 프로그램을 설치해 사용함
  • 하지만 K3S를 설치하면 kubectl을 직접 설치하지 않아도 됨.
    • k3s kubectl 이라는 명령어를 통해서 kubectl을 실행 시킬 수 있음.
  • kubectl 명령어가 필요할 때마다 k3s kubectl의 명령어를 쓰는게 비효율 적이므로 kubectl의 설치를 하였음(설치가 매우 간단)
# 1. curl을 통해 kubectl 설치
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

# 2. chmod 명령어를 통해 실행 권한 부여
$ chmod +x ./kubectl

# 3. mv(파일이동)
$ mv ./kubectl /usr/local/bin/kubectl

# 4. kubectl 설치 확인
$ kubectl version

3 Error

3.1 kubectl 명령어 에러

  • kubectl을 설치한 직후에 kubectl get nodes 명령을 사용하면 에러 메세지가 발생하는 경우가 있다.
  • kubectl은 사용자 홈 디렉토리에 .kube/config 파일을 읽어 kubernetes 환경 설정 정보로 사용하기 때문이다.
  • 하지만 k3s를 설치하면 kubernetes 환경 설정 정보가 /etc/rancher/k3s/k3s.yaml 위치에 있다. 그러므로 이를 복사해 주어야 한다.
  • 아래 명령을 수행하려면 k3s를 설치할때 --write-kubeconfig-mode 644 명령을 줘야 root 권한이 아니더라도 별 문제 없이 수행 할 수 있다.
$ mkdir .kube # 이미 디렉토리가 만들어져 있는 경우도 있다.

$ sudo chmod -R 777 /etc/rancher/k3s/k3s.yaml

$ export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

$ cp /etc/rancher/k3s/k3s.yaml ~/.kube/config

3.2 k3s로 docker 로컬 이미지 인식 에러

  • k3s 가 docker로 pull 받거나 build한 로컬에 있는 이미지를 인식하지 못함.
  • k3s에 이미지를 import해서 사용하는 방법이 있음.
# 빌드한 이미지를 압축파일로 만든다
$ docker save --output test-app-v1.0.0.tar test-app:v1.0.0

# 원격 호스트에 이미지 복사라는데 어떤 것을 하고 싶은 것인지 잘 모르겠음.
# 안해도 잘 되는 듯함.
$ rsync -v test-app-v1.0.0.tar remote:/home/ubuntu/test-app-v1.0.0.tar

# k3s로 이미지를 가져온다.
$ sudo k3s ctr images import /home/ubuntu/test-app-v1.0.0.tar

종료 커맨드

/usr/local/bin/k3s-killall.sh
profile
GitHub - https://github.com/jenu8628
post-custom-banner

0개의 댓글