Kubernetesアーキテクチャ:2022年に知っておくべきことすべて

公開: 2021-01-05

目次

Kubernetesについて

Kubernetesは、リソースの最大化、自動デプロイプロセスと更新、自動スケーリング、自己修復、自動ロールバックとロールアウト、コンテナオーケストレーターの負荷分散、サービスディスカバリ、自動再起動、自動配置などの機能を備えたオープンソースプラットフォームです。自動レプリケーションなど。Kubernetesはコンテナオーケストレーターだけではありません。 クラウドベースのアプリケーション用のOSでもあります。

これは、Windows、MacOS、またはLinuxで実行される他のアプリケーションと同様のアプリケーションをより柔軟に実行するためのプラットフォームのようなものです。 これにより、オーケストレーションの負荷が軽減され、開発者はセルフサービス操作の目的でコンテナ中心のワークフローに完全に集中できます。 開発者には、展開とアプリケーション管理において非常に高度な自動化という利点があります。 機能を強化するために、任意の環境と統合できます。

読む:インドのKubernetes給与

Kubernetesアーキテクチャ

Kubernetesアーキテクチャは、上位層と下位層のレイヤーで構成されています。 この個人では、物理マシンまたは仮想マシンが1つのクラスターにまとめられます。 共有ネットワークは、各サーバー間の通信に使用されます。 Kubernetesには、(少なくとも)コントロールプレーンとして機能する1つのマスター、分散ストレージシステムがあります。 複数のクラスターノードは、Kubeletsとも呼ばれます。

  • Kubernetesのマスターであるコントロールプレーンは、デプロイのスケジュールを設定し、APIを公開し、Kubernetesクラスター全体を管理します。
  • クラスターノードは、コンテナーランタイム、マスターと通信するためのエージェント、およびその他の監視コンポーネント、ロギングなどを実行します。

以下画像に、 KubernetesアーキテクチャKubernetesコンポーネントを示します。

ソース

Kubernetesコンポーネントを見てみましょう

Kubernetesコンポーネント

マスター:Kubernetesコントロールプレーン

マスターは、Kubernetes内のすべてのオブジェクトのデータを維持します。 クラスタ全体を管理するため、マスターと呼ばれます。 オブジェクトの状態を制御し、システムの実際の状態と必要な状態の一致を維持し、変更に応答します。

次の3つの重要なコンポーネントが含まれています。

  • Kube- APIサーバー: KubernetesAPIサーバー
  • Kube-スケジューラ:ワーカーノードでのポッドスケジューリング
  • Kube-コントローラー:ポッドレプリケーションを管理します

複数のマスターノードがある場合、これらのコンポーネントはすべてのマスターノードに複製されます。

更新、スケーリングなどを含むさまざまなアプリケーションのライフサイクルオーケストレーションは、APIサーバーによって実行されます。 これは、クラスター内にないクライアントのゲートウェイとして機能します。 APIサーバーが認証を行います。 また、ポッドとノードの仲介役のようにも機能します。

コントローラは次のタスクを実行します。

  • コア制御ループの実行
  • 必要な状態に向けて運転状態を変更します。
  • クラスターの状態を監視する

また、パブリッククラウドに統合することにより、ルーティング、ストレージサービス、負荷分散、DNSネットワークサービス、VMインスタンスも提供します。 自動スケーリング、ノード、サービス、ポッド、名前空間の状態を駆動するさまざまなコントローラー。

ノード全体のコンテナーのスケジューリングは、クラスター内のスケジューラーによって行われます。 さまざまなリソースの制限/保証、または非アフィニティ/アフィニティ仕様を検討します。

Kubernetesコントロールプレーンの分類法を以下に示します。

ソース

クラスターノード:Kubelets

Kubeletsは、コンテナーの実行を担当するさまざまなマシンです。 マスターはクラスターノードの管理を行います。 ミニオンとも呼ばれます。 クラスターノードは、Kubernetesのプライマリコントローラーと見なされます。 コンテナーの実行レイヤーであるDockerを駆動します。

次のコンポーネントが含まれています。

  • ポッド:コンテナのグループ
  • Docker:コンテナベースのテクノロジー、OSのユーザースペース
  • Kubelet:ポッドのセットの保守を担当するコンテナエージェント。
  • Kube-proxy:サービスからノードに入るトラフィックをルーティングします。

Kubernetesクラスターノードの分類法を以下に示します。

ソース

ポッドとサービス

ポッドは、開発者がやり取りするKubernetesの重要な概念です。 実行中のプロセスを表します。 WordPressLAMPアプリケーションなどの垂直統合されたアプリケーションスタックをホストできます。 以下に、さまざまなポッドタイプを示します。

ポッドタイプ機能性
ReplicaSet シンプルポッドタイプ

固定ポッドの実行を保証します

展開ReplicaSetを介した宣言型のポッド管理

ローリングアップデートとロールバックメカニズムが含まれています。

StatefulSet 永続化する必要があるポッドを管理します
デーモンセット各ノードがポッドインスタンスを実行していることを確認します。

ログ転送やヘルスモニタリングなどのクラスターサービスを管理します。

CronJobとJob スケジューラーとして短命なジョブを実行します

ポッドは、多数のコンテナーと外部ボリュームで構成できます。 ポッドの分類法を次の図に示します。

ソース

サービスはポッドの追跡を行います。 ポッドとサービスの関連付けを定義するために、IPアドレスの割り当ての代わりにセレクターまたはラベルが使用されます。 これにより、サービスへのポッドの追加と新しいバージョンのリリースが簡単になります。 さまざまなサービスタイプは次のとおりです。

サービスの種類機能性
ClusterIP デフォルトタイプ; 内部IPにサービスを公開し、サービスを到達可能にします
NodePort 開発者が独自のロードバランサーを設定できるようにします
LoadBalancer 構成を自動化します
ExternalName 一般的に、Kubernetes内でサービスを作成するために使用されます。

使用される一般的なクラウド展開は、LoadBalancerタイプです。 Kubernetesは、複雑さを解決するための高レベルのIngressの抽象化をサポートしています。 ユーザーは、同じロードバランサーを使用することにより、同じIPアドレス内で異なるサービスを表示できます。

続きを読む: OpenshiftとKubernetes:OpenshiftとKubernetesの違い

Kubernetesネットワーキング

ほとんどの場合、CNI(Container Network Interface)は、基本的なネットワークを隠すために使用されます。 フルルーティングオプションのCalicoも使用できます。 どちらのオプションでも、通信はクラスター全体のポッドネットワークで行われ、CalicoまたはFlannel(CNIプロバイダー)によって制御されます。 コンテナは、制限なしにローカルホストを介してポッド内で通信できます。 外部ソースからサービスまたはポッドからサービスへの移動は、Kubeプロキシを介して行われます。

永続ストレージ

一部のデータを含むディレクトリは、Kubernetesではボリュームと呼ばれます。 ディレクトリはポッドからアクセスできます。 Kubernetesには多くのストレージタイプがあります。 ポッド内のコンテナは、任意のストレージを消費できます。 NFS、Amazon Elastic Block Store、Iscsi、CephFSなどのパブリッククラウドサービスは、ファイルのマウントとポッドへのブロックストレージに使用されます。 PV(PersistentVolumes)は、既存のストレージリソースに関連付けられているクラスター全体のオブジェクトです。

名前空間内では、ストレージ消費の要求はPersistentVolumeClaimによって開始されます。 PVのさまざまな状態が利用可能であり、バインドされ、解放され、失敗します。 StorageClassesは抽象化レイヤーです。 基盤となるストレージ品質を差別化し、さまざまな特性を分離します。 ポッドは、StorageClassesとPersistentVolumeClaimを使用して、新しいストレージを動的に要求できます。

ソース

ディスカバリーおよびパブリッシングサービス

クラスターのバージョンに応じて、Kubernetesはサービスの検出をKube-DNSまたはCoreDNSのいずれかに依存します。 これらの統合DNSサービスは、DNSレコードを作成、更新、および削除します。 一貫性のあるシンプルな命名スキームを通じて、アプリケーションが他のポッドやサービスをターゲットにするのに役立ちます。

例(ソース

Kubernetesサービスの場合、DNSレコードはservice.namespace.svc.cluster.localになります。

DNSレコード、ポッドには次のものを含めることができます: 10.32.0.125.namespace.pod.cluster.local

ソース

名前空間

仮想クラスターを含む物理クラスターは、名前空間と呼ばれます。 これは、Kubernetesオブジェクトのそれぞれのアクセス権とともに、複数のユーザーに個別の仮想環境を提供します。

ラベル

ラベルは、単一の名前空間に存在するリソースを区別するために使用されます。 属性は、キーまたは値のペアによって定義されます。 ラベルは、Kubernetesオブジェクト上で組織構造をマッピングするために使用されます。 環境、リリース状態、アプリ層、または顧客の識別について説明できます。 オブジェクトのハードリンクを防ぎます。

注釈

注釈は、任意の未確認の手荷物またはメタデータをオブジェクトに追加するために使用されます。 これは、宣言型の構成ツールとして使用されます。

必読: Kubernetes Vs. Docker:知っておくべき主な違い

世界のトップ大学からソフトウェアエンジニアリングの学位取得します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

Kubernetesのテクノロジーは急速に発展しており、将来に向けた費用対効果の高いソリューションです。 アプリケーションに優れた安定性を提供します。

この記事では、 KubernetesアーキテクチャKubernetesコンポーネントのすべての基本概念について説明します。

Kubernetes、ビッグデータについて詳しく知りたい場合は、フルスタックソフトウェア開発におけるupGrad&IIIT-BのエグゼクティブPGプログラムをご覧ください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクト、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

未来のキャリアに備える

フルスタック開発のエグゼクティブPGプログラムに今すぐ申し込む