3 Kubernetesコマンドライン・インタフェースの設定(kubectl)
この章では、Kubernetesコマンドライン・インタフェース(kubectl
)の設定方法について説明します。 kubectl
コマンドは、Kubernetesの一部であり、Kubernetesクラスタにデプロイするコンテナ化されたアプリケーションを作成および管理するために使用されます。
kubectl
ユーティリティは、Kubernetes APIサーバーとインタフェースしてKubernetesクラスタに対してコマンドを実行するコマンドライン・ツールです。 通常、kubectl
コマンドはクラスタの「コントロール・プレーン」ノードで実行されますが(推奨オプション)、必要に応じて外部非クラスタ・ノードにkubectl
アクセスを設定できます。 kubectl
ユーティリティは、クラスタおよびクラスタ内のすべてのノードに対する完全な管理権限を効果的に付与します。
この章では、コントロール・プレーン・ノードまたは外部ノード(Kubernetesクラスタの一部ではない)からKubernetesクラスタにアクセスするためのkubectl
コマンドの設定について説明します。
コントロール・プレーン・ノードでのkubectlの設定
コントロール・プレーン・ノードでkubectl
コマンドを設定するには、これらのコマンドをコピーして、「コントロール・プレーン」ノードのホーム・ディレクトリのターミナルに貼り付けます:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
次のような任意のkubectl
コマンドを使用して、kubectl
コマンドを使用できることを確認します:
kubectl get pods --all-namespaces
出力は次のようになります:
NAMESPACE NAME READY STATUS RESTARTS AGE
externalip-validat... externalip-validation-... 1/1 Running 0 1h
kube-system coredns-... 1/1 Running 0 1h
kube-system coredns-... 1/1 Running 0 1h
kube-system etcd-... 1/1 Running 2 1h
kube-system etcd-... 1/1 Running 2 1h
kube-system kube-apiserver-... 1/1 Running 2 1h
kube-system kube-apiserver-... 1/1 Running 2 1h
kube-system kube-controller-manager-... 1/1 Running 5 (1h ago) 1h
kube-system kube-controller-manager-... 1/1 Running 2 1h
kube-system kube-flannel-... 1/1 Running 0 1h
kube-system kube-flannel-... 1/1 Running 0 1h
kube-system kube-flannel-... 1/1 Running 0 1h
kube-system kube-proxy-... 1/1 Running 0 1h
kube-system kube-proxy-... 1/1 Running 0 1h
kube-system kube-proxy-... 1/1 Running 0 1h
kube-system kube-scheduler-... 1/1 Running 5 (1h ago) 1h
kube-system kube-scheduler-... 1/1 Running 2 1h
kubernetes-dashboard kubernetes-dashboard-... 1/1 Running 0 1h
非クラスタ・ノードでのkubectlの設定
Oracle Cloud Native Environmentを使用すると、オペレータ・ノードから複数の環境を作成できます。 これを念頭に置いて、Kubernetesクラスタのコントロール・プレーン・ノードでkubectl
コマンドを使用することをお薦めします。 クラスタの外部からkubectl
コマンドを使用し、複数の環境がデプロイされている場合は、予期しないKubernetesクラスタを誤って管理する可能性があります。 ただし、kubectl
コマンドをクラスタの外部から実行するように設定する必要がある場合は、構成する必要があります。
次の例は、Kubernetesクラスタへのkubectl
コマンドライン・アクセスを使用して非クラスタ・ホストを設定する方法を示しています。
ノート:
次の例では、非クラスタ・ノードのオペレーティング・システムがOracle Linuxであると仮定します。 ただし、Kubernetesコミュニティ・パッケージを利用して、macOSおよびMicrosoft Windowsホストにkubectl
を設定することもできます。 Microsoft Windowsホストの場合は、Linux 2 (WLS 2)用のWindowsサブシステムもインストールする必要があります。
-
Kubernetes構成ファイルのコピーを作成します。
オペレータ・ノードで、
olcnectl module property get
コマンドを使用して、クラスタのKubernetes構成ファイルを取得します:olcnectl module property get \ --environment-name myenvironment \ --name mycluster \ --property kubecfg | base64 -d > kubeconfig.yaml
クラスタへのアクセスに必要なKubernetes構成情報を含む
kubeconfig.yaml
という名前のファイルが作成されます。 -
非クラスタ・ノードでKubernetesファイルを設定します:
-
非クラスタ・ノードにログオンします。
-
オペレータ・ノードから非クラスタ・ノードのローカル・ディレクトリに
kubeconfig.yaml
をコピーします。注意:
ホスト間で機密情報を含む構成ファイルをコピーする場合は、セキュリティのベスト・プラクティスに従うことが重要です。
-
ホーム・ディレクトリに
.kube
というサブディレクトリを作成します:mkdir -p $HOME/.kube
-
kubeconfig.yaml
ファイルを.kube
ディレクトリにコピーします:cp /path_to_file/kubeconfig.yaml $HOME/.kube/config
-
このファイルへのパスを
KUBECONFIG
環境変数にエクスポートします。export KUBECONFIG=$HOME/.kube/config
-
この環境変数を永続的に設定するには、
.bashrc
ファイルに追加します:echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
-
-
非クラスタ・ノードに
kubectl
をインストールします:-
必要に応じてリポジトリまたはチャネルを有効にすることで、Oracle Cloud Native Environmentパッケージへの必要なアクセス権を持つノードを設定します。 詳細は、「スタート・ガイド」を参照してください。
-
次のコマンドを実行して、
kubectl
をインストールします:sudo dnf install kubectl
-
-
非クラスタ・ノードからの
kubectl
アクセスを確認します:kubectl
コマンドを使用できることを確認します:kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE coredns-5bc65d7f4b-qzfcc 1/1 Running 0 23h coredns-5bc65d7f4b-z64f2 1/1 Running 0 23h etcd-control1.example.com 1/1 Running 0 23h kube-apiserver-control1.example.com 1/1 Running 0 23h kube-controller-control1.example.com 1/1 Running 0 23h ...