IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウドネイティブで行こう

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第4回 kubernetesとは (宮崎悟) 2022年10月

前回は、コンテナを操作するために使用する、コンテナオーケストレーションのdocker compose/swarm について説明しました。今回は、コンテナオーケストレーションのデファクトスタンダードであるkubernetesについて説明します。

kubernetes

kubernetesは複数ホスト内で、複数のコンテナを制御するソフトウェアです。コンテナの設定、実行、運用を自動的かつ統合的に実行するため、コンテナオーケストレーションツールと呼ばれます。kubernetesは、ホストのことをノード(Node)と呼び、複数のノードで構成可能です。また、kubernetesが扱うコンテナの最小単位であるポッド(Pod)は、1つ以上のコンテナの組み合わせで、Podは1つのローカルIPアドレスを持ちます。kubernetesは、ノード上で複数のポッドを起動することでサービスを提供し、自動的にスケールアウト・インすることで可用性のあるサービスを提供します。

以下は、kubernetesのクラスタの概念図です。

component of kuberenetes

コントロールプレーン

kubernetesを管理するのは、コントロールプレーン(Control Plain)と呼ばれるポッド群です。コントロールプレーンは、クラスタ全体のポッドのスケージューリングや、イベントの検出・応答を行います。コントロールプレーン自体もポッドで構成されますが、重要度が高いため、通常のポッドとは別のノードで動作させることが多いです。コントロールプレーンを動作させるノードをマスターノードと呼び、それ以外をワーカーノードと呼びます。マスターノードは、その重要性から高可用性クラスター構成を取ることができます。

コントロールプレーンは、以下の要素から構成されます。

  • APIサーバ APIサーバ は、kubernetes APIを外部に提供するコンポーネントで、コントロールプレーンのフロントエンドの役割を持ちます。APIサーバは、スケールアウトすることでAPIのトラフィックを分散できます。
  • etcd クラスタ内の構成要素や設定情報を保存する、一貫性を持つキーバリューストアです。
  • スケジューラ 新しく作成されたPodを監視し、最適なNodeに割り当てます。
  • コントローラマネージャー 以下のコントローラプロセスを実行します。
    • ノードコントローラ ノードがダウンした場合の、通知・対応を行います
    • レプリケーションコントローラ 設定されたポッド数を維持します。
    • エンドポイントコントローラ kubernetes 外部と接続するためのエンドポイントオブジェクトを作成します。
    • サービスアカウント・トークンコントローラ kubernetes が使用する名前空間に対する、デフォルトアカウントとAPIアクセストークンを作成します。
  • クラウドコントロールマネージャー クラウドプロバイダが提供するリソースをAPI経由で制御します。クラウドコントロールマネージャは、主にクラウドプロバイダから提供されます。
ノードコンポーネント

各ノードには、ノードコンポーネントと呼ばれるポッドが実行されます。ノードコンポーネントは、kubernetes の実行環境を提供し、稼働中のポッドを管理します。

  • kubelet クラスタの各ノードで実行されるエージェントです。kubernetes が管理しているポッドを管理し、正常に実行されていることを保証します。kubelet は、kubernetesで管理されていないコンテナを管理しません。
  • kube-proxy クラスタの各ノードで実行されるネットワークプロキシです。ノードのネットワークルールを管理します。ネットワークルールに従って、クラスタの内部・外部からポッドへの通信を可能にします。kube-proxyは、OSのパケットフィルタリング層を優先して使用します。
  • コンテナランタイム コンテナを実行するソフトウェアです。kubernetesでは、kubernetes CRI(Container Runtime Interface)に沿って実装されたコンテナランタイムを使用します。代表的なものとして、docker、containerd、CRI-Oがあります。
アドオン

アドオンは、kubernetesクラスタの機能を拡張します。アドオンにはいくつかの種類があります。

  • ネットワークとネットワークポリシー CNI(Container Network Interface)に沿って実装されており、L2からL7までのスイッチングハブの機能を持ちます。実装により機能は異なりますが、ロードバランサや、ノード間通信の暗号化などの機能を含みます。
  • クラスタDNS ポッド向けの内部DNSサーバで、ポッドのIPアドレスがすべて管理されます。
  • Web UI ダッシュボードとしてWeb UIを提供し、クラスタ、クラスタ内で実行中のポッド、アプリケーションについて管理できます。
終わりに

今回は、kubernetesについて説明しました。現在のコンテナ実行環境は、kubernetesを使用したものが多くなっています。クラウドネイティブでは必須の知識で、公式ドキュメント(日本語)も存在するのでご参照ください。

次回は、マイクロサービスの概要について説明します。次回をお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes