Kubernetes

Kubernetesは、しばしばK8sと略される、オープンソースのコンテナオーケストレーターです。 Kubernetesは、モダンなインフラストラクチャ上でコンテナ化されたアプリケーションのライフサイクルを自動化し、分散システム全体でアプリケーションを管理するデータセンターのオペレーティングシステムとして機能します。

Kubernetesは、クラスター内のノードにまたがってコンテナをスケジュールし、ロードバランサーや永続ストレージなど、いくつかのインフラストラクチャリソースを束ねてコンテナ化されたアプリケーションを実行します。

Kubernetesは自動化と拡張性を実現し、ユーザーが宣言的に(以下参照)かつ再現可能な方法でアプリケーションをデプロイできるようにします。 KubernetesはAPIを介して拡張可能であり、経験豊富なKubernetesの専門家が自分たちのニーズに応じて拡張することができます。

解決すべき問題はなんですか

インフラストラクチャの自動化と宣言的な設定の管理は長い間重要な概念でしたが、クラウドコンピューティングが人気になるにつれて、その重要性がさらに増していきました。 計算機リソースへの需要が増加し、組織がより少ないエンジニアでより多くの運用機能を提供する必要が生じる中、その需要に応えるためには新しい技術や作業方法が求められています。

どのように役に立つのでしょうか

従来のInfrastracture as Codeツールと同様にKubernetesは自動化を支援しますが、コンテナを用いて動作するという利点があります。 コンテナは仮想マシンや物理マシンよりも設定のずれに対する耐性があります。

さらにKubernetesは宣言的に動作します。 つまり、オペレータがマシンに何かを行う方法を指示するのではなく、インフラストラクチャがどのようにあるべきかを記述します。 これは通常、マニフェストファイル(例えばYAML)として記述されます。 その後、Kubernetesが実行方法の詳細を管理します。 これにより、KubernetesはInfrastracture as Codeと非常に互換性が高くなっています。

またKubernetesはセルフヒーリングを行います。 セルフヒーリングによって、クラスターの実際の状態は、常にオペレータの望む状態と一致します。 Kubernetesがマニフェストファイルで記述された内容と異なる点を検出した場合、Kubernetesコントローラーがそれを修正します。 Kubernetesが使用するインフラストラクチャは絶えず変化しているかもしれませんが、Kubernetesは常に自動的に変化に適応し、望ましい状態と一致するように保証します。