概要概要
Kubernetesは、クラウドプラットフォーム内の複数のホスト上のコンテナ化されたアプリケーションを管理するために使用されるオープンソースです。Kubernetesの目標は、コンテナ化されたアプリケーションの展開をシンプルかつ効率的にすることです。Kubernetesは、アプリケーションの展開、計画、更新、および保守を提供します。のメカニズム
Kubernetesのコア機能は、コンテナを個別に管理して、クラウドプラットフォーム内のコンテナがユーザーの期待される状態に従って実行されていることを確認する機能です(たとえば、ユーザーがapacheを実行し続けたい場合、ユーザーはその方法を気にする必要はありません。Kubernetesは自動的に監視してから、再起動して、新しく作成します。つまり、apacheに常にサービスを提供させます)、管理者はマイクロサービスをロードし、プランナーに適切な場所を見つけさせることができます。同時に、Kubernetesはシステムアップグレードツールと人間的な側面も備えているため、ユーザーは独自のツールを簡単に展開できます。アプリケーション(カナリア展開と同様)
Kubernetesは、Dockerだけでなく、別のコンテナテクノロジであるRocketもサポートします。
コアコンポーネント
下
公式ウェブサイトの説明:https://kubernetes.io/docs/concepts/workloads/pods/pod/。
ポッド(クジラやエンドウ豆のポッドのポッドなど)は、共有ストレージ/ネットワークとコンテナーの実行方法の仕様を備えた1つ以上のコンテナー(Dockerコンテナーなど)のグループです。
Kubenetesでは、すべてのコンテナがポッドで実行され、ポッドは1つ以上の関連コンテナを運ぶことができます。ポッドは、Kubenetes操作の最小単位でもあります。
同じポッド内のコンテナは同じ物理マシンにデプロイされ、リソースを共有できます。ポッドには、O個以上のディスクボリュームグループ(ボリューム)を含めることもできます。これらのボリュームグループは、ディレクトリの形式でコンテナに提供されるか、ポッド内のすべてのコンテナによって共有されます。ユーザーが作成したポッドごとに、システムは十分な容量の正常なマシンを自動的に選択し、コンテナのようなコンテナを作成します。
ReplicaSet
公式ウェブサイトの説明:https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/。
ReplicaSetは、取得できるポッドを識別する方法を指定するセレクター、維持するポッドの数を示すレプリカの数、数を満たすために作成する新しいポッドのデータを指定するポッドテンプレートなどのフィールドで定義されます。レプリカの基準。
ReplicaSetには、取得できるポッドを識別する方法を指定するセレクターが含まれていると同時に、予想されるポッドの数を宣言します。次に、ポッドテンプレートは、その数を満たすために作成する必要がある新しいポッドのデータを指定します。
展開
公式ウェブサイトの説明:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/。
デプロイメントコントローラーは、ポッドとポッドの宣言型更新を提供します。
デプロイメントで目的の状態を記述し、デプロイメントコントローラーが実際の状態を制御された速度で目的の状態に変更します。デプロイメントを定義して、新しいReplicaSetを作成するか、既存のデプロイメントを削除して、すべてのリソースを新しいデプロイメントに採用することができます。
展開は、ポッドとポッドを維持および監視する機能を提供します
ラベル
公式ウェブサイトの説明:https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/。
ラベルは、ポッドなどのオブジェクトに添付されるキーと値のペアです。
ラベルはポッドを説明するために使用されるキーと値のペアであり、セレクターを使用して特定のラベルを持つポッドを選択できます
サービス
公式ウェブサイトの説明:https://kubernetes.io/docs/concepts/services-networking/service/。
一連のポッドで実行されているアプリケーションをネットワークサービスとして公開する抽象的な方法。Kubernetesを使用すると、なじみのないサービス検出メカニズムを使用するためにアプリケーションを変更する必要はありません。Kubernetesは、ポッドに独自のIPアドレスと一連のポッドの単一のDNS名を与え、ポッド間で負荷分散を行うことができます。
サービスは、同じラベルのポッドグループの抽象化レイヤーを記述するために使用されます。サービスはローカルクラスターのDNSエントリを作成します。したがって、フロントエンドポッドはDNSを介してホスト名「backend-service」を検索するだけで、フロントエンドアプリケーションで使用可能なIPアドレスを解決できます。 。具体的な状況については、後で詳しく説明します。
ノード
公式ウェブサイトの説明:https://kubernetes.io/docs/concepts/architecture/nodes/。
ノードは、以前はミニオンと呼ばれていたKubernetesのワーカーマシンです。ノードは、クラスターに応じて、VMまたは物理マシンの場合があります。各ノードには、ポッドの実行に必要なサービスが含まれており、マスターコンポーネントによって管理されます
ポッドを実行している物理ホストはノードと呼ばれます
Kubernetesのコアコンポーネントは次のとおりです。
建築
Kubernetesのコアコンポーネントを理解した後、次に説明する必要があるのは、クラスターでは、クラスター全体を機能させるために、いくつかの作業を完了するために常にいくつかのコンポーネントが必要であるということです。
- kubectl:クラスターを操作するクライアント、つまりクラスターを処理するクライアント
- APIServer:リソース操作の唯一のエントリを提供し、認証、承認、アクセス制御、API登録および検出のメカニズムを提供します
- スケジューラ:リソースのスケジューリングを担当し、所定のスケジューリング戦略に従って対応するマシンにポッドをスケジュールします
- Controller Manager:障害検出、自動拡張、ローリング更新など、クラスターの状態を維持する責任があります。
- Kubelet:コンテナのライフサイクルを維持するだけでなく、ボリューム(CVI)とネットワーク(CNI)の管理も担当します。
- Kube-proxy:サービスのクラスター内でサービスの検出と負荷分散を提供する責任があります。
- DNS:DNSサービスを提供します
- ダッシュボード:GUIを提供する
- ETCD:クラスター全体の状態を保存します
Kubernetesの全体的なアーキテクチャを次の図に示します。