Nutanix CE の Karbon で 作成した Kubernetes で、2048 ゲームを起動してみます。
今回の Kubernetes クラスタは下記のように作成してあります。
Master ノードへの SSH 接続
ちょっとした Kubernetes クラスタの動作確認のため、kubectl がインストールされているマスターノードに SSH 接続をします。
Prism Cenral で「サービス」→「Karbon」を開きます。
Karbon で作成された Kubernetes クラスタ(今回は dev-k8s-01)を選択して、「Actions」→「SSH Access」を開きます。
「Copy the command to clipboard」で、SSH 接続のためのコマンドをクリップボードにコピーしておきます。そしてこの画面は「Close」で閉じます。
クラスタ名をクリックして・・・
Summary 画面から API Endpoint の IP アドレスを確認しておきます。
ssh クライアントの実行できる Linux クライアントのターミナルに、クリップボードにコピーした長いコマンド文字列を貼り付けて実行します。
「Enter Karbon VM IP:」と表示されるので、先ほど確認した API Endpoint の IP アドレスを入力すると、マスター ノードの VM に SSH 接続できます。初回接続時のみ、確認メッセージに「yes」で応答する必要があります。
マスター ノードでは、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)ファイルを用意しておきます。
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.22880: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.22880:31509/TCP 5m1s
Web ブラウザから API Endpoint(実際には Kubernetes ノードのいずれかの IP アドレス)の NodePort を開くと、2048 ゲームが表示されます。
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 でアクセスする方法は、こちらの投稿をどうぞ。