(O+P)ut

OutPut Log by SE in SIer



(O+P)ut

Output Log by SE

【サルでも分かる】Kubernetes入門

スポンサーリンク

f:id:mtiit:20191105170709p:plain

はじめに

Dockerは分かったけど、これは読み方すら分からない

程度の知識でもKubernetesについて大枠を理解できるよう、順を追って説明する入門記事を書いてみました。

所要時間目安 : 5分

関連記事

Kubernetesとは?

読み方は?

読み方から難しい本用語ですが「船の舵取り」を指すギリシャ語κυβερνήτηςからきています。
発音は「クバネテス」または「クバネティス」と呼び、KとSの間に8つのアルファベットがあるので書き言葉としてk8sとも略されます。

この「船の舵取り」の通りですが、以下のロゴマークも併せて覚えておきたいです。

f:id:mtiit:20191105171325p:plain
Kubarnetesのロゴマーク

役割は?

これは何をするためのものなの?

一言で言えば、複数のコンテナ環境を管理するオープンソースのツールです。

具体的には以下のような機能がKubernetesによって提供されています。

  • サービスの負荷に応じてコンテナ数を自動的に変更
  • コンテナイメージのバージョン管理
  • リソース利用率の監視

オープンソースなんだね

Google発のサービスでしたが、オープンソースのプロジェクトになりました。同じようなコンテナ管理ツールとしてDocker SwarmというDocker本家のものがありましたが、Kubernetesに関してもサポートすることをDocker社が発表したことによって Kubernetesは名実共にスタンダードになっています。

具体的には?

どう便利なの?

特にDockerの管理における基盤観点の懸念をツールにて一元管理できます。

コンテナを複数扱う場合、コンテナをどのマシンにて起動するのか?コンテナに障害が発生した場合どうするのか?そもそもコンテナを起動しているマシンに障害が発生したらどうするのか?といった基盤的な運用の難しさが出てきます。これを管理します。

ちなみに、このようなツールはコンテナオーケストレーションと呼びます。

上で挙げた例に即して言えば「サービスの負荷に応じてコンテナ数を自動的に変更」してくれるためリソース増強を自動的に行うことができ、「コンテナイメージのバージョン管理」してくれるためサービスのリリース後にロールバックを行うことができ、「リソース利用率の監視」してくれるため、コンテナのリソースやログを一元的に処理することができます。

特徴は?

このような機能を持つKubernetesの特徴として「宣言的アーキテクチャ」があります 。

何が宣言的なの?

これは、管理するコンテナ群に対して理想の状態を設定ファイルに記載すれば、それを実現する具体的な作業はKubernetesが担ってくれます。

構成管理ツールのChefを知っている人からすればピンとくるかと思いますが、例えばKubernetesにて「Webサーバの役割を提供するコンテナが3つ」という宣言をしておけば、一つのコンテナがトラブルによってダウンした場合は自動的に別のコンテナを起動してあるべき姿にしてくれます。この理想の状態を記載したファイルをマニフェストと呼びます。

デメリットはあるの?

これは宣言的アーキテクチャによくあるデメリットですが、構成や状態を変更したい場合は個別にコンテナを操作するのではなくマニフェストを修正し、反映させる必要があります。要は一時的な軽微な修正であっても、直接コンテナを操作することができない制約はあります。

また、dockerとは別のコマンドであるkubectlコマンドにて操作を行うため新たな学習コストにもなります。
例えば以下でnginxをコンテナとして起動しますが、dockerのコマンドとは相違しています。

$ kubectl run nginx --image=nginx

kubectlコマンドは奥が深そう....

終わりに

今回はKubernetesについて分かった気になるところをゴールに、かなり入門的に説明してみました。

以下の記事でもう少し具体的に触れているので興味があれば合わせてご覧ください。

本記事にてDockerを管理するKubernetesというものが少しでも掴める方がいれば幸いです。


他の記事を読む