わざわざローカル環境?
Kubernetesといえば、AzureのAKSやAWSのEKS,GCPのGKEのようなクラウドサービスを使うのが一般的だと思いますが、
ローカルで試せると以下のようなメリットがあります。
- クラウドの管理コスト削減
- 手元でコンパクトに試せるので開発速度の向上
ということで、物は試しやってみよう
(訳あって実行結果は載せられません。sry)
Kubernetesとは
ざっくり言うと、コンテナ化されたアプリを自動的にデプロイ、スケーリングおよび管理してくれるいい感じのシステムです。
コンテナオーケストレーションと呼ばれてます。
詳しくは前回の記事を読んでみてください~
実行環境
デバイス:Jetson Xavier NX
OS:ubuntu 18.04
やることまとめ
0.事前準備
1.Kubectlのインストール
2.minikubeのインストール
3.minikube起動
4.Kubernetesでechoserverを立てる
0.事前準備
まずは、Dockerをインストールしましょう!
(Dockerじゃなくてもいいんですが、とりあえず今回の環境では一番簡単だと思うのでDockerにしておきます)
公式サイト↓を参考にインストールしてください。
1.Kubectlのインストール
次にKubernetesのためのCLIであるKubectlをインストールしましょう!
公式ドキュメントはこちらです↓
注意点は、Xavier NXはarm64です!
そのため、以下のようなコマンドになります。
なお、環境によってはsudoでの実行が必要になります。
$ curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/arm64/kubectl"
次に、Kubectlバイナリの権限を変更します。
$ chmod +x ./kubectl
最後に、バイナリをPATHの中へ移動させます。
$ sudo mv ./kubectl /usr/local/bin/kubectl
インストールの確認をして終わりです。
$ kubectl version --client
2.minikubeのインストール
公式ドキュメントはこちらです↓
今回の実行環境では、以下のコマンドになります。
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
$ chmod +x minikube
$ sudo install minikube /usr/local/bin/
とりあえず、これで各種ツールのインストールは終わりです。
次からは、インストールの確認もかねてminikubeを起動します。
3.minikube起動
それでは、minikubeを起動させます。
$ minikube start
※エラーが出る場合あり。解決策としては、以下のURLのように①ユーザを追加する、②minikube start --force --driver=dockerあたりがある。
4.Kubernetesでechoserverを立てる
minikube startした後、以下のコマンドでまずはdeploymentを作成します。
deploymentとは、Pod管理のためのオブジェクトです。Podを用意するための前段階のものという感じ?
ここでPod作成のためのイメージを持ってくるのですが、
注意点として、こちらもarm64のイメージを選ぶようにしましょう。
一例として、以下のコマンドがあります。
$ kubectl create deployment echoserver-minikube --image=e2eteam/echoserver:2.2-linux-arm64(ここは任意のarm64用イメージ)
そして、上のdeploymentを使って、サービスを公開します。
$ kubectl expose deployment echoserver-minikube --type=NodePort --port=8080
Podが作成されたかを確認します。
$ kubectl get po -A
公開されたServiceのURLは以下で取得します。
$ minikube service echoserver-minikube --url
Podの削除とdeploymentの削除は以下のコマンドです。
$ kubectl delete services echoserver-minikube
$ kubectl delete deployment echoserver-minikube
以上でローカル環境へのKubernetes導入は終了です。
お疲れさまでした。
(Xavier NX上のDocker コンテナ内にminikube導入しようとして苦しんだ話もいつかできたら・・・)
参考にさせていただいた記事