K3S

이현우·2022년 5월 16일
0

K3S는 Rancher에서 Labs에서 만든 경량화된 kubernetes이다.

기본 환경
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

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.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

2.1 error

  • 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

종료 커맨드

$ /usr/local/bin/k3s-killall.sh

2.2 docker 이미지 참조 에러

  • k3s가 로컬이미지를 인식하지 못함
  • 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
profile
GitHub - https://github.com/jenu8628

1개의 댓글

comment-user-thumbnail
2023년 10월 4일

ms store에 있는 Windows Subsystem for Linux 를 받으면 systemctl 쓸 수 있더라구요

답글 달기