1. 사전 준비사항
Amazon Linux 또는 우분투 머신 (EC2 가상서버) 은 준비되어 있다고 가정합니다.
2. 서버 접속
ssh 를 통해 서버에 접속한다.
3. Amazon Linux 설치 (실패)
3.1. 설치 커맨드
curl -sfL https://get.k3s.io | sh -
원래 구글링 후 아래 커맨드로 설치했는데 이래저래 잘 안되서 위 커맨드로 실행했다.
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="\ --disable traefik \ --disable metrics-server \ --node-name master --docker" \ INSTALL_K3S_VERSION="v1.18.6+k3s1" sh -s -
3.2. 오류 발생 시
만약 다음과 같은 에러 발생 시에는 필수 패키지를 설치 후 다시 진행한다.
[INFO] Using v1.18.6+k3s1 as release [INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.18.6+k3s1/sha256sum-amd64.txt [INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.18.6+k3s1/k3s [INFO] Verifying binary download [INFO] Installing k3s to /usr/local/bin/k3s [ERROR] Failed to find the k3s-selinux policy, please install: dnf install -y container-selinux dnf install -y https://rpm.rancher.io/k3s/stable/common/centos/8/noarch/k3s-selinux-1.2-2.el8.noarch.rpm
아래 dnf install... 명령을 실행한다.
$ sudo dnf install -y container-selinux Last metadata expiration check: 0:31:48 ago on Fri Apr 7 01:49:33 2023. Dependencies resolved. ========================================================================================================================================================================= Package Architecture Version Repository Size ========================================================================================================================================================================= Installing: container-selinux noarch 2:2.189.0-289.amzn2023.0.2 amazonlinux 47 k Transaction Summary ========================================================================================================================================================================= Install 1 Package Total download size: 47 k Installed size: 57 k Downloading Packages: container-selinux-2.189.0-289.amzn2023.0.2.noarch.rpm 576 kB/s | 47 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 298 kB/s | 47 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: container-selinux-2:2.189.0-289.amzn2023.0.2.noarch 1/1 Installing : container-selinux-2:2.189.0-289.amzn2023.0.2.noarch 1/1 Running scriptlet: container-selinux-2:2.189.0-289.amzn2023.0.2.noarch 1/1 Verifying : container-selinux-2:2.189.0-289.amzn2023.0.2.noarch 1/1 Installed: container-selinux-2:2.189.0-289.amzn2023.0.2.noarch Complete!
$ sudo dnf install -y https://rpm.rancher.io/k3s/stable/common/centos/8/noarch/k3s-selinux-1.2-2.el8.noarch.rpm Last metadata expiration check: 0:37:12 ago on Fri Apr 7 01:49:33 2023. k3s-selinux-1.2-2.el8.noarch.rpm 34 kB/s | 20 kB 00:00 Dependencies resolved. ========================================================================================================================================================================= Package Architecture Version Repository Size ========================================================================================================================================================================= Installing: k3s-selinux noarch 1.2-2.el8 @commandline 20 k Transaction Summary ========================================================================================================================================================================= Install 1 Package Total size: 20 k Installed size: 94 k Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: k3s-selinux-1.2-2.el8.noarch 1/1 Installing : k3s-selinux-1.2-2.el8.noarch 1/1 Running scriptlet: k3s-selinux-1.2-2.el8.noarch 1/1 Verifying : k3s-selinux-1.2-2.el8.noarch 1/1 Installed: k3s-selinux-1.2-2.el8.noarch Complete!
3.3. 설치 완료
$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="\ --disable traefik \ --disable metrics-server \ --node-name master --docker" INSTALL_K3S_VERSION="v1.18.6+k3s1" sh -s - [INFO] Using v1.18.6+k3s1 as release [INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.18.6+k3s1/sha256sum-amd64.txt [INFO] Skipping binary downloaded, installed k3s matches hash [INFO] Creating /usr/local/bin/kubectl symlink to k3s [INFO] Creating /usr/local/bin/crictl symlink to k3s [INFO] Creating /usr/local/bin/ctr symlink to k3s [INFO] Creating killall script /usr/local/bin/k3s-killall.sh [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env [INFO] systemd: Creating service file /etc/systemd/system/k3s.service [INFO] systemd: Enabling k3s unit Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service. [INFO] systemd: Starting k3s
3.4 Kubernetes 마스터 설정
sudo update-ca-certificates mkdir ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config sudo chown -R $(id -u):$(id -g) ~/.kube echo "export KUBECONFIG=~/.kube/config" >> ~/.bashrc source ~/.bashrc
4. 우분투 설치 (성공)
4.1. 파일 설치
$ curl -sfL https://get.k3s.io | sh - [INFO] Finding release for channel stable [INFO] Using v1.26.3+k3s1 as release [INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.26.3+k3s1/sha256sum-amd64.txt [INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.26.3+k3s1/k3s [INFO] Verifying binary download [INFO] Installing k3s to /usr/local/bin/k3s [INFO] Skipping installation of SELinux RPM [INFO] Creating /usr/local/bin/kubectl symlink to k3s [INFO] Creating /usr/local/bin/crictl symlink to k3s [INFO] Creating /usr/local/bin/ctr symlink to k3s [INFO] Creating killall script /usr/local/bin/k3s-killall.sh [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env [INFO] systemd: Creating service file /etc/systemd/system/k3s.service [INFO] systemd: Enabling k3s unit Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service. [INFO] systemd: Starting k3s
4.2. 상태 확인
$ service k3s status ● k3s.service - Lightweight Kubernetes Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2023-04-07 05:08:58 UTC; 43min ago Docs: https://k3s.io Process: 1698 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exited, status=0/SUCCESS) Process: 1700 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS) Process: 1702 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS) Main PID: 1704 (k3s-server) Tasks: 92 Memory: 1.1G CPU: 2min 26.327s CGroup: /system.slice/k3s.service ├─1704 "/usr/local/bin/k3s server" ├─1724 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/l> ├─2285 /var/lib/rancher/k3s/data/c26e7571d760c5f199d18efd197114f1ca4ab1e6ffe494f96feb65c87fcb8cf0/bin/containerd-shim-runc-v2 -namespace k8s.io -id f6dbfc1> ├─2446 /var/lib/rancher/k3s/data/c26e7571d760c5f199d18efd197114f1ca4ab1e6ffe494f96feb65c87fcb8cf0/bin/containerd-shim-runc-v2 -namespace k8s.io -id 741c3aa> ├─2469 /var/lib/rancher/k3s/data/c26e7571d760c5f199d18efd197114f1ca4ab1e6ffe494f96feb65c87fcb8cf0/bin/containerd-shim-runc-v2 -namespace k8s.io -id 35068a7> ├─3564 /var/lib/rancher/k3s/data/c26e7571d760c5f199d18efd197114f1ca4ab1e6ffe494f96feb65c87fcb8cf0/bin/containerd-shim-runc-v2 -namespace k8s.io -id 987dab2> └─3634 /var/lib/rancher/k3s/data/c26e7571d760c5f199d18efd197114f1ca4ab1e6ffe494f96feb65c87fcb8cf0/bin/containerd-shim-runc-v2 -namespace k8s.io -id c856c88> Apr 07 05:23:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:23:54Z" level=info msg="COMPACT revision 0 has already been compacted" Apr 07 05:28:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:28:54Z" level=info msg="COMPACT revision 0 has already been compacted" Apr 07 05:33:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:33:54Z" level=info msg="COMPACT compactRev=0 targetCompactRev=60 currentRev=1060" Apr 07 05:33:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:33:54Z" level=info msg="COMPACT deleted 8 rows from 60 revisions in 709.916µs - compacted to 60/1060" Apr 07 05:38:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:38:54Z" level=info msg="COMPACT compactRev=60 targetCompactRev=150 currentRev=1150" Apr 07 05:38:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:38:54Z" level=info msg="COMPACT deleted 6 rows from 90 revisions in 650.919µs - compacted to 150/1150" Apr 07 05:43:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:43:54Z" level=info msg="COMPACT compactRev=150 targetCompactRev=240 currentRev=1240" Apr 07 05:43:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:43:54Z" level=info msg="COMPACT deleted 15 rows from 90 revisions in 1.144503ms - compacted to 240/1240" Apr 07 05:48:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:48:54Z" level=info msg="COMPACT compactRev=240 targetCompactRev=330 currentRev=1330" Apr 07 05:48:54 ip-10-21-110-130 k3s[1704]: time="2023-04-07T05:48:54Z" level=info msg="COMPACT deleted 17 rows from 90 revisions in 1.088716ms - compacted to 330/1330"
4.3. kubectl 명령어
$ sudo kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-10-21-110-130 Ready control-plane,master 44m v1.26.3+k3s1 10.21.110.130Ubuntu 22.04.2 LTS 5.15.0-1031-aws containerd://1.6.19-k3s1
4.4. 워커 노드 추가
추가할 워커 노드에는 토큰값과 마스터 URL을 환경변수로 설정한 후 k3s 설치를 시도한다.
마스터 서버에서 토큰값을 확인하는 명령어는 다음과 같다.
cat /var/lib/rancher/k3s/server/node-token
환경 설정은 이렇게 하면 된다.
# export K3S_TOKEN=.... # export K3S_URL=https://192.168.10.101:6443
그리고 나서 각 워커 노드에서 다음 명령어를 실행하여 설치한다.
curl -sfL https://get.k3s.io | sh -