NTNX>日記

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

Nutanix Kubernetes Platform(NKP)で Workload Cluster を作成してみる。(nkp CLI)

Nutanix Kubernetes Platform(NKP)v2.12 で、nkp CLI から Workload Cluster を作成してみます。

今回の環境

NKP の Management Cluster は、下記のように作成してあります。

この時点での Management Cluster の様子を確認しておきます。kubeconfig ファイルを、KUBECONFIG 環境変数に指定します。

[gowatana@lab-nkp-01 ~]$ export KUBECONFIG=$(pwd)/nkpm01.conf

現在のコンテキストは、Management Cluster になっています。

[gowatana@lab-nkp-01 ~]$ kubectl config current-context
nkpm01-admin@nkpm01

Management Cluster のノード情報が取得できています。

[gowatana@lab-nkp-01 ~]$ kubectl get nodes
NAME                            STATUS   ROLES           AGE     VERSION
nkpm01-md-0-g7fsx-h4r2t-hvd2c   Ready    <none>          2d16h   v1.29.6
nkpm01-md-0-g7fsx-h4r2t-ll8zf   Ready    <none>          2d16h   v1.29.6
nkpm01-qfxvt-9sq92              Ready    control-plane   2d16h   v1.29.6

このクラスタは、Management Cluster です。

[gowatana@lab-nkp-01 ~]$ nkp cluster type
Management

この時点では、Management Cluster のみが作成されています。

[gowatana@lab-nkp-01 ~]$ nkp get clusters -A
WORKSPACE               NAME            KUBECONFIG
kommander-workspace     host-cluster    kommander-self-attach-kubeconfig        Joined

Workload Cluster の作成(nkp CLI)

まず、Prism Centarl の接続情報を環境変数として設定しておきます。

export NUTANIX_USER=admin
export NUTANIX_PASSWORD='パスワード'

Management Cluster(nkpm01)に接続できる状態で、下記のように nkp create cluster nutanix コマンドを実行します。

  • Management Cluster 作成時とは異なり、「--self-managed」は指定しません。
  • パラメータは、以前の投稿 でダッシュボードから作成したクラスタ に合わせてあります。
nkp create cluster nutanix \
--endpoint=https://lab-nxpc-01.go-lab.jp:9440 \
--insecure \
--control-plane-prism-element-cluster=lab-nxce-02 \
--worker-prism-element-cluster=lab-nxce-02 \
--control-plane-subnets=nw-vlan-12 \
--worker-subnets=nw-vlan-12 \
--cluster-name=nkpw01 \
--control-plane-endpoint-ip=192.168.12.205 \
--control-plane-vm-image=nkp-rocky-9.4-release-1.29.6-20240816215147.qcow2 \
--worker-vm-image=nkp-rocky-9.4-release-1.29.6-20240816215147.qcow2 \
--kubernetes-service-load-balancer-ip-range=192.168.12.206-192.168.12.209 \
--kubernetes-pod-network-cidr=172.16.0.0/16 \
--kubernetes-service-cidr=10.96.0.0/12 \
--csi-hypervisor-attached-volumes=true \
--csi-storage-container=default-container-88443613598780 \
--ssh-public-key-file=$HOME/.ssh/id_rsa.pub \
--control-plane-replicas=1 \
--control-plane-vcpus=2 \
--control-plane-memory=4 \
--worker-replicas=1 \
--worker-vcpus=2 \
--worker-memory=2

実際に nkp コマンドを実行すると、下記のようになります。

[gowatana@lab-nkp-01 ~]$ nkp create cluster nutanix \
> --endpoint=https://lab-nxpc-01.go-lab.jp:9440 \
> --insecure \
> --control-plane-prism-element-cluster=lab-nxce-02 \
> --worker-prism-element-cluster=lab-nxce-02 \
> --control-plane-subnets=nw-vlan-12 \
> --worker-subnets=nw-vlan-12 \
> --cluster-name=nkpw01 \
> --control-plane-endpoint-ip=192.168.12.205 \
> --control-plane-vm-image=nkp-rocky-9.4-release-1.29.6-20240816215147.qcow2 \
> --worker-vm-image=nkp-rocky-9.4-release-1.29.6-20240816215147.qcow2 \
> --kubernetes-service-load-balancer-ip-range=192.168.12.206-192.168.12.209 \
> --kubernetes-pod-network-cidr=172.16.0.0/16 \
> --kubernetes-service-cidr=10.96.0.0/12 \
> --csi-hypervisor-attached-volumes=true \
> --csi-storage-container=default-container-88443613598780 \
> --ssh-public-key-file=$HOME/.ssh/id_rsa.pub \
> --control-plane-replicas=1 \
> --control-plane-vcpus=2 \
> --control-plane-memory=4 \
> --worker-replicas=1 \
> --worker-vcpus=2 \
> --worker-memory=2
Generating cluster resources
namespace/nkpw01-zmwt9 created
cluster.cluster.x-k8s.io/nkpw01 created
secret/nkpw01-pc-credentials created
secret/nkpw01-pc-credentials-for-csi created
workspace.workspaces.kommander.mesosphere.io/nkpw01-88zk2 created
 ✓ Waiting for cluster infrastructure to be ready
 ✓ Waiting for cluster control-planes to be ready
 ✓ Waiting for machines to be ready
[gowatana@lab-nkp-01 ~]$

Workload Cluster(nkpw01)が作成されました。

[gowatana@lab-nkp-01 ~]$ nkp get clusters -A
WORKSPACE               NAME            KUBECONFIG                              STATUS
kommander-workspace     host-cluster    kommander-self-attach-kubeconfig        Joined
nkpw01-88zk2            nkpw01          nkpw01-kubeconfig                       Joined

Cluster API のクラスタは、nkpw01-zmwt9 Namespace に作成されました。

[gowatana@lab-nkp-01 ~]$ kubectl get cluster -A
NAMESPACE      NAME     CLUSTERCLASS   PHASE         AGE     VERSION
default        nkpm01   nkp-nutanix    Provisioned   2d17h   v1.29.6
nkpw01-zmwt9   nkpw01   nkp-nutanix    Provisioned   20m     v1.29.6

NKP のダッシュボードにも、このクラスタが表示されます。

kubeconfig の入手

なぜか nkp get kubeconfig コマンドで kubeconfig が取得できなかったので、今回は Secret から直接取得します。

この Workload Cluster に対応する Cluster リソースの Namespace で、Secret の一覧をを確認すると、「<クラスタ名>-kubeconfig」という Secret が作成されています。

[gowatana@lab-nkp-01 ~]$ kubectl get secrets -n nkpw01-zmwt9
NAME                                                            TYPE                      DATA   AGE
kommander-karma-server-tls                                      kubernetes.io/tls         4      21m
kommander-kubecost-thanos-server-tls                            kubernetes.io/tls         4      21m
kommander-thanos-server-tls                                     kubernetes.io/tls         4      21m
nkpw01-ca                                                       cluster.x-k8s.io/secret   2      21m
nkpw01-encryption-config                                        Opaque                    1      21m
nkpw01-etcd                                                     cluster.x-k8s.io/secret   2      21m
nkpw01-kubeconfig                                               cluster.x-k8s.io/secret   1      21m
nkpw01-md-0-b6nnk-vtm8b-gw6hp                                   cluster.x-k8s.io/secret   2      19m
nkpw01-pbrn5-n72cj                                              cluster.x-k8s.io/secret   2      21m
nkpw01-pc-credentials                                           Opaque                    1      21m
nkpw01-pc-credentials-for-csi                                   Opaque                    1      21m
nkpw01-proxy                                                    cluster.x-k8s.io/secret   2      21m
nkpw01-sa                                                       cluster.x-k8s.io/secret   2      21m
sh.helm.release.v1.ca-01921d49-47ab-739a-84ac-d2be8113166c.v1   helm.sh/release.v1        1      19m
sh.helm.release.v1.cluster-observer-3282254118.v1               helm.sh/release.v1        1      20m
sh.helm.release.v1.karma-traefik-certs.v1                       helm.sh/release.v1        1      21m
sh.helm.release.v1.kubecost-traefik-certs.v1                    helm.sh/release.v1        1      21m
sh.helm.release.v1.prometheus-traefik-certs.v1                  helm.sh/release.v1        1      21m
tls-root-ca                                                     Opaque                    1      21m

nkpw01-kubeconfig Secret に含まれる kubeconfig のデータを、Base64 でデコードしてファイルに保存します。

[gowatana@lab-nkp-01 ~]$ kubectl get secrets -n nkpw01-zmwt9 nkpw01-kubeconfig -o jsonpath={.data.value} | base64 -d > $HOME/nkpw01-kubeconfig

これで、kubeconfig ファイルが入手できました。

[gowatana@lab-nkp-01 ~]$ kubectl --kubeconfig $HOME/nkpw01-kubeconfig config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://192.168.12.205:6443
  name: nkpw01
contexts:
- context:
    cluster: nkpw01
    user: nkpw01-admin
  name: nkpw01-admin@nkpw01
current-context: nkpw01-admin@nkpw01
kind: Config
preferences: {}
users:
- name: nkpw01-admin
  user:
    client-certificate-data: DATA+OMITTED
    client-key-data: DATA+OMITTED

kubectl から Workload Cluster に接続できました。

[gowatana@lab-nkp-01 ~]$ kubectl --kubeconfig $HOME/nkpw01-kubeconfig get nodes
NAME                            STATUS     ROLES           AGE   VERSION
nkpw01-md-0-b6nnk-vtm8b-gw6hp   NotReady   <none>          21m   v1.29.6
nkpw01-pbrn5-n72cj              Ready      control-plane   23m   v1.29.6

nkp cluster type コマンドでは、今回作成した Workload Cluster は「Attached」と表示されます。

[gowatana@lab-nkp-01 ~]$ nkp cluster type --kubeconfig $HOME/nkpw01-kubeconfig
Attached

ちなみに kubeconfig ファイルは、nkp コマンドで作成した Workload Cluster でもダッシュボードから入手できます。

Worklaod Cluster の削除(nkp CLI)

nkp delete cluster のクラスタ削除は、Management Cluster に接続して実行します。このとき、Workspace ではなく Namespace を指定します。

[gowatana@lab-nkp-01 ~]$ nkp delete cluster --namespace=nkpw01-zmwt9 --cluster-name=nkpw01
 ✓ Deleting cluster resources
 ✓ Waiting for cluster to be fully deleted
Deleted nkpw01-zmwt9/nkpw01 cluster

以上。

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