저고데

[시행착오] 쿠버네티스 kubectl, kubeadm, kubelet 다운로드가 안될 때 본문

시행착오

[시행착오] 쿠버네티스 kubectl, kubeadm, kubelet 다운로드가 안될 때

진철 2024. 7. 31. 15:08
728x90
반응형
사건의 발단

먼저, 필자의 가상 머신은 Virtual Box이며, OS은 Ubuntu 22.04 LTS이다.

때는 바야흐로, 어제로 레디스를 이용하여 쿠버네티스 배포를 하던 중 발생한 문제이다.

쿠버네티스를 사용하려면 kubectl, kubeadm, kubelet을 다운받아야 한다. (각각의 설명은 추후에 다시 작성하겠다.)

구글링을 통해서 아래의 명령어를 입력했음에도 불구하고 오류가 발생하였다.

sudo apt install -y kubectl kubeadm kubelet

오류 내용을 읽어보았을 때, 내가 실수해서 발생한 것은 아닌 것만 같았다.

각 package를 읽을 수 없다는 것을 볼 때, kube와 관련된 패키지 서버가 문제가 있지 않을까 생각했다.

우선은 오류 내용의 'snap install'을 사용해보기로 하였다.

 

방법 1: snap 사용하기

(단, 해당 방법은 다운로드만 되고 쿠버네티스가 실행되지 않으므로, 다운만 하실 분들만 보시면 됩니다.)

snap은 apt와 유사하게 리눅스에서 소프트웨어를 설치하고 관리하는 주요 패키지 관리 시스템이다.

아래의 명령어를 통해서 각 패키지 다운로드가 가능하다.

snap install kubectl --classic
snap install kubeadm --classic
snap install kubelet --classic

하지만, 다운이 되었음에도 불구하고 쿠버네티스를 실행하는 명령어를 입력하면 아래와 같이 kubelet이 실행중이지 않다는 오류가 발생한다.

심지어, 해당 강제적으로 kubelet.service를 enabled, start 시켜도 systemctl에서 kubelet을 찾지 못하는 문제가 발생한다.

 

systemctl이 kubelet을 찾지 못하는 이유는 snap패키지가 전통적인 시스템 서비스와는 다르게 관리되기 때문이다.

snap 패키지는 자체적으로 관리되는 서비스 환경을 가지고 있기에 systemctl과 같은 전통적인 서비스 관리 도구와는 별도로 동작해야므로 찾지 못하는 것이다.

 

방법 2: Repository를 변경하자

머리를 쥐어싸고 있던 중, 하나의 소식을 발견하였다.

쿠버테티스 공식문서의 내용이었는데, package repository가 변경된다는 것이었다.

https://kubernetes.io/blog/2023/08/15/pkgs-k8s-io-introduction/

 

pkgs.k8s.io: Introducing Kubernetes Community-Owned Package Repositories

On behalf of Kubernetes SIG Release, I am very excited to introduce the Kubernetes community-owned software repositories for Debian and RPM packages: pkgs.k8s.io! The new package repositories are replacement for the Google-hosted package repositories (apt.

kubernetes.io

다른 오픈소스도 마찬가지겠지만 쿠버네티스는 package를 가져오기 위해서 package repository에 접속해야한다.

하지만 2024년 3월에 기존 package repository가 삭제되고 새로운 package repository가 생성되었다는 것이었다.

패키지를 다운받기 위해서 아래와 같은 명령어를 그러려니하고 입력했었는데, 해당 명령어가 삭제된 repository에 접속하는 과정인 것이다.

아무 것도 없는 창고에서 물건을 끄집어내려고 하니 오류가 발생하는 것은 당연한 결과였다.

# 이전 Package repository (오류 발생)
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt -y install kubelet kubectl kubeadm

 

자 그렇다면 이제 답이 나왔지 않는가?

해당 경로를 변경된 새로운 package repository로 변경하면 되는 것이다.

# 변경된 Package repository (문제 해결)
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.23/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.23/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt -y install kubelet kubectl kubeadm

 

하지만, 해당 방법으로도 오류가 발생할 수 있다.

왜냐하면, 변경된 패키지는 Kubernetes v1.24.0부터 적용되기 때문이다.

따라서, 만약 오류가 발생한다면 Kubernetes를 업데이트하기를 바란다.

 

느낀점

명령어를 입력할 때는 아무 생각없이 ctrl + C/ ctrl + V만 하지 말고 해당 명령어가 무엇을 의미하는 지 살펴보도록 하자.

그것이 오류를 찾는데 매우 중요한 실마리가 될 것이다.

728x90
반응형