【Nutanix Karbon】Xi IoTの為のKubernetes環境を作ってみる
ここまでいろいろと PyTorch で画像処理などお勉強してきました
これを Xi IoT にも生かしていきたのですが、なんらかのアプリを作るには Data Pipeline でコードを組み込むか、Kubernetes Apps で作るかになります
(あんまりIoTぽいことはまだやっていないけど。。。)
ただ、せっかく PyTorch 勉強しましたが、Xi IoT の Function には PyTorch 用意されていません 。。。
そんな時は、自作です
プログラミング言語のランタイム環境も Kubernetes Appsで動いているようなので、Runtime Environment で PyTorch環境をコンテナ形式で作ってやればよいのです
自作ランタイムを作るにしても、Kubernetes App を作るにしてもお次はコンテナのお勉強が必要になってきました(やれやれ)
Nutanix Karbon
そこで Kubernetes クラスタ環境をNutanix上へ簡単に(無料で)実装できる【Nutanix Karbon】の登場です(無料です)
というわけで前置きが長くなりましたが、本題です
Karbon がなんたるか、とか細かいとこ、とかインストール手順というのはこちらにお譲りします
qiita.com
非常にちゃんと細かく書いてあるので、これに沿って簡単にインストールできちゃいます。ほとんど書くことないくらいに
ひとつ書いてないところあるとすれば,
本番運用するんじゃなくて、検証環境でとりあえずコンテナ作るを試したいというのであれば、「Development Cluster」を選ぶと仮想マシンは3台ですんじゃいます
使うリソースは、3台トータルで14vCPU、メモリ20GB、ストレージ400GB あれば、
Kebernetes クラスタが名前とIPアドレス入れるくらいの数クリックでポンです
会社のノートPC や おうちのデスクトップはあんまり汚したくない(?)ですからね
Windows PC から Karbon 環境へ繋ぐ準備
kubectlをKubernetes 公式から入手するか、Docker Desktopをインストールすると"kubectl"コマンドが使えるようになります
次に Karbon の管理画面に戻り、kubectl configファイルをダウンロードします
ダウンロードしたファイルと同じフォルダで、PowerShell 上で"kubectl version"コマンドで2個分のバージョンが表示されればOKです
(Windows上のバージョンとKarbonのバージョン)
> kubectl version Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"windows/amd64"} Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.7", GitCommit:"6c143d35bb11d74970e7bc0b6c45b6bfdffc0bd4", GitTreeState:"clean", BuildDate:"2019-12-11T12:34:17Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
更に Karbon 上の node情報が引っ張ってこれれば完璧ですね
> kubectl get nodes NAME STATUS ROLES AGE VERSION karbon-kon-karbon-dd544b-k8s-master-0 Ready master 33d v1.15.7 karbon-kon-karbon-dd544b-k8s-worker-0 Ready node 33d v1.15.7
ここまで確認できたら、PATHを通しておきましょう
これで、コマンド実行場所を変えても Karbon へコマンド打てるようになります
$Env:KUBECONFIG=("\フルパス\xxx-karbon-kubectl.cfg")
Karbon へ SSH接続
Windows環境からKarbon環境へ sshログインはちょっと大変の模様。。。
MAC/Linux環境から sshしたい場合は、手順は基本的に上記の kubectlの接続とほぼ同じです
手間がかかるWindows 10 からの ssh接続の方法を説明しておきます
(Open ssh がインストールされている前提です)
Step2
コピーしたファイルの1つ目のファイル名を"xxx-karbon-ssh-access"(拡張子無し)にリネーム
テキストエディタで中身を開き
private_key='~~~~~~~~' の中身だけを残して他を消す
こんな感じの20行前後
-----BEGIN RSA PRIVATE KEY----- IEowIBAAKCAQEAwCqtcByHxI+Uwr3Q9U+qS6QkYUaJLeiQmIsA9uZ24C8ARAQK 3Wy6w7L3b5HsIV7VcuN7PFVwjGBMPRKOQYn/nRAjw0oEwYC5kB9bLmFDKrkR4Ecx + ~~~~~~~~~~~~ sm jNkAxMR6qPpfcCmxN5kWws2dVECnvAVdWJmkGYbh5o9VJwJcJL08GX6a1taiMSga DFYExsrVosD+BjLxIuX7yLxkkhZztiURZZEWrntThIFqj9vd0+Jg -----END RSA PRIVATE KEY-----
Step3
コピーした2つ目のファイルを”xxx-karbon-ssh-access.pub”(拡張子を.pub)に変更し
テキストエディタで開き
user_cert='~~~~~~~' の中身だけを残して他を消す
こんな感じの1行
ssh-rsa-cert-v01@openssh.com AAAAHHNza~~~~~z3FnM4rd72jmEHQ==
Step5
PowerShell を起動して
PS> ssh nutanix@172.16.101.114 -i C:\Users\ユーザ名\.ssh\xxx-karbon-ssh-access
これで ssh できるはずです
これで Docker コマンドも使えちゃいます
それではちょっと中身拝見
なんだかいろいろ動いてますね~
PS > kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system grafana-deployment-798c6bc5f8-qzg54 1/1 Running 0 10h kube-system kube-apiserver-karbon-kon-karbon-dd544b-k8s-master-0 3/3 Running 0 34d kube-system kube-dns-855f64fc96-k76zm 3/3 Running 0 10h kube-system kube-flannel-ds-58qtt 1/1 Running 1 10h kube-system kube-flannel-ds-7cv7q 1/1 Running 1 34d kube-system kube-proxy-ds-67xsc 1/1 Running 0 10h kube-system kube-proxy-ds-jx888 1/1 Running 0 34d ntnx-system alertmanager-main-0 2/2 Running 0 10h ntnx-system csi-attacher-ntnx-plugin-0 2/2 Running 0 10h ntnx-system csi-node-ntnx-plugin-z98hm 2/2 Running 0 10h ntnx-system csi-provisioner-ntnx-plugin-0 2/2 Running 0 10h ntnx-system elasticsearch-curator-cron-1590105660-8pgd4 0/1 Completed 0 45m ntnx-system elasticsearch-logging-0 1/1 Running 0 10h ntnx-system fluent-bit-jclp7 1/1 Running 1 34d ntnx-system fluent-bit-l9x2r 1/1 Running 0 10h ntnx-system kibana-logging-84dbb6bf99-2n697 2/2 Running 0 10h ntnx-system kube-state-metrics-57554f6487-sgb8f 4/4 Running 0 10h ntnx-system kubernetes-events-printer-798f7f4d-6qs25 1/1 Running 0 10h ntnx-system node-exporter-mg7rn 2/2 Running 0 10h ntnx-system node-exporter-xj5qs 2/2 Running 0 34d ntnx-system prometheus-k8s-0 3/3 Running 0 10h ntnx-system prometheus-operator-6768768d55-8b2pj 1/1 Running 0 10h
まぁコンテナを作るのは手元の Docker Desktop で作る方がラクかもですけどね
コンテナ開発環境が整のったで、さぁXi IoTのランタイム作ろう
Nutanix Karbon公式ページこちら
www.nutanix.com