見出し画像

実行して理解する、早わかりKubernetes

 「Kubernetes(k8s)」「コンテナ」を本番環境に使っている日本企業全体のうち、約50%以上が使用しているというデータがあります。(IDC Japan 2020) それだけk8sが注目されているということでしょう。この記事では今注目のk8sを動かしながら理解するのが目的です。最後まで記事を読みながら動かすとk8sについての理解が少し深まるかもしれません。

「コンテナ」を管理するソフトウェア


 「Docker」を使うとアプリケーションを実行するために使うライブラリなどの管理ができます。コンテナを上手く使えている企業の代表がGoogleでしょう。Googleはソフトウェアを全て「コンテナ」で管理しています。Dockerはそのコンテナを開発するために使われています。

 Dockerを勉強する良い方法は手を動かすことです。それを手助けするチュートリアルの一つに「Play with Docker」があります。Docker社が提供している公式のチュートリアルです。Web上で完結しているのでローカルにDockerをインストールせずとも学べます。内容はTodoリストのアプリを作るという内容です。

 では、実際にPlay with Dockerを触ってみましょう。Dockerのアカウントを作成し、ログインすると以下のような画面が表示されます。

画像3


そして、次のコマンドをターミナル(黒い画面)に打ち込みます。



docker run -dp 80:80 docker/getting-started:pwd

画像5

コマンドを打ち込み、「80」と書かれている文字をクリックするとチュートリアルが立ち上がります。

画像6



あとは、チュートリアルにしたがってTodoリストアプリを作って学ぶだけです。
以下のようなアプリを作りながらDockerについて学べます。

画像7

Kubernetes(k8s)を利用してコンテナを管理


Kubernets(k8s)はコンテナを管理するのに使います。この記事では「Minikube」と呼ばれるk8sの機能の一部を制限したソフトウェアを使います。まず、Minikubeをインストールしましょう。

 無事、Minikubeのインストールが終わったとしましょう。ここまでで疲れた方もいるかもしれません。その方はコーヒーを飲んで休憩すると良いでしょう。まだできるという方はこのまま最後まで走り抜きましょう。

 この記事では、修行として、私が書いた遺伝的アルゴリズムを使った最適化エンジンのアプリをMinikubeで動かします。

 アプリを以下のコマンドでダウンロードしてください。

git clone https://github.com/Ooshita/OptimaizationEngine.git

 次は OptimaizationEngine/src/TimeSheetsAppまで移動してください。移動すると、現在のディレクトリにはdocker-compose.ymlがあります。このファイルを使ってもアプリを起動できますが、今回はk8sを覚えることが目的です。k8sを動かすのは簡単です。「Kompose」を使います。Komposeをリンクに飛んでインストールしてください。

 そして、今いる場所でkompose convertと実行してください。すると、自動的にk8sのためのファイルが生成されます。

 残すは2ステップのみです。docker-compose.ymlから変換したファイルを動かします。deploymentというファイルがpodの環境を揃えるファイル、serviceと書かれているのがpodを起動するファイルと覚えておけば今は十分です。
 
 では、次のコマンドを実行しましょう。

kubectl apply -f tabu-service.yaml -f tabu-deployment.yaml -f php-service.yaml -f php-deployment.yaml -f parameter-share-persistentvolumeclaim.yaml

さらに、残りの2行もまずは深く考えずに実行しましょう。

kubectl port-forward service/tabu 5000:5000
kubectl port-forward service/php 8080:8080

 これで今回の目的であるk8sを動かせました。このとき、問題なくk8sが動いていてると、http://localhost:8080にアクセスし、勤務シフト表を作るアプリで遊べます。

画像8

 また、このときminikube dashboardとターミナルで実行するとアプリを起動するためのk8sのコンテナである「pod」の状況を確認できます。

画像9

組み合わせは無限大


 やや、駆け足で進んで何が何だか分からない方もいるかもしれません。ですが、k8sはそういうものです。完全に理解しようとは間違っても思ってはいけません。何をしたいかから考えて、そのためにはどのような機能が必要かを考えましょう。

 最後にk8sと組み合わせる定番のソフトウェアを紹介します。

 minikube dashboardよりも詳しく、podの状態を知りたいなど、美しい可視化に使える「Grafana」
 同じようなソフトウェアとしては「ElasticSearch」もあります。
 Dokcerコンテナやk8sのpodを監視するのには「Prometheus」も使えるでしょう。

 今は混乱しているかもしれませんが、学ぶ意欲を持ち続ければきっとk8sを理解できるでしょう。


____________________________________________________________

 WhisponMLCafe.はAI受託開発しております。気軽にご相談ください。



この記事が気に入ったらサポートをしてみませんか?