5.3.2 openSUSE에 K3s 설치
이전 절에서 우리는 K3s가 가진 매력적인 특징들, 특히 그 놀라운 가벼움과 설치의 단순성에 대해 자세히 알아보았습니다. 이제 이론을 넘어, 여러분의 openSUSE 시스템에 직접 K3s를 설치하여 그 강력함과 편리함을 직접 경험해 볼 차례입니다. Rancher Desktop의 GUI를 통한 설치와는 달리, 이번에는 터미널에서 명령어를 직접 입력하여 설치를 진행하면서 K3s 설치 과정의 본질을 좀 더 가까이에서 느껴보겠습니다. 걱정하지 마세요, K3s의 설계 철학 덕분에 이 과정은 놀랍도록 간단하고 빠릅니다!
5.3.2.1 설치 스크립트 이용
K3s를 설치하는 가장 일반적이고 권장되는 방법은 공식적으로 제공되는 설치 스크립트(Installation Script)를 사용하는 것입니다. 이 스크립트는 K3s를 설치하고 기본적인 설정을 수행하는 데 필요한 모든 복잡한 작업들을 자동화하여, 사용자는 단 한 줄의 명령어만으로 설치를 완료할 수 있도록 해줍니다. 마치 복잡한 마법 주문처럼 보일 수 있지만, 그 안에는 체계적인 자동화 로직이 숨어 있습니다.
openSUSE 터미널을 열고, 다음 명령어를 복사하여 붙여넣은 후 실행해 보세요. 이 명령어를 실행하기 위해서는 관리자(root) 권한이 필요하므로, sudo를 사용하거나 root 사용자로 전환하여 실행해야 할 수 있습니다. 보통 일반 사용자 계정에서 아래 명령어를 그대로 실행하면 비밀번호를 묻고 관리자 권한으로 실행됩니다.
자, 이 한 줄의 명령어가 정확히 무슨 일을 하는 걸까요? 함께 분해해서 살펴보겠습니다.
- curl -sfL https://get.k3s.io: 이 부분은 curl이라는 명령줄 도구를 사용하여 지정된 URL(https://get.k3s.io)에서 설치 스크립트 파일의 내용을 다운로드하는 역할을 합니다. 여기에 사용된 옵션들은 다음과 같은 의미를 가집니다.
- s: 진행 상황이나 오류 메시지를 화면에 출력하지 않고 조용히(Silent) 실행합니다.
- f: HTTP 요청 시 서버 오류(예: 404 Not Found)가 발생하면 오류를 출력하고 실패(Fail) 처리합니다. (오류 없이 조용히 넘어가게 하는 -s 옵션과 함께 쓰여, 성공 시에는 조용하고 실패 시에는 명확히 알 수 있도록 합니다.)
- L: 만약 요청한 URL이 다른 위치로 리다이렉션(Redirection)되면, 그 리다이렉션된 최종 URL을 따라가서(Location) 내용을 가져옵니다.
결과적으로, 이 curl 명령어는 https://get.k3s.io 주소에서 K3s 설치 스크립트 파일의 텍스트 내용을 성공적으로 다운로드하여 표준 출력(보통 터미널 화면)으로 전달합니다.
- | (파이프): 유닉스/리눅스 셸에서 파이프 기호(|)는 앞선 명령어의 표준 출력 결과를 다음 명령어의 표준 입력으로 연결하는 역할을 합니다. 즉, curl 명령어가 다운로드한 설치 스크립트의 내용이 통째로 뒤따라오는 sh 명령어의 입력으로 전달됩니다.
- sh –: 이 부분은 sh (본 셸, Bourne Shell 또는 호환되는 셸) 인터프리터를 실행하여, 파이프를 통해 전달받은 표준 입력(- 기호는 표준 입력을 의미함)의 내용, 즉 설치 스크립트를 해석하고 실행하라는 명령어입니다.
결국, 이 한 줄의 명령어는 “인터넷에서 K3s 공식 설치 스크립트를 다운로드 받아서, 그 내용을 즉시 셸 스크립트로 실행하라”는 의미가 됩니다.
이 설치 스크립트가 실행되면서 내부적으로 수행하는 주요 작업들은 대략 다음과 같습니다.
- 여러분의 시스템 환경(운영체제, 아키텍처 등)을 감지합니다.
- 최신 버전의 K3s 바이너리 파일을 GitHub 릴리스 페이지 등에서 다운로드합니다.
- 다운로드한 바이너리를 적절한 시스템 경로(예: /usr/local/bin/k3s)에 설치합니다.
- K3s를 시스템 서비스(보통 systemd 서비스)로 등록하여, 시스템 부팅 시 자동으로 시작되고 안정적으로 관리될 수 있도록 설정합니다. (서비스 이름은 보통 k3s.service 또는 설치 옵션에 따라 k3s-server.service 등일 수 있습니다.)
- 필요한 설정 파일과 디렉토리(예: /etc/rancher/k3s, /var/lib/rancher/k3s)를 생성합니다.
- 기본적인 네트워크 설정(CNI 플러그인 등)과 필수 애드온(CoreDNS, Traefik 등)을 구성합니다.
- 마지막으로, 등록된 K3s 서비스를 시작하여 쿠버네티스 클러스터를 구동합니다.
이 모든 과정이 자동으로 진행되며, 특별한 문제가 없다면 몇 분 이내에 설치가 완료될 것입니다. 터미널 화면에 설치 과정 로그가 출력되므로, 진행 상황을 지켜볼 수 있습니다.
5.3.2.2 설치 옵션
앞서 보여드린 한 줄 명령어는 가장 기본적인 방식으로 최신 버전의 K3s 서버를 설치합니다. 하지만 때로는 설치 과정을 좀 더 세밀하게 제어하고 싶을 수 있습니다. 예를 들어, 특정 버전의 K3s를 설치하거나, 기본 컨테이너 런타임을 containerd가 아닌 다른 것으로 변경하거나, 특정 기능을 비활성화하는 등의 요구사항이 있을 수 있습니다.
K3s 설치 스크립트는 이러한 요구사항을 충족시키기 위해 환경 변수(Environment Variables)를 통해 다양한 설치 옵션을 지정할 수 있도록 지원합니다. 설치 스크립트를 실행하기 전에 특정 환경 변수를 설정해두면, 스크립트가 이를 인식하여 해당 옵션을 반영하여 설치를 진행합니다.
다음은 자주 사용될 수 있는 몇 가지 유용한 설치 옵션들의 예시입니다. (더 많은 옵션은 K3s 공식 문서를 참고하세요.)
- 특정 버전 설치 (INSTALL_K3S_VERSION): 최신 버전이 아닌 특정 버전의 K3s를 설치하고 싶다면, INSTALL_K3S_VERSION 환경 변수에 원하는 버전 태그(예: v1.27.9+k3s1)를 지정합니다.클립보드에 복사
- 컨테이너 런타임 변경 (INSTALL_K3S_EXEC 또는 실행 옵션): K3s는 기본적으로 containerd를 내장하고 사용합니다. 만약 다른 컨테이너 런타임(예: 시스템에 이미 설치된 Docker)을 사용하도록 설정하거나, K3s 실행 시 특정 옵션을 전달하고 싶다면 INSTALL_K3S_EXEC 환경 변수나 설치 후 K3s 서비스 설정 파일을 직접 수정하여 실행 옵션을 변경할 수 있습니다. 예를 들어, Docker를 사용하도록 시도해 볼 수 있지만, 이는 더 이상 K3s에서 공식적으로 권장되거나 완전히 지원되지 않을 수 있으므로 주의가 필요합니다. K3s는 containerd 와의 긴밀한 통합을 염두에 두고 설계되었습니다. 대부분의 경우 기본 containerd를 사용하는 것이 가장 좋습니다.
- 기본 Ingress Controller(Traefik) 비활성화: K3s는 기본적으로 Traefik Ingress Controller를 함께 설치합니다. 만약 다른 Ingress Controller(예: Nginx Ingress)를 사용하고 싶거나 Ingress 기능이 필요 없다면, 설치 시 –disable traefik 옵션을 전달하여 비활성화할 수 있습니다. 이는 INSTALL_K3S_EXEC 환경 변수를 통해 전달할 수 있습니다.server는 K3s를 서버 모드(컨트롤 플레인)로 실행하라는 의미이며, –disable traefik은 Traefik 애드온을 비활성화하는 옵션입니다.클립보드에 복사
- 워커 노드(Agent)로 설치: 만약 이미 실행 중인 K3s 서버(컨트롤 플레인)에 새로운 워커 노드를 추가하고 싶다면, 해당 노드에서 설치 스크립트를 실행할 때 K3S_URL (서버 URL)과 K3S_TOKEN (서버 접속 토큰) 환경 변수를 지정하여 에이전트 모드로 설치해야 합니다.<server_ip>는 K3s 서버의 IP 주소, <node_token>은 서버의 /var/lib/rancher/k3s/server/node-token 파일에서 얻을 수 있는 비밀 토큰 값으로 대체해야 합니다.클립보드에 복사
이처럼 K3s 설치 스크립트는 환경 변수를 통해 다양한 설치 시나리오와 사용자 정의 요구사항을 지원하는 유연성을 제공합니다. 하지만 처음 배우는 단계에서는 특별한 이유가 없다면 가장 기본적인 설치 명령어(curl -sfL https://get.k3s.io | sh -)를 사용하는 것으로 충분하며, 이 책의 이후 실습도 이를 기준으로 진행될 것입니다.
5.3.2.3 서비스 활성화 및 상태 확인
K3s 설치 스크립트는 단순히 파일을 복사하는 것뿐만 아니라, K3s가 시스템에서 지속적으로 실행될 수 있도록 시스템 서비스로 등록하는 작업까지 자동으로 수행합니다. 대부분의 최신 리눅스 배포판(openSUSE 포함)은 systemd라는 시스템 및 서비스 관리자를 사용하므로, K3s는 보통 k3s.service (서버 모드) 또는 k3s-agent.service (에이전트 모드)라는 이름의 systemd 유닛(unit) 파일로 등록됩니다.
설치 스크립트는 설치 마지막 단계에서 이 등록된 K3s 서비스를 자동으로 활성화(enable)하고 시작(start)합니다. ‘활성화’는 시스템이 부팅될 때마다 K3s 서비스가 자동으로 시작되도록 설정하는 것을 의미하고, ‘시작’은 지금 당장 K3s 서비스를 실행시키는 것을 의미합니다.
따라서 설치가 성공적으로 완료되었다면, K3s 서비스는 이미 백그라운드에서 실행 중일 가능성이 높습니다. 하지만 우리는 직접 확인해 보는 것이 좋겠죠? 터미널에서 다음 명령어를 사용하여 K3s 서비스의 현재 상태를 확인할 수 있습니다.
systemctl은 systemd 서비스를 제어하는 기본 명령어입니다. status k3s는 k3s라는 이름의 서비스에 대한 상세한 상태 정보를 보여달라는 요청입니다. 명령어를 실행하면 다음과 유사한 출력을 볼 수 있습니다.
여기서 우리가 주목해야 할 가장 중요한 정보는 Active: 라인입니다.
- active (running): 이 상태는 K3s 서비스가 현재 성공적으로 실행 중임을 나타냅니다. 이것이 우리가 기대하는 결과입니다!
- inactive (dead): 서비스가 실행 중이지 않음을 의미합니다. 설치 직후라면 문제가 있을 수 있습니다.
- activating (start): 서비스가 시작 중인 상태입니다. 잠시 후 다시 확인해 보세요.
- failed: 서비스 시작에 실패했음을 의미합니다. 이 경우 아래쪽 로그 메시지에서 오류 원인을 찾아 해결해야 합니다.
또한, Loaded: 라인에 enabled라고 표시되어 있다면, 시스템 부팅 시 K3s 서비스가 자동으로 시작되도록 설정되었음을 의미합니다.
만약 서비스가 실행 중이지 않거나(inactive 또는 failed) 문제가 발생했다면, 다음 systemctl 명령어들을 사용하여 서비스를 직접 제어할 수 있습니다.
- 서비스 시작: sudo systemctl start k3s
- 서비스 중지: sudo systemctl stop k3s
- 서비스 재시작: sudo systemctl restart k3s
- 부팅 시 자동 시작 활성화: sudo systemctl enable k3s
- 부팅 시 자동 시작 비활성화: sudo systemctl disable k3s
- 서비스 로그 확인 (문제 진단 시 유용): sudo journalctl -u k3s
systemctl status k3s 명령을 통해 Active: active (running) 상태를 확인했다면, 여러분의 openSUSE 시스템에 K3s 서버가 성공적으로 설치되고 힘차게 심장 박동을 시작했음을 의미합니다. 이제 마지막 단계로, 이 K3s 클러스터와 실제로 소통하기 위한 kubectl 설정을 완료하고 최종 환경 점검을 수행할 준비가 되었습니다.