NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix CE 5.18 で Karbon を有効化してみる。(kubectl / kubeconfig 準備編)

Nutanix CE の Karbon で 作成した Kubernetes に、Karbon とは関係ない Linux から Kubectl で接続してみます。Karbon で作成される Kubernetes クラスタは、一般的な Kubernetes であり、kubectl のような標準的なツールで操作できます。

今回の環境

Karbon の有効化と Kubernetes クラスタ作成は、下記のように実施ずみです。

Karbon で作成した Kubernetes クラスタでは、Master ノードに kubectl がインストールされますが、あまり Master ノードに直接ログインするのは好ましくないと思います。

また、Karbon では Kubernetes ノードの OS イメージをアップデートすることがありますが、その際に独自で配置したファイルはなくなるので、あまり Master ノードをクライアント環境として作りこまない方がよさそうです。

そこで、あえて別の Linux クライアントを用意して Kubernetes クラスタを操作します。

Linux クライアントは、Oracle Linux 7 を利用します。

[root@lab-vm-02 ~]# cat /etc/system-release
Oracle Linux Server release 7.9

Linux クライアントでの kubectl の準備

RHEL / CentOS / Oracle Linux では、デフォルトで $HOME/bin ディレクトリにコマンドのサーチ パスが設定されています。そこで、$HOME/bin ディレクトリを作成して、そこに kubectl を配置します。

$HOME/bin ディレクトリを作成します。

[gowatana@lab-vm-02 ~]$ echo $HOME/bin
/home/gowatana/bin
[gowatana@lab-vm-02 ~]$ mkdir $HOME/bin

kubectl をダウンロードして、実行権限(+x)を付与しておきます。kubectl のバージョンは、Kubernetes クラスタのバージョンに合わせました。

[gowatana@lab-vm-02 ~]$ curl -s -o $HOME/bin/kubectl -L https://storage.googleapis.com/kubernetes-release/release/v1.16.8/bin/linux/amd64/kubectl
[gowatana@lab-vm-02 ~]$ chmod +x $HOME/bin/kubectl

kubectl が実行できるようになりました。

[gowatana@lab-vm-02 ~]$ kubectl version --short --client
Client Version: v1.16.8

Karbon で作成した Kubernetes クラスタの kubeconfig 入手

Prism Central にある Karbon の画面で、Kubernetes クラスタを選択して、「Actions」→「Download Kubeconfig」を開きます。

f:id:gowatana:20201223014732p:plain

「Download」リンクで kubeconfig ファイルをダウンロードできます。しかし、今回は 「Copy the command to clipboard」でクリップ ボードにコピーします。

f:id:gowatana:20201223014845p:plain

クリップ ボードにコピーされた長い文字列を、kubectl を実行する Linux クライアントのターミナルに貼り付けて Enter キーを押します。

f:id:gowatana:20201223014934p:plain

kubeconfig ファイル(クラスタ名.cfg)が作成されます。そして環境変数「KUBECONFIG」に、kubeconfig ファイルのパスが設定されます。

[gowatana@lab-vm-02 ~]$ ls -l
合計 4
drwxrwxr-x. 2 gowatana gowatana   21 12月 23 01:11 bin
-rw-rw-r--. 1 gowatana gowatana 3532 12月 23 01:22 dev-k8s-01.cfg
[gowatana@lab-vm-02 ~]$ echo $KUBECONFIG
/home/gowatana/dev-k8s-01.cfg

kubectl での Kubernetes クラスタへの接続

kubeconfig ファイルは、環境変数「KUBECONFIG」にファイルのパスを設定することで、kubectl に読み込ませることができます。

今回は、ファイル作成時に同時に設定されていますが、OS にログインしなおした際にも反映させるには、$HOME/.bash_profile ファイルなどに「export KUBECONFIG=パス」を追記しておきます。

[gowatana@lab-vm-02 ~]$ export KUBECONFIG=$HOME/dev-k8s-01.cfg
[gowatana@lab-vm-02 ~]$ kubectl get node
NAME                                    STATUS   ROLES    AGE   VERSION
karbon-dev-k8s-01-d2f387-k8s-master-0   Ready    master   9d    v1.16.8
karbon-dev-k8s-01-d2f387-k8s-worker-0   Ready    node     9d    v1.16.8

また、「--kubeconig」オプションでも、kubeconfig ファイルを指定できます。

[gowatana@lab-vm-02 ~]$ kubectl --kubeconfig=./dev-k8s-01.cfg get node
NAME                                    STATUS   ROLES    AGE   VERSION
karbon-dev-k8s-01-d2f387-k8s-master-0   Ready    master   9d    v1.16.8
karbon-dev-k8s-01-d2f387-k8s-worker-0   Ready    node     9d    v1.16.8

kubeconfig は、$HOME/.kube/config ファイルとして保存して、kubectl に読み込ませることもできます。

[gowatana@lab-vm-02 ~]$ unset KUBECONFIG
[gowatana@lab-vm-02 ~]$ mkdir $HOME/.kube
[gowatana@lab-vm-02 ~]$ cp ./dev-k8s-01.cfg $HOME/.kube/config
[gowatana@lab-vm-02 ~]$ kubectl get node
NAME                                    STATUS   ROLES    AGE   VERSION
karbon-dev-k8s-01-d2f387-k8s-master-0   Ready    master   9d    v1.16.8
karbon-dev-k8s-01-d2f387-k8s-worker-0   Ready    node     9d    v1.16.8

kubectl でクラスタに接続して、Pod が起動できました。

[gowatana@lab-vm-02 ~]$ kubectl run pod-01 --image=nginx --restart=Never
pod/pod-01 created
[gowatana@lab-vm-02 ~]$ kubectl get pods
NAME     READY   STATUS    RESTARTS   AGE
pod-01   1/1     Running   0          23s

おまけ

Tips 1: 動作確認の Pod 起動について

以前に投稿した 2048 Pod の起動です。

もうすこし無難なデモむけ。httpd Pod を NodePort で起動します。

Tips 2: kubectl VM 作成自動化くん

今回の投稿内容のかわりに、acli で、kubectl のインストールされた CentOS7 VM を自動作成する方法です。

Custom Script(Cloud-Init の YAML)は、下記のように Prism でも利用できます。

以上。

©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。