Kubernetesは、Googleによって開発され、2014年6月に一般公開されたオープンソースのコンテナ管理システムです。Linuxコンテナの開発者が複雑な分散システムのデプロイや管理を簡単にできるようにと開発されました。クラスタで実行されるアプリケーションの作成経験を持つGoogleエンジニアによって設計されました。
Kubernetes(K8)は、内部使用のみのBorgとOmegaに続き、Googleが開発した3番目のコンテナクラスタマネージャーです。Omegaと同様に、K8sはコアスケジューリングアーキテクチャとそのコアの共有永続ストアを改善しています。Omegaとは異なり、ストアが信頼できるコントロールプレーンコンポーネントに直接公開されず、REST APIを介してアクセスされます。REST操作を処理するKubernetes APIは、他のAPIと似ています。
2015年、Linux FoundationとGoogleは共同でCloud Native Computing Foundation(CNCF)を設立し、Kubernetesがシードテクノロジーとして寄付されました。2017年12月、K8の安定版リリースが開始されました。
Kubernetesを使用すると、企業はソフトウェアアプリケーションを実行するときに、より多くのコンピューティングパワーを利用できます。プライベート環境、クラウド環境、ハイブリッド環境にある数十万以上マシンのクラスタ上のアプリケーションコンテナの展開、スケジューリング、運用を自動化します。また、開発者は、Kubernetesにデプロイされたコンテナイメージを使用してコンテナ中心の環境を作成したり、継続的インテグレーション(CI)システムと統合したりできます。
プラットフォームとして、K8は他のテクノロジーと組み合わせて機能を追加でき、サポートされるアプリケーションやサービスの種類を制限しません。一部のコンテナベースのサービスとしてのプラットフォーム(PaaS)システムは、Kubernetes上で実行されます。プラットフォームとしてのK8はこれらのPaaSシステムとは異なり、包括的なものではなく、ミドルウェアの提供、ソースコードのデプロイ、アプリケーションのビルド、クリックしてデプロイするマーケットプレイスを備えていません。
Kubernetesとコンテナサービスを使用すると、互換性に関係なく、あるコンピューティング環境から別のコンピューティング環境に移動したときにソフトウェアを確実に実行できます。アプリケーション開発者とIT管理者は、Nodeと呼ばれるサーバのクラスタにまたがる共通の共有オペレーティングシステムで複数のアプリケーションコンテナを実行できます。
アプリケーションコンテナは互いに分離されていますが、OSカーネルを共有し、ホスト(オペレーティングシステムの共有部分)は読み取り専用です。このように、アプリケーションのすべてのコンポーネントは、基盤となるホストインフラから分離されているため、さまざまなクラウドやOS環境でのデプロイとスケーリングが容易になります。
コンテナは、ギガバイトからメガバイトへと軽量化され、仮想マシン(VM)よりも少ないリソースを使用します。コンテナは通常、アプリケーション、その依存関係、ライブラリ、バイナリ、設定ファイルで構成されます。反対に、VMにはランタイム環境と独自のオペレーティングシステムが含まれているため、煩雑で移植性が低くなっています。
Kubernetesオーケストレーションプラットフォームは、 OSレベルでの仮想化です。これは、REST APIを介して呼び出されるOSリソースでアプリケーションを実行するための仮想プラットフォームを提供します。これは、ソフトウェアとそのすべての依存関係を含むポータブルな実行可能イメージを使用したマイクロサービスアーキテクチャの一形態です。
かつては重い、移植性のないアプリケーションが標準でした。現在では、Kubernetesのような自動化されたコンテナシステムを使用すると、プラットフォームに関係なく、さまざまなコンピューティング環境で複数のコンテナをサポートする単一のOS操作でアプリケーションを構築できます。たとえば、Googleは毎週数十億のコンテナを実行しています。
K8を使い始めるときに知っておくと役立つKubernetes固有の用語がいくつかあります。
Kubernetes API :クラスタの状態を保存するRESTfulインターフェイスを備えた柔軟なAPI(直接またはツールを使用してアクセスできる)
Kubectl:コマンドを実行するためのコマンドラインインターフェイス
Kubelet:PodSpecsを使用して、コンテナが仕様通りに正常に動作することを保証するエージェント
Image:コンテナ内で実行されるアプリケーションを構成するファイル
Pod:クラスタで実行されているコンテナのセット
Cluster:コンテナでアプリケーションを実行する複数のワーカーマシン(ノードと呼ばれる)を持つマスター
Node:マスターコンポーネントによって管理される、ポッドを実行するためのサービスを備えたワーカーマシン
Minikube:ローカルコンピューター上のVM内でクラスタノードを実行するツール
Controller:望ましい状態が観測されたクラスタの状態と一致することを保証する制御ループ
DaemonSet:ノードがクラスタに追加されたときに、NodeがPodのコピーを実行することを保証する
そのほかの用語とその定義が記載された用語集は、Kubernetes Standardized Glossaryにあります。
Kubernetesコンテナ管理システムにより、企業は自動化された仮想のマイクロサービスアプリケーションプラットフォームを作成できます。コンテナサービスを使用することにより、複数の種類のサーバホスト、クラウド環境、その他のインフラにまたがる軽量アプリケーションをより効率的にビルド、デプロイ、水平スケーリングできます。
Google Container Engine(GCE)でKubernetesの使用を開始するには、GCEでクラスタを作成するためのステップバイステップガイドをご覧ください。
本記事は米国Sumo Logic社のサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。
0 Comments