0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

⑫1日10分で理解するコンテナ技術入門 - Kubernetesのアーキテクチャと基本用語 -

Posted at

前回は、Kubernetesの概要と、minikubeのインストール方法について説明しました。今回は、Kubernetesのアーキテクチャと、基本的な用語について説明していきます。

Kubernetesの基本用語

Kubernetesを学んでいくと、様々なKubernetes用語が出てくるので、基本的なものをここに整理しておきたいと思います。それぞれの詳細については、次回以降の記事にて説明したいと思いますので、ざっくりとどんなものかだけ見ていただければと思います。

用語 概要 特徴・機能
クラスター(Cluster) Kubernetesの基本単位で、複数のノードから構成される ノード間でコンテナ化されたアプリケーションが協調して動作
ノード(Node) クラスター内の単一のマシン(物理または仮想) マスターノードとワーカーノードがある
ポッド(Pod) Kubernetesでデプロイされる最小のコンピューティングユニット 一つまたは複数のコンテナを含み、同じネットワーク名前空間とストレージを共有
レプリカセット(ReplicaSet) 特定の数のポッドを常に実行することを保証 高可用性と負荷分散を実現
デプロイメント(Deployment) アプリケーションのデプロイと更新を管理するための宣言的なオブジェクト レプリカセットを管理し、ロールアウトやロールバックを制御
サービス(Service) ポッドの集合に対する永続的なIPアドレスとDNS名を提供し、ロードバランシングを行う ClusterIP、NodePort、LoadBalancerなどの種類がある
ネームスペース(Namespace) クラスター内のリソースを論理的に分離する 大規模なクラスター管理やマルチテナント環境で有用
コンフィグマップ(ConfigMap) 環境設定データをキー-バリュー形式で保存し、ポッド内のコンテナに設定情報を提供 設定ファイルやコマンドライン引数の外部化に使用
シークレット(Secret) パスワードやAPIキーなどの機密情報を安全に保存し、ポッド内のコンテナに提供 ベース64エンコードで保存され、適切な権限設定が必要
イングレス(Ingress) クラスター外部からクラスター内のサービスへのHTTPおよびHTTPSルートを管理 ロードバランシング、SSL/TLS終了、名前ベースのバーチャルホスティングを提供
ボリューム(Volume) ポッド内のコンテナがデータを共有および永続化するためのストレージを提供 emptyDir、hostPath、persistentVolumeClaimなどの種類がある
クーバレット(Kubelet) 各ノード上で動作するエージェントで、ポッドのライフサイクルを管理 クラスターの状態をマスターノードに報告
マスターノード(Master Node) クラスター全体を管理するコンポーネントが動作するノード APIサーバー、コントローラーマネージャー、スケジューラーなどが含まれる
ワーカーノード(Worker Node) 実際にコンテナを実行するノード クーバレットやコンテナランタイムが動作
kube-proxy 各ノード上で動作するネットワークプロキシで、サービス間の通信を管理 iptablesやipvsを使用してトラフィックをルーティング

Kubernetesのアーキテクチャ

Kubernetesのアーキテクチャは、公式ページには以下のように書かれています。
image.png

Kubernetesクラスターは、まずコントロールプレーンワーカーノードの二つの役割のノードから構成されます。コントロールプレーン、ワーカーノードともに複数台のマシンから構成することができます。この絵では、コントロールプレーンが一台、ワーカーノードが2台の構成になっています。

コントロールプレーン

コントロールプレーンは、クラスターの管理に必要な以下のコンポーネントが配置されています。

  • kube-api-server
  • etcd
  • scheduler
  • Controller Manager
  • cloud-control-manager

kube-api-server

Kubernetesクラスターのフロントエンドになるコンポーネントです。全ての操作がこのAPIサーバーを通じて行われます。例えば、Kubernetesリソースの作成、更新、削除などのリクエストを受け取り、処理を行います。

etcd

Kubernetesの主要なデータストアで、クラスタのすべてのデータを永続化します。クラスタの設定情報、状態、メタデータなどを保存するために使われます。

scheduler

Kubernetesのスケジューリングコンポーネントで、新しいPodがどのノードで実行されるかを決定します。

controller manager

Kubernetesのコントローラを管理するコンポーネントで、クラスタの状態を所望の状態に保ちます。レプリカセット、デプロイメントなどのリソースを監視して、必要に応じてPodを作成、更新、削除します。

cloud-control-manager

クラウドプロバイダ固有のコントローラを実行するコンポーネントで、クラウドリソースの管理を行います。例えば、ノードの管理であったり、ロードバランサの作成などを行います。

ワーカーノード

ワーカーノードは、実際のワークロードを実行するために必要な以下のコンポーネントが配置されています。

  • kubelet
  • kube-proxy

kubelet

各ノード上で、Podとコンテナのライフサイクルを管理します。Podの健康状態を監視して、APIサーバーにノードの状態を報告します。ユーザーは、このkubeletの報告をコマンドラインから確認することができます。

kube-proxy

各ノード上でサービス間のネットワーク通信を管理し、適切なPodにトラフィックをルーティングします。

まとめ

今回は簡単にKubernetesの各コンポーネントの役割と、アーキテクチャを説明しました。次回は、実際にKubernetesクラスタ上にPodをデプロイしてみたいと思います。

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