kakts-log

programming について調べたことを整理していきます

Kubernetesのコンセプトまとめ

Kubernetes コンセプト

Kubernetesのコンセプトを理解するために公式ドキュメントを読んでざっくり整理しました。

kubernetes.io

overview

kubernetesを利用するためには kubernetes apiを使ってクラスタを意図する構成にさせる。 たとえばどのようなアプリケーションやワークロードを使うか、使用するコンテナイメージ レプリカ数、ネットワークやディスクリソースの設定などです。

kubernetes apiは、 kubectlというコマンドラインインターフェースを通じて利用します。

  • The Kubernetes master: クラスタ内のシングルノード上でマスターノードとして起動する3つのプロセスのコレクションのこと。
    この3つのプロセスはkube-apiserver, kube-controller-manager, kube-schedulerです。

  • クラスタ上のマスターでないノードは2つのプロセスを起動します。
    kubelet: kubernetes masterとやり取りするプロセス
    kube-proxy: 各ノードにkubernetes networking serviceを反映させるネットワークプロキシ

Kubernetes Objects

Kubernetesはシステムの状態を表すために幾つかの抽象概念を持つ。
Kubernetes apiの内部でこれらの抽象概念はオブジェクトとして表現されます。
主なオブジェクトは以下のとおりです。

  • Pod
  • Service
  • Volume
  • Namespace

さらに、KubernetesはControllersと呼ばれる高レベルの抽象概念も持っています。 Controllersは上記の基本オブジェクトによって構成され、さらに便利な機能を提供します。
- ReplicaSet - Deployment - StatefulSet - DaemonSet - Job

Kubernetes Control Plane

Kubernetes MasterやKubelet プロセスのようなKubernetes Control Planeの様々なパーツは、Kubernetesとクラスタのコミュニケーションを統制します。
Control Planeはシステム内の全てのKUbernetes オブジェクトのレコードを管理し、そのオブジェクトの状態を管理するために継続的なループプロセスが稼働しています。
どんなときでも、Control Planeのループプロセスはクラスタ内の変更に応答し、システム内の全てのオブジェクトが意図する状態になるために稼働します。

Kubernetes Master

Kubernetes Masterはクラスタを意図する状態に維持します。 ユーザがkubectlコマンドを使ったりしてKubernetesとやり取りする際、ユーザはKubernetes Masterとやり取りする事となります。
"Master"はクラスタの状態をマネージするコレクションの集合を意味します。通常これらのプロセスはクラスタ内の単一ノード上で稼働し、そのノードは"Master"として扱われます。
Masterは可用性のためにレプリケーション可能です。

Kubernetes Nodes

クラスタ内のノードは、アプリケーションやワークフローを稼働させるマシン(VM 物理サーバなど)を意味します。
Kubernetes Masterはこれらの各ノードを管理し、ノード単体に対して直接操作することは殆どありません。