LoginSignup
1
0

More than 1 year has passed since last update.

Kubernetes を今一度言語化し理解を深める#1

Last updated at Posted at 2021-12-26

はじめに

本記事は 抽象度の高い Kubernetes のアーキテクチャを言語化し理解する目的で作成しました。

1.概要

Kubernetes はコンテナ( Docker )のデプロイやスケジューリングを自動化するためにグーグルが作成した オーケストレーションエンジン

  • オーケストレーションエンジンとは…
    アプリやコンテナを複数のサーバマシンに配置してシステムを自動化する仕組み

  • Kubernetesとは…
    Docker や containerd などコンテナランタイムのオーケストレーションエンジンのデファクトスタンダードと言われ、次世代の Linux になるといわれている技術

Kubernetes のリソースは ホストとなるサーバマシンや仮想マシンのことを Node 複数のコンテナを Pod として管理する

イメージ図

image.png

1-1. Kubernetes の機能

Kubernetes を使用することで以下のような機能が使用できる。

  • Infrastructure as Code(IaC)
  • コンテナのデプロイ、スケジューリング
  • コンテナの死活管理
  • 障害時の自動復旧
  • 複数サーバー(Node)でのコンテナ管理
  • コンテナの負荷分散
  • 負荷によってコンテナの数を調節するオートスケーリング
  • コンテナのリソース管理 …etc

特に重要なのが 宣言的設定(IaC)
Kubernetes における宣言的設定とは、 YAML 形式や JSON 形式で記述したコードによって「システムのあるべき姿」を定義するもの。

これによって、通常障害が起きると運用担当のエンジニアが手動で復旧作業を行い復旧するが、Kubernetes では IaC によって例えば Pod を常に 3 つ起動させておきたいといった場合には「ReplicaSet」 を使用することである 1 つの Pod が障害でダウンして 2 つになった際も自動的に Pod が作成され 3 つになるように自動復旧する。

■参考資料

障害時の動作について以下のブログを参考にさせていただきました。

1-2. Kubernetes 採用時の注意点

完璧に見える Kubernetes さんだが注意すべきポイントが 4 点ある。

1) Kubernetes そのものが非常に複雑
2) Kubernetes の更新サイクルが早い
3) Kubernetes を運用するために周辺サービスが必要となる場合が多い
4) 大規模でなければコンテナ(Docker)を採用するだけでも十分

2. Kubernetes のアーキテクチャ

Kubernetes は Master Node (別名:コントロールプレーン)と Worker Node の 2 種類あり
kube-apiserver を中心とした分散システムとなっている。

image.png

2-1 Master Node

クラスタの制御を受け持つ。 スケジューリングやイベントの検知や対応など、クラスタの全体に関わる決定を行い、クラスタ内のどのノードでも実行可能。

  • api (kube-apiserver)
    Kubernetes API を提供するフロントエンドのコンポーネント。
    ユーザから発行される kubectl コマンドを api に送ることでリソースの作成や削除ができる。その情報は etcd に登録される。

  • etcd
    全てのクラスタデータ保存用のデータベース。
    Key-ValueStore (KVS) 形式で保存される。

  • c-m (kube-controller-maneger)
    様々なコントローラを実行するコンポーネント。
    Deployment コントローラや ReplicaSet コントローラはリソースの状態によって ReplicaSet や Pod の作成を行う。

  • sched (kube-scheduler)
    未割当状態の Pod をどのノードに配置されるかを決定する。
    デプロイは kubelet が行う。

2-2 Worker Node

ノードで実行され、実行中のポッドを維持しコンテナランタイムを提供する。

  • kubelet
    Node 上で動作をするコンポーネント。
    コンテナランタイムと連携してコンテナのデプロイや停止などを行う。

  • kube-proxy
    Kubernetes クラスタ内の各ノードで実行されるプロセス
    クラスタ内外のネットワーク通信を提供する。

最後に

参考資料を元に自分の言葉で言語化することで Kubernetes のアーキテクチャをより理解できた。引き続き勉強の過程でまとめていきたいと思う。

参考資料

Kubernetes 完全ガイド 第2版

しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識

1
0
0

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
1
0