22
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【IT基礎】Kubernetesの基本概念

Last updated at Posted at 2026-01-11

はじめに

この記事では、初心者がYoutube動画からkubernetesの基本概念についてまとめたものとなります。
以下のYoutubeで学んだ内容をピックアップしてまとめました。
この動画は、IT初心者の自分でもかなりクリアにK8sの概要が入ってきたとってもいい動画です!
https://www.youtube.com/watch?v=r0NpHb-6IvY

k8sの難しいところ

抽象的な概念が多く、レイヤーの異なる概念が混在しているから。
スクリーンショット 2026-01-11 8.18.33.png

1. コンポーネント

コンポーネントとは、k8sを構成しているもの。大きく分けて二つある。
スクリーンショット 2026-01-11 8.12.50.png

  • Control Planes:マスターとして、他のサーバーに指示を出す。実際の現場では3,4台で冗長化を図る。
  • Nodes:ワーカー。実際にコンテナが動作する環境。

スクリーンショット 2026-01-11 8.22.10.png
上の図をさらに具体的にすると、こうなる。左がマスターノード、右がワーカーノード。
ポイントは、「全てkube-api-serverで繋がっている。APIで連携している。」 ということ。

ここまでで、以下の文章が理解できればOK

  • マスターとワーカーノードでクラスタが構成されている
  • コンテナをワーカーノードのコンテナランタイムで動かす
  • マスターノードとkubelet(各ワーカーノードで実行されるエージェント。マスターノードとやりとりして指示に従う)が通信している
  • マスターノードではいろんなコンポーネンントが動いている(全てAPI連携)

2. リソース

スクリーンショット 2026-01-11 8.34.11.png

k8sではコンテナをうまく管理するために、OSの機能や仕組みをリソースというもので抽象化している。

例)apacheコンテナを起動してポート8080で外部公開する場合

┌──────────────────────────────────────────────────────────────┐
│  ユーザーが記述(抽象化)                                       │
├──────────────────────────────────────────────────────────────┤
│  apiVersion: v1                                               │
│  kind: Service                                                │
│  spec:                                                        │
│    ports:                                                     │
│    - port: 8080    ← これだけで定義できる                     │
└──────────────────────────────────────────────────────────────┘
                         ↓
            kube-proxyが自動変換
                         ↓
┌──────────────────────────────────────────────────────────────┐
│  実体(OSの機能:iptables)                                    │
├──────────────────────────────────────────────────────────────┤
│  iptables -A KUBE-SERVICES \                                  │
│    -p tcp --dport 8080 \                                      │
│    -j KUBE-SVC-XXXXXXXX                                        │
│                                                               │
│  iptables -A KUBE-SVC-XXXXXXXX \                              │
│    -m statistic --mode random \                               │
│    -j KUBE-SEP-YYYYYYYY    ← 複雑なルールを自動生成            │
└──────────────────────────────────────────────────────────────┘

上の説明を聞いて、リソースとは
作業がテーマ別でまとめられたもの と理解しました。

リソースとは:テーマ別の作業のまとまり

従来の方法:
┌──────────────────────────────────────────────────────────┐
│  作業1: コンテナ起動        ← バラバラに作業が必要        │
│  作業2: ネットワーク設定                                   │
│  作業3: プロセス管理                                       │
│  作業4: ロードバランシング                                 │
│  作業5: ログ管理                                           │
└──────────────────────────────────────────────────────────┘

Kubernetesのリソース:
┌──────────────────────────────────────────────────────────┐
│  Podリソース              ← 「コンテナ実行」に関する作業を集約 │
│  └─ 作業: コンテナ起動、リソース制限など                   │
├──────────────────────────────────────────────────────────┤
│  Serviceリソース          ← 「ネットワーク」に関する作業を集約 │
│  └─ 作業: ポート公開、ロードバランシング、DNS登録など      │
├──────────────────────────────────────────────────────────┤
│  Deploymentリソース       ← 「管理・運用」に関する作業を集約    │
│  └─ 作業: レプリカ管理、自動再起動、更新戦略など            │
└──────────────────────────────────────────────────────────┘

3. リソース例を見てみる(Podの起動)

最後に、実際の起動の流れの一部を例に取ってみてきます。
2までの内容で、実際にPodが起動する際には以下が順番に実行されると理解しました。

  • Podリソース
  • Serviceリソース
  • deploymentリソース

ここではそのうちのPodリソースにおいて、実際にKubernetes内部で自動的に行われている処理をみていきます。

スクリーンショット 2026-01-11 9.13.53.png

  1. Podの作成を依頼(kubectlやAPIなど)

    • クライアントPCから、kubectl applyなどのコマンドでPodの作成を依頼し、API ServerにPodリソースの情報が送信される
  2. ControllerがAPI Serverの変化を検知して別のAPIを呼ぶ

    • ControllerはAPI Serverを監視しているので、リソースの変化を検知し他のAPIを呼び出し追加の処理を実行する
  3. kube-schedulerがAPI Serverの変化を検知してPodをどのワーカーノードに配置するか指定

    • APIが叩かれるとKubeschedulerがAPIサーバーに、podの置く場所(最適なワーカーノード)を提案する
  4. kubeletがマスターノードのAPI Serverの動きを定期的にチェックしているので、そこからPodの作成依頼を取得

    • kubeletも定期的にAPI Serverを監視しているので、自分のワーカーノードにコンテナ起動する場合自分で気づいて、Podの作成依頼内容を取得する。
  5. kubeletからDocker(コンテナランタイム)へコンテナの作成を依頼

    • kubeletが取得したPodの作成依頼内容を、コンテナランタイム(Docker/containerdなど)にAPI経由で依頼する。
  6. Docker(コンテナランタイム)によってコンテナが作成される

    • コンテナランタイムが実際にコンテナイメージを取得し、コンテナを起動し、Podが実際に動作状態になる。

まとめ

概念がk8s専用なので、大きいところからまず理解して、切り分ける。
その後、切り分けた後の1つを例に取って流れを理解していく。(手を動かす)

この流れで勉強するといいのではないかなと思いました。次は、実際に手を動かしてみます!

22
26
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?