Print
카테고리: [ Cloud Computing & MSA ]
조회수: 1076

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