본문 바로가기
Devops/Kubernetes

[Kubernetes] Errors during downloading metadata for repository 'kubernetes'

by dev_ss 2024. 4. 9.

 

 

 

 

쿠버네티스 클러스터의 노드에서 타 패키지를 이용하고자 yum으로 설치하려고 하는 중 아래와 같은 에러가 발생했다.

 

 

 

[참고 사진]

 

 

 

내용으로 보았을 때, 쿠버네티스 패키지를 설치하기 위해서 등록했던 쿠버네티스 레포지토리를 찾을 수 없어서 404 에러를 반환하였고, 이로 인하여 yum을 이용한 어떠한 패키지도 설치할 수 없었다.

 

 

 

 


Search

 

 

이를 해결하기 위하여 추가적으로 자료 조사를 진행하였고, 아래와 같은 공지를 확인할 수 있었다.

 

 

https://kubernetes.io/blog/2023/08/31/legacy-package-repository-deprecation/

 

Kubernetes Legacy Package Repositories Will Be Frozen On September 13, 2023

Authors: Bob Killen (Google), Chris Short (AWS), Jeremy Rickard (Microsoft), Marko Mudrinić (Kubermatic), Tim Bannister (The Scale Factory) On August 15, 2023, the Kubernetes project announced the general availability of the community-owned package reposi

kubernetes.io

 

 

24년 3월을 기준으로  레거시 레포지토리 apt.kubernetes.io yum.kubernetes.io 에 대한 지원을 중단하고,

pkgs.k8s.io 라는 새로운 레포지토리를 기준으로 패키지를 제공할 것이며, v1.24.0 이상의 버전만 제공한다는 것이다.

 

 

리눅스 배포판에 따라 아래 사진을 참조하여 레거시 레포지토리 여부를 확인할 수 있다.

(아래 사진처럼 설정되어 있으면 레거시 레포지토리)

 

 

 

- RPM-based

 

 

 

 

- Debian-based

 

 


Troubleshoot

 

 

해결 방법은 위 공지와 같이 등록되어 있던 쿠버네티스 레포지토리를 변경하면 되는 것이었다.

 

 

아래 내용을 참고하였다.

 

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/change-package-repository/

 

Changing The Kubernetes Package Repository

This page explains how to enable a package repository for the desired Kubernetes minor release upon upgrading a cluster. This is only needed for users of the community-owned package repositories hosted at pkgs.k8s.io. Unlike the legacy package repositories

kubernetes.io

 

 

먼저 노드의 OS는 RHEL을 이용하고 있기 때문에, /etc/yum.repos.d/kubernetes.repo의 내용을 확인하였다.

 

 

아래와 같이 설정이 되어 있었고, baseurl과 gpgkey를 보면, packages.cloud.google.com이라는 내용을 보아, 레거시 레포지토리인 것을 확인할 수 있었다.

 

[기존의 쿠버네티스 레포지토리]

 

 

 

 

이를 아래와 같이 바꾸어 해결할 수 있었다.

 

[변경된 쿠버네티스 레포지토리]

 

 

[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl

 

 


Additional

 

 

특이한 점은 경로 상에 v1.28이라는 버전이 명시되어 있는데, 버전에 따라 레포지토리 경로가 바뀌는 점을 주의해야 할 것 같다.

 

[출처 : https://v1-28.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/change-package-repository/]

 

 

우측 상단에 Version을 선택할 수 있고, 해당 버전에 따라 레포지토리 설정 내용이 달라진다.

 

 

아래는 OS별 여러 버전의 예시이다.

 

############################### Rhel / CentOs ###################################
# v1.29의 레포지토리
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl


# v1.28의 레포지토리
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl
##################################################################################




############################### Ubuntu / Debian ###################################
# v1.29의 레포지토리
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /


# v1.28의 레포지토리
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /
##################################################################################

 

 

 

또한, 새로 바뀐 레포지토리에서는 v1.24.0 이상의 버전만 제공되기 때문에 기존 CRI로 Docker-Shim을 이용하던 클러스터였으면, 이번 일을 통하여 CRI의 변경이 강제될 것 같다.

 

 

 

반응형