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
以上。