Kubernetesの基本用語まとめ | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

Kubernetes関連の基本用語をまとめていく。(随時追記)

あと最後に、kubernetesアーキテクチャのイメージ図もつけてみた。

 

もくじ

【用語】

クラスタ

Master Node

Worker Node

kubelet

コンテナランタイム

Pod

Volume

ReplicaSet

Service

kube-proxy

kubectl

 

【アーキテクチャのイメージ】

大まかな全体像

 

■クラスタ

Kubernetesは多数のマシンによって構成される前提で動くもの。

それらマシンの集合をグループ化した単位を「クラスタ」と呼ぶ。

→クラスタ毎に独立して、設定・管理が可能。

 

■Master Node(マスターノード)

クラスタを成すノードの1つ。

クラスタの管理の役割を担う。

なおMaster Nodeは複数台のマシンで構成可能だが、その数は奇数にしなければならない。

 

理由として、例えば2台構成にして1台が落ちた時、もう1台の生き残っているほうは、

当然落ちた側の1台と通信できなくなる。

しかし、生き残っている側は、もう1台と通信できない理由が落ちた側にあるのか、

もしくは自分側が悪いのか、自分では判断できない。

そのため、自分側に障害起因があり、意図しない動作を犯す懸念から、

生き残っている側も自分の機能を停止させることになる。

結果として、落ちた側も生き残った側も機能停止してしまう。(KVS(Key Value Store)の制約による。)

 

一方、3台など、奇数台でMasterを構成した場合、

仮に1台が落ちても、他の2台ともが生き残っていれば、多数決の原理から、

障害起因がどのマシンにあるのか特定できる。

生き残っているマシンを巻き込んで、完全機能停止することを防ぐために、多数決のできる奇数台にすべきというわけである。

 

 

■Worker Node(ワーカーノード)

クラスタを成すノードの1つ。

Maseterからの指示を受けて、コンテナ化されたアプリケーションを実際に動かす役割を持つ。

最低限、「コンテナランタイム」、「kubelet」、「kube-proxy」の3つのコンポーネントの稼働が必須となっている。

 

■kubelet

Worker Nodeで稼働するコンポーネントの1つ。

Master Nodeと通信し、Woerker Node上のコンテナを制御する役割を持つ。

 

■コンテナランタイム

コンテナ実行エンジンのこと。すなわち、Dockerやrkt、CRI-O69gなどのこと。

Worker Node上で稼働する。

 

■Pod

ubernetsにおける、デプロイの最小単位。
Podは1個以上のコンテナを内包しており、
Pod内の全コンテナは、同一のNodeにデプロイされることが保証されている。
 

コンテナを複数内包することもでき、その場合は同一Pod内のコンテナで、ほぼすべてのリソース(IPアドレス、ポート等)を共有することになる。

※ただし、コンテナ間でファイルシステムだけは共有できないことに注意。

ファイル共有には、ボリュームを用いる。

 

■Volume

コンテナやPod間で共有される、永続的なデータ領域。

 

※前提として、コンテナは以下2点の性質をもっている。

・コンテナにおけるファイルシステムは、コンテナ毎に独立している。

 従って、コンテナ間で直接ファイルを授受することはできない。

・コンテナ稼働中に変更したファイルがあっても、コンテナイメージを変更したことにはならないため、

 コンテナプロセスの停止時に変更内容は消失してしまう。

→これらの課題を解消し、データ共有または永続化したい場合、ボリュームが用いられる。

 

■Service

Podと通信を行うための、インタフェース的な役割を持つ。

前提として、PodはNode内に散在しており、しかもそのIPは流動的である。
そのため、Podと通信したい場合、PodやNodeの位置を特定する仕組みが必要となる。

その仕組みとして、通信の窓口の役割を担うServiceを介することで、Podと確実な通信ができるようになっている。

 

■kube-proxy

Serviceの一部分を実現する役割を担う。

ネットワークトラフィックのプロキシとロードバランスを制御する役割を持つ。

 

■ReplicaSet

PodやNodeでの障害発生時、自動回復(オートヒーリング)を行うためのリソース。

加えて、稼働・非稼働Pod数の監視と調整機能も担っており、稼働しているべきPod数と実際稼働中のPod数との整合性チェック&自動対応などを行ってくれる。

なお、Kubernetesでいうオートヒーリングは、あくまでもPodの再起動であり、生涯で停止したPodの状態をそのまま復帰させるわけではないことに注意。

 

また、Podの直接デプロイではReplicaSetは機能しない。

オートヒーリング機能を有効にしたければ、ReplicaSetを利用してPodをデプロイする必要がある。

 

■kubectl

Kubernetesクラスタに対して、デプロイやPodのスケールアウトなどの各種管理操作を行うための、CLIツール。

kubectlの設定は、「kubectl config」コマンドで管理でき、デフォルトでは「$HOME/.kube/config」配下に設定内容が格納される。

 

大まかな全体像

 

 

※参考書籍

コンテナ・ベース・オーケストレーション Docker/KuberLinuxnetesで作るクラウド時代のシステム基盤