Linux上でのkubectlのインストールおよびセットアップ
始める前に
kubectlのバージョンは、クラスターのマイナーバージョンとの差分が1つ以内でなければなりません。 たとえば、クライアントがv1.33であれば、v1.32、v1.33、v1.34のコントロールプレーンと通信できます。 最新の互換性のあるバージョンのkubectlを使うことで、不測の事態を避けることができるでしょう。
Linuxへkubectlをインストールする
Linuxへkubectlをインストールするには、次の方法があります:
curlを使用してLinuxへkubectlのバイナリをインストールする
次のコマンドにより、最新リリースをダウンロードしてください:
備考:
特定のバージョンをダウンロードする場合、コマンドの
$(curl -L -s https://dl.k8s.io/release/stable.txt)
の部分を特定のバージョンに書き換えてください。たとえば、Linux x86-64へ1.33.0のバージョンをダウンロードするには、次のコマンドを入力します:
curl -LO https://dl.k8s.io/release/v1.33.0/bin/linux/amd64/kubectl
そして、Linux ARM64に対しては、次のコマンドを入力します:
curl -LO https://dl.k8s.io/release/v1.33.0/bin/linux/arm64/kubectl
バイナリを検証してください(オプション)
kubectlのチェックサムファイルをダウンロードします:
チェックサムファイルに対してkubectlバイナリを検証します:
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
正しければ、出力は次のようになります:
kubectl: OK
チェックに失敗すると、
sha256
は0以外のステータスで終了し、次のような出力を表示します:kubectl: FAILED sha256sum: WARNING: 1 computed checksum did NOT match
備考:
同じバージョンのバイナリとチェックサムをダウンロードしてください。kubectlをインストールしてください
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
備考:
ターゲットシステムにルートアクセスを持っていない場合でも、
~/.local/bin
ディレクトリにkubectlをインストールできます:chmod +x kubectl mkdir -p ~/.local/bin mv ./kubectl ~/.local/bin/kubectl # そして ~/.local/bin を $PATH の末尾 (または先頭) に追加します
インストールしたバージョンが最新であることを確認してください:
kubectl version --client
または、バージョンの詳細を表示するために次を使用します:
kubectl version --client --output=yaml
ネイティブなパッケージマネージャーを使用してインストールする
apt
のパッケージ一覧を更新し、Kubernetesのapt
リポジトリを利用するのに必要なパッケージをインストールしてください:sudo apt-get update # apt-transport-httpsはダミーパッケージの可能性があります。その場合、そのパッケージはスキップできます sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
Kubernetesパッケージリポジトリの公開署名キーをダウンロードしてください。 すべてのリポジトリに同じ署名キーが使用されるため、URL内のバージョンは無視できます:
# `/etc/apt/keyrings`フォルダーが存在しない場合は、curlコマンドの前に作成する必要があります。下記の備考を参照してください。 # sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 特権のないAPTプログラムがこのkeyringを読めるようにします
備考:
Debian 12とUbuntu 22.04より古いリリースでは、/etc/apt/keyrings
フォルダーは既定では存在しないため、curlコマンドの前に作成する必要があります。適切なKubernetesの
apt
リポジトリを追加してください。 v1.33とは異なるKubernetesバージョンを利用したい場合は、以下のコマンドのv1.33を目的のマイナーバージョンに置き換えてください:# これにより、/etc/apt/sources.list.d/kubernetes.listにある既存の設定が上書きされます echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list # command-not-foundのようなツールが正しく動作するようにします
備考:
kubectlを他のマイナーリリースにアップグレードするためには、apt-get update
とapt-get upgrade
を実行する前に、/etc/apt/sources.list.d/kubernetes.list
の中のバージョンを上げる必要があります。 この手順についてはChanging The Kubernetes Package Repositoryに詳細が記載されています。apt
のパッケージインデックスを更新し、kubectlをインストールしてください:sudo apt-get update sudo apt-get install -y kubectl
Kubernetesの
yum
リポジトリを追加してください。 v1.33とは異なるKubernetesバージョンを利用したい場合は、以下のコマンドのv1.33を目的のマイナーバージョンに置き換えてください:# これにより、/etc/yum.repos.d/kubernetes.repoにある既存の設定が上書きされます cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.33/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.33/rpm/repodata/repomd.xml.key EOF
備考:
kubectlを他のマイナーリリースにアップグレードするためには、yum update
を実行する前に、/etc/yum.repos.d/kubernetes.repo
の中のバージョンを上げる必要があります。 この手順についてはChanging The Kubernetes Package Repositoryに詳細が記載されています。yum
を使用してkubectlをインストールしてください:sudo yum install -y kubectl
Kubernetesの
zypper
リポジトリを追加してください。 v1.33とは異なるKubernetesバージョンを利用したい場合は、以下のコマンドのv1.33を目的のマイナーバージョンに置き換えてください。# これにより、/etc/zypp/repos.d/kubernetes.repoにある既存の設定が上書きされます cat <<EOF | sudo tee /etc/zypp/repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.33/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.33/rpm/repodata/repomd.xml.key EOF
備考:
kubectlを他のマイナーリリースにアップグレードするためには、zypper update
を実行する前に、/etc/zypp/repos.d/kubernetes.repo
の中のバージョンを上げる必要があります。 この手順についてはChanging The Kubernetes Package Repositoryに詳細が記載されています。zypper
を更新し、新しいリポジトリの追加を確認してください:sudo zypper update
このメッセージが表示されたら、't' または 'a' を押してください:
New repository or package signing key received: Repository: Kubernetes Key Fingerprint: 1111 2222 3333 4444 5555 6666 7777 8888 9999 AAAA Key Name: isv:kubernetes OBS Project <isv:[email protected]> Key Algorithm: RSA 2048 Key Created: Thu 25 Aug 2022 01:21:11 PM -03 Key Expires: Sat 02 Nov 2024 01:21:11 PM -03 (expires in 85 days) Rpm Name: gpg-pubkey-9a296436-6307a177 Note: Signing data enables the recipient to verify that no modifications occurred after the data were signed. Accepting data with no, wrong or unknown signature can lead to a corrupted system and in extreme cases even to a system compromise. Note: A GPG pubkey is clearly identified by its fingerprint. Do not rely on the key's name. If you are not sure whether the presented key is authentic, ask the repository provider or check their web site. Many providers maintain a web page showing the fingerprints of the GPG keys they are using. Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): a
zypper
を使用してkubectlをインストールしてください:sudo zypper install -y kubectl
他のパッケージマネージャーを使用してインストールする
kubectlの設定を検証する
kubectlがKubernetesクラスターを探索し接続するために、kubeconfigファイルが必要です。 これは、kube-up.shによりクラスターを作成した際や、Minikubeクラスターを正常にデプロイした際に自動生成されます。 デフォルトでは、kubectlの設定は~/.kube/config
に格納されています。
クラスターの状態を取得し、kubectlが適切に設定されていることを確認してください:
kubectl cluster-info
URLのレスポンスが表示されている場合は、kubectlはクラスターに接続するよう正しく設定されています。
以下のようなメッセージが表示されている場合は、kubectlは正しく設定されていないか、Kubernetesクラスターに接続できていません。
The connection to the server <server-name:port> was refused - did you specify the right host or port?
たとえば、ラップトップ上(ローカル環境)でKubernetesクラスターを起動するような場合、Minikubeなどのツールを最初にインストールしてから、上記のコマンドを再実行する必要があります。
kubectl cluster-info
がURLレスポンスを返したにもかかわらずクラスターにアクセスできない場合は、次のコマンドで設定が正しいことを確認してください:
kubectl cluster-info dump
エラーメッセージ'No Auth Provider Found'のトラブルシューティング
Kubernetes 1.26にて、kubectlは以下のクラウドプロバイダーが提供するマネージドKubernetesのビルトイン認証を削除しました。 これらのプロバイダーは、クラウド固有の認証を提供するkubectlプラグインをリリースしています。 手順については以下のプロバイダーのドキュメントを参照してください:
- Azure AKS: kubelogin plugin
- Google Kubernetes Engine: gke-gcloud-auth-plugin
(この変更とは関係なく、他の理由で同じエラーメッセージが表示される可能性もあります。)
オプションのkubectlの設定とプラグイン
シェルの自動補完を有効にする
kubectlはBash、Zsh、Fish、PowerShellの自動補完を提供しています。 これにより、入力を大幅に削減することができます。
以下にBash、Fish、Zshの自動補完の設定手順を示します。
はじめに
Bashにおけるkubectlの補完スクリプトはkubectl completion bash
コマンドで生成できます。 補完スクリプトをシェル内に読み込ませることでkubectlの自動補完が有効になります。
ただし、補完スクリプトはbash-completionに依存しているため、事前にインストールしておく必要があります(type _init_completion
を実行することで、bash-completionがすでにインストールされていることを確認できます)。
bash-completionをインストールする
bash-completionは多くのパッケージマネージャーから提供されています(こちらを参照してください)。 apt-get install bash-completion
またはyum install bash-completion
などでインストールできます。
上記のコマンドでbash-completionの主要スクリプトである/usr/share/bash-completion/bash_completion
が作成されます。 パッケージマネージャーによっては、このファイルを~/.bashrc
にて手動で読み込ませる必要があります。
これを調べるには、シェルをリロードしてからtype _init_completion
を実行してください。 コマンドが成功していればすでに設定済みです。そうでなければ、~/.bashrc
ファイルに以下を追記してください:
source /usr/share/bash-completion/bash_completion
シェルをリロードし、type _init_completion
を実行してbash-completionが正しくインストールされていることを検証してください。
kubectlの自動補完を有効にする
Bash
次に、kubectl補完スクリプトがすべてのシェルセッションで読み込まれるように設定する必要があります。 これを行うには2つの方法があります:
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
sudo chmod a+r /etc/bash_completion.d/kubectl
kubectlにエイリアスを張っている場合は、エイリアスでも動作するようにシェルの補完を拡張することができます:
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
備考:
bash-completionは/etc/bash_completion.d
内のすべての補完スクリプトを読み込みます。どちらも同様の手法です。 シェルをリロードしたあとに、kubectlの自動補完が機能するはずです。 シェルの現在のセッションでbashの自動補完を有効にするには、~/.bashrcを読み込みます:
source ~/.bashrc
備考:
Fishに対する自動補完はkubectl 1.23以降が必要です。Fishにおけるkubectlの補完スクリプトはkubectl completion fish
コマンドで生成できます。 補完スクリプトをシェル内に読み込ませることでkubectlの自動補完が有効になります。
すべてのシェルセッションで使用するには、~/.config/fish/config.fish
に以下を追記してください:
kubectl completion fish | source
シェルをリロードしたあとに、kubectlの自動補完が機能するはずです。
Zshにおけるkubectlの補完スクリプトはkubectl completion zsh
コマンドで生成できます。 補完スクリプトをシェル内に読み込ませることでkubectlの自動補完が有効になります。
すべてのシェルセッションで使用するには、~/.zshrc
に以下を追記してください:
source <(kubectl completion zsh)
kubectlにエイリアスを張っている場合でも、kubectlの自動補完は自動的に機能します。
シェルをリロードしたあとに、kubectlの自動補完が機能するはずです。
2: command not found: compdef
のようなエラーが出力された場合は、以下を~/.zshrc
の先頭に追記してください:
autoload -Uz compinit
compinit
kubercを設定する
詳細については、kubercを参照してください。
kubectl convert
プラグインをインストールする
異なるAPIバージョン間でマニフェストを変換できる、Kubernetesコマンドラインツールkubectl
のプラグインです。 これは特に、新しいKubernetesのリリースで、非推奨ではないAPIバージョンにマニフェストを移行する場合に役に立ちます。 詳細については非推奨ではないAPIへの移行を参照してください。
次のコマンドを使用して最新リリースをダウンロードしてください:
バイナリを検証してください(オプション)
kubectl-convertのチェックサムファイルをダウンロードします:
チェックサムファイルに対してkubectl-convertバイナリを検証します:
echo "$(cat kubectl-convert.sha256) kubectl-convert" | sha256sum --check
正しければ、出力は次のようになります:
kubectl-convert: OK
チェックに失敗すると、
sha256
は0以外のステータスで終了し、次のような出力を表示します:kubectl-convert: FAILED sha256sum: WARNING: 1 computed checksum did NOT match
備考:
同じバージョンのバイナリとチェックサムをダウンロードしてください。kubectl-convertをインストールしてください
sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
プラグインが正常にインストールできたことを確認してください
kubectl convert --help
何もエラーが表示されない場合は、プラグインが正常にインストールされたことを示しています。
プラグインのインストール後、インストールファイルを削除してください:
rm kubectl-convert kubectl-convert.sha256
次の項目
- Minikubeをインストールする
- クラスターの作成に関する詳細をスタートガイドで確認する。
- アプリケーションを起動して公開する方法を学ぶ。
- あなたが作成していないクラスターにアクセスする必要がある場合は、クラスターアクセスドキュメントの共有を参照してください。
- kubectlリファレンスドキュメントを参照する