Kubernetes(クーベルネイテス)とは、クラウドネイティブコンピューティング基盤のためのDockerコンテナ群管理フレームワークです。

オープンソースの運用管理・運用自動化/Kubernetesとは

Kubernetes(クーベルネイテス)とは、クラウドネイティブコンピューティング基盤のためのDockerコンテナ群管理フレームワークです。

目次

「Kubernetes」基本情報
■概要
■基本説明
■動作環境
■経緯

主な特徴
■Dockerコンテナ型仮想化
・Dockerとは
・Docker運用の課題
・KubernetesによるDocker型コンテナ運用
■柔軟性
・オープンソースソフトウェア連携
・クラウドサービス連携
■デプロイ性
■スケーラブル

主な機能
■コンテナ管理機能
・自動ロールアウトとロールバック
■クラスタ管理機能
・マスターコンポーネント
・ノードコンポーネント
・クラスタ状態エンティティ「Kubernetesオブジェクト」
・Kubernetesオブジェクト管理機能「Kubernetes Control Plane」
■デプロイ機能
■負荷分散機能
■ストレージオーケストレーション機能
■自動復旧機能
■拡張機能
・ネットワークプラグイン
・デバイスプラグイン

補足情報
■オフィシャルサイト
・オフィシャルサイト
・ライセンス情報
・ダウンロード
・導入事例

「Kubernetes」基本情報

■概要

Kubernetes(クーベルネイテス)とは、クラウドネイティブコンピューティング基盤のためのDockerコンテナ群管理フレームワークです。

■基本説明

Kubernetesは、Dockerコンテナ群に対する「デプロイ」「オーケストレーション」「クラスタ管理」「運用管理」などの各種管理機能を提供し、アプリケーションを構成するコンテナを論理的な単位にグループ化し管理性を向上させます。

「メンテナンス機能」「スケーリング機能」「ノード群スケジューリング機能」「ワークロード動的管理機能」「ユーザー定義状態の共有/管理機能」「ロードバランサー機能」「死活監視機能」などの豊富な機能を備えています。

Kubernetesは「アプリの運用負担を軽減するためのエコシステムのコンポーネントとツールの整備」を目指しており、「可搬性」「拡張性」「自動修復性」などの特徴によりコンテナ管理の自動化を推進できるコンテナオーケストレーションシステムです。

■動作環境

Kubernetesは「ローカル環境」「Google Cloud」「Amazon Web Services」「Microsoft Azure」「OpenStack」「CloudStack」などの環境に対応します。

■経緯

・2014年 初版リリース
・2015年 Linux Foundation傘下「Cloud Native Computing Foundation」に移管

Kubernetesは、Google社内で開発/運用されている開発生産ワークロードを15年間実行してきた経験を基に、コミュニティの優れたアイデアやプラクティスやノウハウを結集して開発されたもので、プロダクションレベルに対応できるオープンソースプラットフォームです。

主な特徴

■Dockerコンテナ型仮想化

Dockerとは

Dockerとは、Docker社が提供するオープンソースのコンテナ型仮想化ソフトウェアおよび実行環境です。

独立した実行環境(コンテナおよびその集合)の内部にアプリケーションを構築することで、「環境分離」「高速動作」「Dockerエコシステム」などの特徴を利用して、サービス開発/提供のアジリティを向上できます。

→OSSxCloudNews →オープンソースの仮想化ソフト/Dockerとは

Docker運用の課題

Dockerには「ネットワークルーティング」「複数コンテナ連携」「複数台サーバ横断的管理」などの機能は提供されていないため、Docker単独での本番環境運用では以下のような問題が発生します。
・複数のDockerホスト管理
・コンテナデプロイ方法定義
・複数コンテナ間連携
・コンテナ死活監視
・コンテナ内データの管理
・外部ネットワークからコンテナへのアクセス経路設定 など

KubernetesによるDocker型コンテナ運用

Kubernetesはコンテナ型仮想化を本番環境で活用するために必要な機能を提供するコンテナオーケストレーションツールであり、上記の問題点を解決できるさまざまな機能を提供します。

■柔軟性

Kubernetesは、ローカルテスト環境からグローバル開発環境まで、さまざまな複雑なニーズに柔軟に対応できます。

オープンソースソフトウェア連携

Kubernetesは、さまざまなオープンソースソフトウェアと組み合わせることにより、柔軟に機能拡張できます。

多くのデベロッパーが実装した機能を以下のように活用できます。
・リッチな監視機能
・多くのコンテナから出力されるログ分析機能
・機械学習プラットフォーム機能
・分散ストレージ機能 など

クラウドサービス連携

「GoogleCloud」「Amazon Web Services」「Azure」などの主要クラウドベンダーが、Kubernetesクラスタ運用管理マネージドサービスを提供しています。

Kubernetesと各種クラウドサービスを連携することで、要件に応じた最適な環境を構築できます。

■デプロイ性

Kubernetesは、物理サーバや仮想サーバのクラスタ環境で、アプリのコンテナを実行します。

「オンプレミス」「ハイブリッドクラウド」「パブリッククラウド」などの各種インフラストラクチャを自由に活用できます。

■スケーラブル

Kubernetesは、Googleが1週間に何十億ものコンテナを走らせるのと同じ原則で設計されており、「コマンドやUI」もしくは「CPU/メモリ使用率などの状況」により、アプリケーションを上下に拡大縮小します。

主な機能

■コンテナ管理機能

Kubernetesは、可用性を犠牲にすることなく、リソース要件やその他の制約に基づいてコンテナを自動的に配置します。

ミッションクリティカルワークロードとベストエフォートワークロードをミックスして、さらに多くのリソースを節約します。

自動ロールアウトとロールバック

Kubernetesは、アプリケーションの状態を監視しながら、すべてのインスタンスを強制終了することがないように、アプリケーションまたはその構成の変更を徐々に展開します。

何らかの問題が生じた場合には変更をロールバックします。バッチおよびCIワークロードを管理し、必要に応じて失敗したコンテナの置き換えを実行します。

■クラスタ管理機能

Kubernetesは、単一ユニットとして動作するように接続されている可用性の高いコンピュータクラスタを調整します。Kubernetesの抽象化によって、コンテナ化されたアプリケーションを個々のマシンに具体的に結びつけることなくクラスタに展開できます。Kubernetesは、クラスタ全体のアプリケーションコンテナの配布とスケジューリングをより効率的に自動化します。

Kubernetesクラスタは、「マスターコンポーネント」と「ノードコンポーネント」の2種類のリソースで構成されています。

マスターコンポーネント

マスターコンポーネントはクラスタ管理を担当します。マスターコンポーネントは、可用性と冗長性のために複製できます。

マスターコンポーネントはクラスタ制御を受け持ち、クラスタ内のすべてのアクティビティーを調整します。
・アプリケーションのスケジューリング
・イベントの検知およびリアクション
・アプリケーションの望ましい状態の維持
・新しい更新の展開 など

ノードコンポーネント

ノードコンポーネントは、Kubernetesクラスタ内で機能する仮想マシンまたは物理コンピュータです。

アプリケーション(クラウドワークフロー)を実行するワーカーとして機能します。

クラスタ状態エンティティ「Kubernetesオブジェクト」

Kubernetesオブジェクトは、Kubernetesシステムにおいてクラスタ状態を表わすための永続的エンティティです。

Kubernetesの基本的なオブジェクト
・ポッド
・サービス
・ボリューム
・名前空間 など

主なクラスタ状態
・どのノードでどのようなコンテナ化アプリケーションが実行されているか
・各アプリケーションが利用できるリソース
・アプリケーション動作ポリシー(再起動、アップグレード、フォールトトレランス)  など

Kubernetesオブジェクト管理機能「Kubernetes Control Plane」

Kubernetes Control Planeは、システム内のすべてのKubernetesオブジェクトの記録を保持し、それらのオブジェクトの状態を管理します。

Kubernetes Control Planeの制御ループはクラスタ内の変更に応答し、システム内のすべてのオブジェクトの実際の状態を、指定した希望の状態と一致させるように動作します。

■デプロイ機能

Kubernetesにアプリケーションをデプロイする場合は、マスターコンポーネントにアプリケーションコンテナを開始するよう指示します。

マスターコンポーネントは、クラスタのノード上で実行するコンテナのスケジュールを設定します。

ノードコンポーネントは、マスターコンポーネントが公開しているKubernetes APIを使用してマスターコンポーネントと通信します。

■負荷分散機能

Kubernetesは各コンテナに独自のIPアドレスと単一のDNS名を設定して、負荷バランス調整を行います。

■ストレージオーケストレーション機能

Kubernetesは任意のストレージシステムを自動的にマウントできます。
・ローカルストレージ
・クラウドストレージ(GoogleCloud、AWS)
・NFS
・iSCSI
・Gluster
・Ceph
・Cinder
・Flocker など

■自動復旧機能

Kubernetesは、ノード停止時にはコンテナを再起動します。

ユーザー定義のヘルスチェックに応答しないコンテナを強制終了し、サービス可能な状態になるまでクライアントに通知しません。

■拡張機能

ネットワークプラグイン

Kubernetesはネットワークプラグインを活用することで、ネットワーク機能を強化できます。
・基本実装「Kubenetプラグイン」
・appc/CNI仕様準拠「CNIプラグイン」 など

起動時にプラグインを調べ、見つかったものを記憶し、ポッドライフサイクルの適切な時間に選択したプラグインを実行します。

→Kubernetes →Concepts →Extending Kubernetes →Compute, Storage, and Networking Extensions →Network Plugins

デバイスプラグイン

Kubernetesはデバイスプラグインフレームワークを提供しています。
カスタムKubernetesコードを記述する代わりに、ベンダーは、手動またはDaemonSetとしてデプロイできるデバイスプラグインを実装できます。
・NVIDIA GPUデバイスプラグイン
・AMD GPUデバイスプラグイン
・RDMAデバイスプラグイン など

→Kubernetes →Concepts →Extending Kubernetes →Compute, Storage, and Networking Extensions →Device Plugins

補足情報

■オフィシャルサイト

オフィシャルサイト

→Kubernetes(Production-Grade Container Orchestration - Kubernetes)

ライセンス情報

Kubernetesのライセンスは「Apache License 2.0」です。

詳細について、こちらを参照ください。
→GitHub →kubernetes →LICENSE

ダウンロード

→Kubernetes →Setup

導入事例

→Kubernetes →Kubernetes User Case Studies

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Kubernetes最新CLOSEUPコラム

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter