RedisをKubernetes上で構築しながら、Kubernetesを説明する。( 1 )


はじめに

今回は Kubernetesに関してのシリーズで書いていこうと思っています。
どのような構成で書くかというと、

RedisをKubernetes上で構築しながら、Kubernetes上で説明していこう!!!

という感じです。
最終的にはKubernetes上でspring-bootとredis-clusterを構成し、Service化するまでやっていこうかなと思っています。
もし良ければ読んでいってください。

さっくりとKubernetesの特徴を説明

Kubernetesは複数マシンにまたがるコンテナ群をオーケストレーションするためのオープンソースのシステムです。

Dockerの実行環境だと、同一のホストで動くコンテナ同士だとプライベートネットワークではやりとりができます。しかし問題なのが、あくまで1つのホストに閉じていているということです。
これの何が問題なのかを考えてみましょう。

コンテナを複数管理するのであれば、docker-composeで十分です。しかし、考えてみて欲しいところは複数サーバーにまたがった時です。
ロードバランサーの設定を別途実施しないといけないですし、ログの管理も複数サーバーあるので大変です。
スケールアップする時やアップデートをするときには、各サーバーのdocker-compose.ymlを手動で修正しなければいけません。
さらにですよ、何もしなければコンテナが落ちても気づかないので、ずっと監視していないことになります。めちゃくちゃ大変ですね。

下図:大変なところ

以下の記事が大変参考になりました。
Dockerについて深くまとめてみた - その2 Docker周辺ツール(Docker Compose,Kubernetes)編
https://blog.ecbeing.tech/entry/2019/10/28/114000

______________________________________________

Kubernetesは上記の問題を全て解決できます。
Kubernetesの特徴としては

  • コンテナの死活管理
  • スケーリング/オートスケーリング
  • ロードバランシング
  • ローリングアップデート
  • ログの管理   etc... いろいろな機能があります。 しかもなんと、これらの機能をマニフェストという設定ファイルで管理できてしまうという。 なんと便利なのでしょうか。これはKubernetesを使うほかありませんね。

Kubernetesをざっくり説明していく

ではKubernetesの全体像に関して説明をしていこうと思います。

全体像は以下の図のようになっています。
クラスタというKubernetesの実行環境があります。そこではノードという各コンテナを動かすマシンが動きます。ノードの中にはコンテナを積んでいるKubernetesのデプロイ単位であるPodが存在します。このPodにラベルをつけると、Kubernetesはそのラベルごとに指示が一斉に行えるのです。
そうすることでラベルごとのオーケストレーションが行われるわけですね!

このKubernetesをローカル環境で使用できるようにするツールにminikubeというものがあります。次回以降の記事ではminikubeを使用するのでインストールしておきましょう。

macOSでのinstall
brew install minikube

ではどうやって操作するのかを話していきます。

クラスタ上では、コントロールプレーンというクラスタ全体の状態を管理するコンポーネント群があります。
その中には全体を操作するAPI状態の情報を取得するAPIが入っています。
このAPIを簡単に扱えるようにしたコマンドラインツールにkubectlがあります。
こちらも次回以降の記事では使用しますのでinstallしておきましょう。

macOSでのinstall
brew install kubectl 

最後に

本記事では全然コードもRedisも出てきていませんが次回から構築しながら描ければと思っています。
次回に続きます。

参考文献

Dockerについて深くまとめてみた - その2 Docker周辺ツール(Docker Compose,Kubernetes)編
https://blog.ecbeing.tech/entry/2019/10/28/114000

Dockerについて深くまとめてみた - その2 Docker周辺ツール(Docker Compose,Kubernetes)編
https://www.amazon.co.jp/%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8BDocker%E3%81%A8Kubernetes-Software-Design-plus-%E5%BE%B3%E6%B0%B8/dp/4297118378