Kubernetesとは?

Kubernetesは包括的な分散システムサポートプラットフォームです。これには、マルチレイヤーセキュリティ保護や入場制御メカニズム、マルチテナントアプリケーションサポート、透過的なサービス登録および検出メカニズム、組み込みのインテリジェントな負荷分散器、強力な障害検出および自己修復機能、サービスのローリングアップグレードおよびオンラインスケーリング機能、スケーラブルなリソース自動スケジューリングメカニズム、細かいリソースクォータ管理機能など、堅牢なクラスター管理機能が含まれます。同時に、Kubernetesは、開発、テスト、展開、運用監視などの様々な段階をカバーする完全な管理ツールセットを提供しています。そのため、Kubernetesはコンテナ技術に基づく新しい分散アーキテクチャの解決策であり、包括的な分散システム開発およびサポートプラットフォームとして機能します。

Kubernetesアーキテクチャ図

Kubernetes基本サービスの紹介

ここでは、Kubernetesの基本コンポーネントを簡単に紹介します。詳細な説明は後続の記事で提供されます!

Kubernetesサービスの紹介

サービスは、分散クラスターアーキテクチャの中心です。サービスオブジェクトには、次の主要な特徴があります:

  1. *一意に指定された名前があります(例:mysql-server)。
  2. *仮想IP(クラスターIP、サービスIP、またはVIP)とポート番号を持ちます。
  3. *一定のリモートサービス機能を提供できます。
  4. *このサービス機能を提供する一連のコンテナアプリケーションにマッピングされています。

現在、サービスのプロセスは、外部でサービスを提供するためにSocket通信メソッドに基づいています。たとえば、redis、memcache、MySQL、Webサーバー、または特定のTCPサーバープロセスが特定のビジネスを実装しています。サービスは通常、複数の関連するサービスプロセスによって提供されますが、各サービスプロセスには独立したエンドポイント(IP +ポート)アクセスポイントがあります。これにより、バックエンドのサービスプロセスの数や、サービスプロセスが障害により別のマシンに再デプロイされるかどうかに関係なく、サービスの正常な呼び出しに影響を与えません。さらに重要なことは、このサービスが作成されると、それ以上変更されないということです。これは、Kubernetesクラスター内で、もはやサービスのIPアドレスの変更の問題を心配する必要がないことを意味します。

サーバーアクセス図

Kubernetesポッドの紹介

ポッドの概念: ポッドは、ノードと呼ばれる環境で実行されます。これは、プライベートまたはパブリッククラウドの仮想マシンまたは物理マシンである可能性があります。通常、1つのノードで数百のポッドが実行されます。次に、各ポッドはPauseと呼ばれる特別なコンテナを実行し、他のコンテナはビジネスコンテナです。これらのビジネスコンテナはPauseコンテナのネットワークスタックとVolumeマウントボリュームを共有するため、それらの間の通信とデータ交換が効率的に行われます。設計時には、この特徴を十分に活用して、関連のある一連のサービスプロセスを同じポッドに配置することができます。

すべてのポッドとその内部で実行されるコンテナがサービスにマッピングされるわけではありません。サービスを提供するポッドのグループのみがサービスにマッピングされます。

サービスとポッドの関係

コンテナは強力な隔離を提供するため、サービスのためのプロセスグループをコンテナに分離する必要があります。Kubernetesは、それぞれのサービスプロセスを対応するポッドにラップするPodオブジェクト

を設計し、それをPodで実行されるコンテナにします。サービスとポッドの関係を確立するために、Kubernetesはまず各ポッドにラベルを割り当てます。たとえば、MySQLを実行しているポッドにはname=mysqlラベルが割り当てられ、PHPを実行しているポッドにはname=phpラベルが割り当てられます。その後、対応するサービスのためのラベルセレクタを定義します。たとえば、MySQLサービスのラベルセレクタはname=mysqlです。これは、このサービスがname=mysqlラベルを含むすべてのポッドに適用されることを意味します。これにより、サービスポッドの関連付けの問題が巧みに解決されます。

Kubernetesレプリケーションコントローラ(RC)の紹介

Kubernetesクラスターでは、スケールが必要なサービスに関連するポッドにRC(レプリケーションコントローラ)を作成するだけです。これにより、サービスの拡張やその後のサービスのアップグレードなどの問題が解決されます。 RCファイルの定義には、次の3つの重要なポイントが含まれます:

  1. ターゲットポッドの定義
  2. 実行するターゲットポッドのレプリカ数(レプリカ)
  3. 監視するターゲットポッドのラベル

RCを作成すると、システムはRCで定義された定義に基づいて自動的にポッドを作成し、RCで定義されたラベルと一致するポッドの状態と数量をリアルタイムで監視します。インスタンスの数が定義されたレプリカ(Replicas)の数よりも少ない場合、KubernetesはRCで定義されたポッドテンプレートに基づいて新しいポッドを作成し、それを適切なノードで実行するようスケジュールします。このプロセスは完全に自動化されており、人間の介入は不要です。単にRCのレプリカの数を変更します。

Kubernetesマスターの紹介

Kubernetesでは、マスターはクラスターの制御ノードを指します。各Kubernetesクラスターには、マスターノードが必要です。これは、基本的には、すべてのKubernetes制御コマンドが送信され、具体的な実行プロセスが担当されます。後続で実行するコマンドのほとんどは、マスターノードで実行されます。マスターがクラッシュしたり使用不可能になったりすると、コンテナクラスターの管理が妨げられます。

以下のキープロセスがマスターノードで実行されます:

  • Kubernetes APIサーバー(kube-apiserver):HTTP Restインターフェースで重要なサービスを提供し、Kubernetesのリソースの追加、削除、変更、クエリなどのすべての操作の単一のエントリポイントとして機能し、またクラスター制御のエントリプロセスとして機能します。
  • Kubernetes Controller Manager(kube-controller-manager):Kubernetes内のすべてのリソースオブジェクトの自動化のための中央制御センター。
  • Kubernetes Scheduler(kube-scheduler):リソースのスケジューリング(ポッドのスケジューリング)プロセスを担当します。

さらに、マスターノードでetcdサービスを開始する必要があります。なぜなら、Kubernetesのすべてのリソースオブジェクトデータetcdに保存されるからです。

Kubernetesノードの紹介

マスター以外のクラスター内の他のマシンは、ノードノードと呼ばれます。各ノードには、マスターによっていくつかのワークロードDockerコンテナが割り当てられます。ノードが失敗した場合、そのノード上のワークロードはマスターによって自動的に他のノードに転送されます。

各ノードノードで実行される主要なプロセスは次のとおりです:

  • kubelet:ポッドに対応するコンテナの作成および停止などのタスクを担当し、基本的なクラスター管理機能をマスターノードと密接に協力して実現します。
  • kube-proxy:Kubernetesサービスの通信および負荷分散メカニズムを実装する重要なコンポーネント。
  • Dockerエンジン(Docker):ローカルマシンでのコンテナの作成と管理を担当するDockerエンジン。

Kubernetesマスターとノードの責任

クラスター管理の観点から、Kubernetesはクラスター内のマシンをマスターノードとワーカーノード(ノード)のグループに分割します。マスターノードでは、クラスター全体のリソース管理、ポッドのスケジューリング、弾力的なスケーリング、セキュリティコントロール、システムモニタリング、エラー修正などの管理機能を実装する一連のプロセスが実行されます。すべてが完全に自動化されています。ノードは、クラスター内のワーカーノードとして、実際のアプリケーションを実行します。Kubernetesがノード上で管理する最小の実行単位はポッドです。各ノードで、Kubernetesはポッドの作成、起動、監視、再起動、破棄、ソフトウェアベースの負荷分散の実装などを担当するkubeletおよびkube-proxyサービスプロセスを実行します。

By bai

Leave a Reply

Your email address will not be published. Required fields are marked *