機械翻訳について

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サブシステムもインストールする必要があります。

  1. Kubernetes構成ファイルのコピーを作成します。

    オペレータ・ノードで、olcnectl module property getコマンドを使用して、クラスタのKubernetes構成ファイルを取得します:

    olcnectl module property get \
    --environment-name myenvironment \
    --name mycluster \
    --property kubecfg | base64 -d > kubeconfig.yaml

    クラスタへのアクセスに必要なKubernetes構成情報を含むkubeconfig.yamlという名前のファイルが作成されます。

  2. 非クラスタ・ノードでKubernetesファイルを設定します:

    1. 非クラスタ・ノードにログオンします。

    2. オペレータ・ノードから非クラスタ・ノードのローカル・ディレクトリにkubeconfig.yamlをコピーします。

      注意:

      ホスト間で機密情報を含む構成ファイルをコピーする場合は、セキュリティのベスト・プラクティスに従うことが重要です。

    3. ホーム・ディレクトリに.kubeというサブディレクトリを作成します:

      mkdir -p $HOME/.kube
    4. kubeconfig.yamlファイルを.kubeディレクトリにコピーします:

      cp /path_to_file/kubeconfig.yaml $HOME/.kube/config
    5. このファイルへのパスをKUBECONFIG環境変数にエクスポートします。

      export KUBECONFIG=$HOME/.kube/config
    6. この環境変数を永続的に設定するには、.bashrcファイルに追加します:

      echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
  3. 非クラスタ・ノードにkubectlをインストールします:
    1. 必要に応じてリポジトリまたはチャネルを有効にすることで、Oracle Cloud Native Environmentパッケージへの必要なアクセス権を持つノードを設定します。 詳細は、「スタート・ガイド」を参照してください。

    2. 次のコマンドを実行して、kubectlをインストールします:

      sudo dnf install kubectl
  4. 非クラスタ・ノードからの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
    ...