2018年8月16日木曜日

k8s環境を作って遊んでみた

こんにちは、こんばんは miyakeです :-)

夏休みということもあり、週末にKubernetes(以降k8s)環境を構築して遊んでました。

k8sというのは、Googleが開発した、コンテナの運用自動化を実現するためのOSSフレームワークです。
最近は、Azureがk8sを利用できる環境を提供したり、RedHatがk8sの強化版(?)であるOpenShiftを提供していたりと、コンテナ界隈では注目されているプロダクトになってきています。

一般的にk8sの検証環境といえば、シングルノードでお手軽に構築できるMinikubeがありますが、今回はマルチノード構成のk8s環境を構築してみました。
マルチノード構成でなければ利用できない機能があったり、ワーカーノード間のコンテナ間通信がどのように実現されているかを、後々検証してみたかったのがその理由です :-)

構成としては、マスタノード1つにワーカーノード2つの3ノード構成で構築してみました。
この構築の際、複数のノードに対してパッケージインストールやら設定ファイル変更を、sshで入って行うのは面倒だし、設定ミスをしてしまうので、ついでにAnsible環境も作ってしましました。

※備えあれば患いなしです :-)

Ansible環境を構築する際、どうせなら、普段の仕事で使っているLC4RT環境を使えるようにしてしまおうと思い、LC4RT環境も作ってしまいましたw

LC4RTというのは、"Literate Computing for Reproducible Infrastructure"の略で、ざっくり言ってしまうと「Jupyter NotebookとAnsibleを使って、実行可能な運用や環境構築の手順書を実現しよう」というものです。

LC4RTについての詳しい話は、以下のリンク先の資料を読んでみてください。

Jupyter notebook を用いた文芸的インフラ運用のススメ

Literate Automation(文芸的自動化)についての考察

で、 LC4RT環境を構築したのち、こんな感じでもくもくとk8s環境を構築してました。


LC4RTを使ったk8s環境構築の手順メモ
こんな感じに、環境構築の際に実行したコマンドと、その実行結果をエビデンスとして残しながら、k8sの環境構築を進めました。
このように、実行したコマンドと実行結果のエビデンスが残っていれば、あとから同じようにk8s環境の構築が可能になります :-)

Ansibleを使って環境構築を行っているので、同じ構成のノードを複数構築するのも簡単になります。ワーカーノードは、この方法を使って構築したので、かなり楽に構築できました :-)


パッケージのインストール

パッケージのインストールも、Ansibleのyumモジュールを使って一気にインストール出来て、インストール結果も、上の図の黄色い文字の部分のように残されるので、あとから実行結果を確認したりできるので重宝しています。


Pythonコードと組み合わせることもできたりします

あと、上の図のようにPythonコードの中からAnsibleを実行することができるので、playbookでは実現が難しい繰り返し処理とかも、簡単にできたりします :-)

そんな感じで、とりあえずマルチノード構成のk8s環境が出来上がりました :-)

k8sは、コンテナを制御したり、仮想ネットワークを実現するいくつかのモジュールで構成されているので、こうやって自分で環境構築を行うことでモジュールの動きを理解し、k8sの仕組みを深く理解することができるようになると思います。

とりあえずk8sの検証環境ができたので、Podを作ってみたり、ReplicaSetの振る舞いを検証してみたいな...と思っています。
※Helmのことも少し調べてみたい...

それでは :-)










人気の投稿