K3S는 Rancher에서 Labs에서 만든 경량화된 kubernetes이다.
기본 환경
WSL(ubuntu-20.04)
참고 - k3d는 도커 컨테이너에 k3s가 설치되어 kubernetes를 구축하는 형태
$ curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
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 설치를 통해 직접 실행되니 시스템 명령어를 사용하지 못하게 되어있는 듯 함.
$ 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
$ k3s kubectl get node
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
$ 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
# 빌드한 이미지를 압축파일로 만든다
$ 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