はじめに
仕事でKubernetesを使う機会が増えているので基本的な知識のまとめと私がキャッチアップで使用した教材を紹介させていただきます。
Kubernetesとは?
Kubernetes(K8s)は、コンテナの実行環境を自動管理するためのプラットフォームです。
Googleが開発し、現在はCNCFにより運用されています。
主な機能
- 自動スケーリング・自己修復
- ロードバランシングとサービスの発見
- 宣言型の環境設定(YAML)
- 複数インフラへの対応(オンプレ/クラウド共通)
画像イメージ
Master NodeとWorker Nodeの構成イメージ
ClientからAPIリクエストによりkube-api-serverにリクエストが飛び、各コマンドにより各モジュールに対して指令が飛ぶ
Kubernetesにリクエストを送るフローイメージ
ユーザーからIngressにリクエストが入るとリクエストの内容に応じてルーティングされたサービスが呼び出され、ServiceがPodのトラフィックを管理しつつ応答可能なPodにリクエストを送信する。
DeploymentはPodのヘルスチェックを継続的に行う。
Master Node と Worker Node の違い
Master Node(制御プレーン)
以下のようなコンポーネントで構成され、クラスタ全体を管理・制御します。
- kube-api-server:REST API を介して操作を受け付け
- etcd:クラスタの設定と状態を保存する分散型ストレージ
- kube-controller-manager:クラスタの“望ましい状態”を維持
- kube-scheduler:Pod を最適な Worker Node に配置
- cloud-controller-manager(クラウド利用時):外部リソースとの連携
Worker Node(実行ノード)
実際に Pod(コンテナ)を動かす現場担当です。
-
kubelet:Control Plane とのやりとり、Pod の健全性管理
-
kube-proxy:Service 間や外部通信ネットワーク制御
-
Container Runtime:コンテナの起動・管理(例:containerd)
-
Pod:アプリケーションの実行単位
-
Service:Pod 群への安定したアクセス手段を提供します。Service が仮想IP(ClusterIPなど)を発行し、kube-proxy が裏で該当する Pod にトラフィックをルーティングします。
-
Deployment/ReplicaSet:アプリケーションを継続的に運用するための仕組み。
- Deployment が「このアプリを3つ動かしてね」と指定すると、
- ReplicaSet がそれに従って Pod を維持し、落ちたら再起動するなどの自己修復を行います。
-
Ingress:外部からクラスタ内の Service に HTTP/HTTPS でアクセスするための入り口。ドメインごとのルーティングやSSL終端なども担います。
-
ConfigMap:アプリケーションが使う設定値(例:環境変数や設定ファイル)を管理する仕組み。アプリケーションコードに変更を加えずに設定だけを柔軟に変更できます。
-
Secret:パスワードやAPIキーなど、機密性の高い情報を安全に管理するための仕組み。Pod に環境変数やマウントボリュームとして渡すことができます。
両者の連携フロー
- クラスタ管理者 → kube-api-serverにデプロイ命令
- kube-scheduler → Worker を選定
- kubelet → Pod 起動
- kube‑proxy → ネットワーク整備
- kube-controller-manager → 状態を監視・自動修復
Master がクラスタの「頭脳」なら、Worker は「腕と脚」。この二つが協調することで Kubernetes の高可用性・自動復旧・スケーラビリティが実現されます。
私が学習に使用させていただいた教材
ここまでは今までの学習や業務を通して最低限知っておいたほうがいい概念などの説明をさせていただきました。
ここでは実際に私が、キャッチアップや学習をする上で使用した教材についてご紹介させていただきます。
-
つくって、壊して、直して学ぶ Kubernetes入門
この教材は実際にクラスタの構築やログ管理などを行うための知識をハンズオンで学べる教材です。Go言語をもとにコンテナ立ち上げなどが行われますが、Go言語をきちんと理解していなくてもKubernetesの基礎について実際に触れて学ぶことができました。 -
Kubernetes道場
このサイトにはかなりお世話になりました。今回紹介したような内容からより深い部分の説明までわかりやすく記載されています。ブログ形式で記載されているためサクサク読み進めることができました。 -
Kubernetes完全ガイド
こちらは私自身全て読破できたわけではないのですが、辞書的な使い方で使用しています。
終わりに
この記事を導入に皆様も一緒にKubernetesの勉強をしていければと思います!
もし記事に関して質問やフィードバックなどございましたらお気軽にいただけますと幸いです。