macOS上でのkubectlのインストールおよびセットアップ
始める前に
kubectlのバージョンは、クラスターのマイナーバージョンとの差分が1つ以内でなければなりません。 たとえば、クライアントがv1.32であれば、v1.31、v1.32、v1.33のコントロールプレーンと通信できます。 最新の互換性のあるバージョンのkubectlを使うことで、不測の事態を避けることができるでしょう。
macOSへkubectlをインストールする
macOSへkubectlをインストールするには、次の方法があります:
curlを使用してmacOSへkubectlのバイナリをインストールする
-
最新リリースをダウンロードしてください:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
備考:
特定のバージョンをダウンロードする場合、コマンドの
$(curl -L -s https://dl.k8s.io/release/stable.txt)
の部分を特定のバージョンに置き換えてください。例えば、Intel macOSへ1.32.0のバージョンをダウンロードするには、次のコマンドを入力します:
curl -LO "https://dl.k8s.io/release/v1.32.0/bin/darwin/amd64/kubectl"
Appleシリコン上のmacOSに対しては、次を入力します:
curl -LO "https://dl.k8s.io/release/v1.32.0/bin/darwin/arm64/kubectl"
-
バイナリを検証してください(オプション)
kubectlのチェックサムファイルをダウンロードします:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
チェックサムファイルに対してkubectlバイナリを検証します:
echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
正しければ、出力は次のようになります:
kubectl: OK
チェックに失敗すると、
shasum
は0以外のステータスで終了し、次のような出力を表示します:kubectl: FAILED shasum: WARNING: 1 computed checksum did NOT match
備考:
同じバージョンのバイナリとチェックサムをダウンロードしてください。 -
kubectlバイナリを実行可能にしてください。
chmod +x ./kubectl
-
kubectlバイナリを
PATH
の中に移動させてください。sudo mv ./kubectl /usr/local/bin/kubectl sudo chown root: /usr/local/bin/kubectl
備考:
/usr/local/bin
がPATH環境変数の中に含まれるようにしてください。 -
インストールしたバージョンが最新であることを確認してください:
kubectl version --client
または、バージョンの詳細を表示するために次を使用します:
kubectl version --client --output=yaml
-
kubectlをインストールし、検証した後は、チェックサムファイルを削除してください:
rm kubectl.sha256
Homebrewを使用してmacOSへインストールする
macOSでHomebrewパッケージマネージャーを使用していれば、Homebrewでkubectlをインストールできます。
-
インストールコマンドを実行してください:
brew install kubectl
または
brew install kubernetes-cli
-
インストールしたバージョンが最新であることを確認してください:
kubectl version --client
MacPortsを使用してmacOSへインストールする
macOSでMacPortsパッケージマネージャーを使用していれば、MacPortsでkubectlをインストールできます。
-
インストールコマンドを実行してください:
sudo port selfupdate sudo port install kubectl
-
インストールしたバージョンが最新であることを確認してください:
kubectl version --client
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に依存しているため、事前にインストールしておく必要があります。
警告:
bash-completionにはv1とv2の2つのバージョンがあります。 v1はBash 3.2(macOSのデフォルト)用で、v2はBash 4.1以降向けです。 kubectlの補完スクリプトはbash-completionのv1とBash 3.2では正しく動作しません。 bash-completion v2とBash 4.1以降が必要になります。 したがって、macOSで正常にkubectlの補完を使用するには、Bash 4.1以降をインストールする必要があります(手順)。 以下の手順では、Bash4.1以降(Bashのバージョンが4.1またはそれより新しいことを指します)を使用することを前提とします。Bashのアップグレード
ここではBash 4.1以降の使用を前提としています。 Bashのバージョンは下記のコマンドで調べることができます:
echo $BASH_VERSION
バージョンが古い場合、Homebrewを使用してインストールもしくはアップグレードできます:
brew install bash
シェルをリロードし、希望するバージョンを使用していることを確認してください:
echo $BASH_VERSION $SHELL
Homebrewは通常、/usr/local/bin/bash
にインストールします。
bash-completionをインストールする
備考:
前述のとおり、この手順ではBash 4.1以降であることが前提のため、bash-completion v2をインストールすることになります(これとは逆に、Bash 3.2およびbash-completion v1の場合ではkubectlの補完は動作しません)。type _init_completion
を実行することで、bash-completionがすでにインストールされていることを確認できます。
ない場合は、Homebrewを使用してインストールすることができます:
brew install bash-completion@2
このコマンドの出力で示されたように、~/.bash_profile
に以下を追記してください:
brew_etc="$(brew --prefix)/etc" && [[ -r "${brew_etc}/profile.d/bash_completion.sh" ]] && . "${brew_etc}/profile.d/bash_completion.sh"
シェルをリロードし、type _init_completion
を実行してbash-completion v2が正しくインストールされていることを検証してください。
kubectlの自動補完を有効にする
次に、kubectl補完スクリプトがすべてのシェルセッションで読み込まれるように設定する必要があります。 これを行うには複数の方法があります:
-
補完スクリプトを
~/.bash_profile
内で読み込ませる:echo 'source <(kubectl completion bash)' >>~/.bash_profile
-
補完スクリプトを
/usr/local/etc/bash_completion.d
ディレクトリに追加する:kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
-
kubectlにエイリアスを張っている場合は、エイリアスでも動作するようにシェルの補完を拡張することができます:
echo 'alias k=kubectl' >>~/.bash_profile echo 'complete -o default -F __start_kubectl k' >>~/.bash_profile
-
kubectlをHomebrewでインストールした場合(前述の通り)、kubectlの補完スクリプトはすでに
/usr/local/etc/bash_completion.d/kubectl
に格納されているでしょうか。 この場合、なにも操作する必要はありません。備考:
Homebrewでインストールしたbash-completion v2はBASH_COMPLETION_COMPAT_DIR
ディレクトリ内のすべてのファイルを読み込むため、後者の2つの方法が機能します。
どの場合でも、シェルをリロードしたあとに、kubectlの自動補完が機能するはずです。
備考:
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
kubectl convert
プラグインをインストールする
異なるAPIバージョン間でマニフェストを変換できる、Kubernetesコマンドラインツールkubectl
のプラグインです。
これは特に、新しいKubernetesのリリースで、非推奨ではないAPIバージョンにマニフェストを移行する場合に役に立ちます。
詳細については非推奨ではないAPIへの移行を参照してください。
-
次のコマンドを使用して最新リリースをダウンロードしてください:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert"
-
バイナリを検証してください(オプション)
kubectl-convertのチェックサムファイルをダウンロードします:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert.sha256"
チェックサムファイルに対してkubectl-convertバイナリを検証します:
echo "$(cat kubectl-convert.sha256) kubectl-convert" | shasum -a 256 --check
正しければ、出力は次のようになります:
kubectl-convert: OK
チェックに失敗すると、
shasum
は0以外のステータスで終了し、次のような出力を表示します:kubectl-convert: FAILED shasum: WARNING: 1 computed checksum did NOT match
備考:
同じバージョンのバイナリとチェックサムをダウンロードしてください。 -
kubectl-convertバイナリを実行可能にしてください。
chmod +x ./kubectl-convert
-
kubectl-convertバイナリを
PATH
の中に移動してください。sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert sudo chown root: /usr/local/bin/kubectl-convert
備考:
/usr/local/bin
がPATH環境変数の中に含まれるようにしてください。 -
インストールしたバージョンが最新であることを確認してください
kubectl convert --help
何もエラーが表示されない場合は、プラグインが正常にインストールされたことを示しています。
-
プラグインのインストール後、インストールファイルを削除してください:
rm kubectl-convert kubectl-convert.sha256
macOS上のkubectlをアンインストールする
kubectl
のインストール方法に応じて、次の方法を使用してください。
コマンドラインを使用してkubectlをアンインストールする
-
システム上の
kubectl
バイナリの場所を特定してください:which kubectl
-
kubectl
バイナリを削除してください:sudo rm <path>
<path>
を前のステップのkubectl
バイナリのパスに置き換えてください。 例えばsudo rm /usr/local/bin/kubectl
。
Homebrewを使用してkubectlをアンインストールする
Homebrewを使用してkubectl
をインストールした場合は、次のコマンドを実行してください:
brew remove kubectl
次の項目
- Minikubeをインストールする
- クラスターの作成に関する詳細をスタートガイドで確認する。
- アプリケーションを起動して公開する方法を学ぶ。
- あなたが作成していないクラスターにアクセスする必要がある場合は、クラスターアクセスドキュメントの共有を参照してください。
- kubectlリファレンスドキュメントを参照する