kubectlをapt-get updateしたらno longer has a Release fileエラー

記事タイトルとURLをコピーする

G-gen の武井です。Kubernetes(kubectl)がインストールされた環境で apt-get update (パッケージ更新情報取得コマンド)を実行したところ no longer has a Release file というエラーが発生しました。当記事で事象の原因と対策を説明します。

事象

状況

以下の環境で apt-get update コマンドを実行したところエラーが発生しました。GKE クラスタを管理するため kubectl がインストールされています。

# 環境情報
  
$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
  
$ which kubectl 
/usr/bin/kubectl

エラーの詳細

エラーメッセージは E: The repository 'https://apt.kubernetes.io kubernetes-xenial Release' no longer has a Release file. でした。

出力の詳細は以下のとおりです。

# 実施内容
  
$ sudo apt-get update
Hit:2 https://download.docker.com/linux/debian bullseye InRelease                                                                                
Hit:3 https://deb.debian.org/debian bullseye InRelease                                                                                           
Hit:4 https://deb.debian.org/debian bullseye-updates InRelease                                                                                   
Hit:5 https://deb.debian.org/debian-security bullseye-security InRelease                                                                         
Hit:6 https://deb.debian.org/debian bullseye-backports InRelease                                                                                 
Hit:1 https://packages.microsoft.com/repos/code stable InRelease                                                                                 
Hit:8 https://packages.cloud.google.com/apt cloud-sdk InRelease                                                                
Ign:7 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Ign:9 https://storage.googleapis.com/cros-packages/123 bullseye InRelease
Err:10 https://packages.cloud.google.com/apt kubernetes-xenial Release
  404  Not Found [IP: 142.250.206.238 443]
Hit:11 https://storage.googleapis.com/cros-packages/123 bullseye Release
Reading package lists... Done
E: The repository 'https://apt.kubernetes.io kubernetes-xenial Release' no longer has a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details

原因

推察

エラーメッセージには apt.kubernetes.io リポジトリが存在しないと記されていることから、apt-get update コマンド実行時にリポジトリに接続できなかったことが原因だと推察できます。

調査結果

エラーメッセージに記載のリンク (https://apt.kubernetes.io) を確認したところ、apt.kubernetes.io および yum.kubernetes.io (legacy package repositories) が 2024年3月4日 に削除され、新たに pkgs.k8s.io に置き換わったとの記載がありました。

4th March 2024:
The legacy package repositories have been removed. It's not possible to install Kubernetes packages from the legacy package repositories any longer

対処方法

以下のドキュメントにあるとおり、/etc/apt/sources.list.d/kubernetes.list に記載のあるリポジトリを pkgs.k8s.io に変更することで解消します。

# 変更前
  
$ cat /etc/apt/sources.list.d/kubernetes.list 
deb https://apt.kubernetes.io/ kubernetes-xenial main
# 変更後
  
$ cat /etc/apt/sources.list.d/kubernetes.list 
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /
# 再実行
  
$ sudo apt-get update
Hit:1 https://deb.debian.org/debian bullseye InRelease
Get:3 https://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]                                                                         
Get:4 https://download.docker.com/linux/debian bullseye InRelease [43.3 kB]                                                                      
Get:5 https://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]                                                               
Get:6 https://deb.debian.org/debian bullseye-backports InRelease [49.0 kB]                                                                       
Get:2 https://packages.microsoft.com/repos/code stable InRelease [3,590 B]                                                                       
Ign:8 https://storage.googleapis.com/cros-packages/123 bullseye InRelease                                                                   
Get:7 https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v1.28/deb  InRelease [1,189 B]
Hit:9 https://packages.cloud.google.com/apt cloud-sdk InRelease                                      
Hit:10 https://storage.googleapis.com/cros-packages/123 bullseye Release
Get:11 https://packages.microsoft.com/repos/code stable/main arm64 Packages [17.5 kB]
Get:12 https://packages.microsoft.com/repos/code stable/main amd64 Packages [16.8 kB]
Get:13 https://packages.microsoft.com/repos/code stable/main armhf Packages [17.4 kB]
Get:14 https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v1.28/deb  Packages [13.9 kB]
Fetched 255 kB in 1s (259 kB/s)      
Reading package lists... Done

最後に

kubernetes をはじめ、apt のリポジトリは以下のファイルで管理されています。

今回のようにリポジトリに起因するエラーが発生した場合、まずはファイルに記載のリポジトリに接続できること、リポジトリが存在することをご確認ください。

# /etc/apt/sources.list ファイル
  
$ cat /etc/apt/sources.list
# Generated by distrobuilder
deb https://deb.debian.org/debian bullseye main
deb https://deb.debian.org/debian bullseye-updates main
deb https://deb.debian.org/debian-security/ bullseye-security main
# /etc/apt/sources.list.d ディレクトリ配下のファイルの例
  
$ pwd
/etc/apt/sources.list.d
  
$ ls -l
total 20
-rw-r--r-- 1 root root 125 Apr 17 15:57 cros.list
-rw-r--r-- 1 root root 131 Dec 15 17:30 docker.list
-rw-r--r-- 1 root root 106 Oct 13  2023 google-cloud-sdk.list
-rw-r--r-- 1 root root 108 May  7 19:50 kubernetes.list
-rw-r--r-- 1 root root 203 Dec 13 18:37 vscode.list

武井 祐介 (記事一覧)

2022年4月にジョイン。クラウドソリューション部所属。G-gen唯一の山梨県在住エンジニア

Google Cloud Partner Top Engineer 2024 に選出。IaC や CI/CD 周りのサービスやプロダクトが興味分野です。

趣味はロードバイク、ロードレースやサッカー観戦です。