1. はじめに
前回の投稿から、ご無沙汰してしまいました。前回、Dockerの導入編ということで、Dockerのインストール方法や、簡易的な使い方をまとめました。
今回は、その上位互換として知られる kubernetes の概念や用語について勉強したことをアウトプットしていきます。
2.kubernetesとは
kubernetesを一言でいうと、「コンテナを管理するためのシステム」です。
ざっくり言うと、「Docker 拡張バージョン」です。
Docker は単一マシンの上でコンテナを動作させるシステムでしたが、kubernetes は複数マシン上でコンテナを管理・統合させるためのシステムです。コンテナオーケストレーションといいます。
図2.1 は視覚的にDockerとkubernetesの差分を理解するために図示しました。
Dockerのみだと単一ホスト上で動作するコンテナの管理のみしかできませんが、kubernetesを利用することによって、複数のDockerホストをkubernetesのシステム上で管理することができるようになります。
Docker でも Docker Swarm を利用することで複数マシン上でコンテナを管理することができますが、kubernetesの方が機能が充実していて実践に使用されているため、今回は kubernetesを取り扱っています。
3. kubernetes の用語
以下 kubernetes で使われている用語をまとめました。
| No | リソース名 | 意味・用途 | 
|---|---|---|
| 1 | Node | ・コンテナを乗せる元のサーバ(物理マシン、VMどちらも) | 
| 2 | Namespace | ・仮想的なクラスタ ・開発者(チーム)それぞれのNamespaceを作ることでメインのNamaspaceを綺麗に保つことができる | 
| 3 | Pod | ・コンテナの集合体単位 ・デプロイするコンテナの集合体になるので、密結合となるwebサーバ用コンテナとアプリケーションサーバ用コンテナをまとめると有効活用できる | 
| 4 | ReplicaSet | ・同じ仕様のPodを複数生成・管理 ・Podのみでは単一のPodのデプロイしかできないため、複数のPodをデプロイする際に利用する | 
| 5 | Deployment | ・ReplicaSetの世代管理 ・実運用では、ほとんどDeploymentの単位でデプロイを管理すること | 
| 6 | Service | ・Podにアクセスするための経路定義 ・アクセスするPodを制御するために利用する ・L4層レベルでのアクセス制御が可能 | 
| 7 | Ingress | ・Service公開の口 ・L7層レベルでのアクセス制御が可能 ・HTTP/HTTPSでのサービス公開をする際はServiceよりIngressをメインに使用する | 
| 8 | ConfigMap | ・構成ファイル、コマンドライン引数、環境変数、ポート番号などの設定情報を定義し、Podへ供給する ・うまく活用すると構成の変更や管理が容易にできる | 
| 9 | PersistentVolume | ・Podが利用するストレージを定義 ・ストレージの実体である | 
| 10 | PersistentVolumeClaim | ・ストレージを論理的に抽象化したリソース ・PersistentVolumeを動的に確保する(必要な要領のみ) | 
| 11 | StorageClass | ・PersistentVolumeが確保するストレージの種類を定義(HDDやSSD等) | 
| 12 | StatefulSet | ・同じ仕様で一意性のあるPodを複数生成・管理 ・継続的にデータを永続化するステートフルアプリケーション管理用リソース | 
| 13 | job | ・常駐目的ではない複数(もしくは単一)Podを生成し、正常終了するまで管理するリソース ・大規模計算やバッチ処理などで利用 | 
| 14 | Cronjob | ・cron記法でスケジュール実行されるjob | 
| 15 | Secret | ・認証情報等の機密データを定義するリソース ・証明書や秘密鍵、パスワードなどの機密情報を管理する | 
| 16 | Role | ・Namespace内で操作可能なkubernetesリソースのルールを定義するリソース ・権限の管理に利用する | 
| 17 | RoleBinding | ・Roleとkubernetesリソースを利用するユーザーを紐付ける | 
| 18 | ClusterRole | ・クラスタ全体で操作可能なkubernetesリソースをルール定義する | 
| 19 | ClusterRoleBinding | ・ClusterRole と kubernetesリソースを利用するユーザーを紐付ける | 
| 20 | ServiceAccount | ・Pod に kubernetes リソースを操作させる際に利用するユーザー | 
3.まとめ
今回は、kubernetes の概念と用語についてまとめました。
時間があるときにこの用語を参考に実際に手を動かしながら、kubernetesの使い方を見ていきたいと思います。
その中でkubernetesのどういう部分が人気が高いのか考えていければと思います。うまくまとめられればqiitaにも投稿してみます。
また、最近マイクロサービスアーキテクチャを採用したシステムとkubernetesの相性がいいと言われますが、その意味も気にしながら手を動かしていこうと思います。

