NTNX>日記

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

Nutanix CE 5.18 で Karbon を有効化してみる。(動作確認 / 2048 ゲーム起動編)

Nutanix CE の Karbon で 作成した Kubernetes で、2048 ゲームを起動してみます。

今回の Kubernetes クラスタは下記のように作成してあります。

Master ノードへの SSH 接続

ちょっとした Kubernetes クラスタの動作確認のため、kubectl がインストールされているマスターノードに SSH 接続をします。

Prism Cenral で「サービス」→「Karbon」を開きます。

f:id:gowatana:20201213141750p:plain

Karbon で作成された Kubernetes クラスタ(今回は dev-k8s-01)を選択して、「Actions」→「SSH Access」を開きます。

f:id:gowatana:20201213141901p:plain

「Copy the command to clipboard」で、SSH 接続のためのコマンドをクリップボードにコピーしておきます。そしてこの画面は「Close」で閉じます。

f:id:gowatana:20201213142103p:plain

クラスタ名をクリックして・・・

f:id:gowatana:20201213142206p:plain

Summary 画面から API Endpoint の IP アドレスを確認しておきます。

f:id:gowatana:20201213142300p:plain

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

f:id:gowatana:20201213143133p:plain

「Enter Karbon VM IP:」と表示されるので、先ほど確認した API Endpoint の IP アドレスを入力すると、マスター ノードの VM に SSH 接続できます。初回接続時のみ、確認メッセージに「yes」で応答する必要があります。

f:id:gowatana:20201213142527p:plain

マスター ノードでは、kubectl が TAB キー補完できる状態でインストールされています。

[nutanix@karbon-dev-k8s-01-d2f387-k8s-master-0 ~]$ kubectl version --short
Client Version: v1.16.8
Server Version: v1.16.8
[nutanix@karbon-dev-k8s-01-d2f387-k8s-master-0 ~]$ kubectl get nodes
NAME                                    STATUS   ROLES    AGE   VERSION
karbon-dev-k8s-01-d2f387-k8s-master-0   Ready    master   84m   v1.16.8
karbon-dev-k8s-01-d2f387-k8s-worker-0   Ready    node     83m   v1.16.8

kubectl による 2048 の起動

demo-01 Namespace を作成して、そこで 2048 ゲームの Pod を起動してみます。

下記のようなマニフェスト(YAML)ファイルを用意しておきます。

gist.github.com

Namespace を作成します。

$ kubectl create namespace demo-01
namespace/demo-01 created

2048 の Pod を起動します。

$ kubectl -n demo-01 apply -f https://gist.githubusercontent.com/gowatana/3a0179c41348e65c9769f71fadeace2d/raw/game-2048.yml
deployment.apps/dep-game2048 created
service/svc-2048 created

Pod が起動されました。

$ kubectl -n demo-01 get pods
NAME                            READY   STATUS    RESTARTS   AGE
dep-game2048-6fbc9f6886-8thvm   1/1     Running   0          89s

実際には、Kubernetes の Deployment リソースと Service リソースを作成しています。

$ kubectl -n demo-01 get all
NAME                                READY   STATUS    RESTARTS   AGE
pod/dep-game2048-6fbc9f6886-8thvm   1/1     Running   0          2m1s

NAME               TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/svc-2048   NodePort   172.19.134.228           80:31509/TCP   2m1s

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/dep-game2048   1/1     1            1           2m1s

NAME                                      DESIRED   CURRENT   READY   AGE
replicaset.apps/dep-game2048-6fbc9f6886   1         1         1       2m1s

Karbon で作成された Kubernetes クラスタには、デフォルトでは ロードバランサーや Ingress が含まれていません。そこで NodePort(この 2048 ゲームのサービスでは 31509) で接続します。

$ kubectl -n demo-01 get service svc-2048
NAME       TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
svc-2048   NodePort   172.19.134.228           80:31509/TCP   5m1s

Web ブラウザから API Endpoint(実際には Kubernetes ノードのいずれかの IP アドレス)の NodePort を開くと、2048 ゲームが表示されます。

f:id:gowatana:20201213144607p:plain

2048 ゲームの終了

2048 ゲームに関わるリソースは、下記のようにまとめて削除できます。

$ kubectl -n demo-01 delete -f https://gist.githubusercontent.com/gowatana/3a0179c41348e65c9769f71fadeace2d/raw/game-2048.yml
deployment.apps "dep-game2048" deleted
service "svc-2048" deleted

もしくは、Namespace ごとまとめて削除できます。

$ kubectl delete namespaces demo-01
namespace "demo-01" deleted

つづきはこちら。

NodePort ではなく LoadBalancer でアクセスする方法は、こちらの投稿をどうぞ。

 

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