マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Kubernetes


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Kubernetes」とは
「Kubernetes」基本情報
■概要
Kubernetes(クーベルネイテス)とは、クラウドネイティブコンピューティング基盤のためのDockerコンテナ群管理フレームワークです。
■基本説明
Kubernetesは、Dockerコンテナ群に対する「デプロイ」「オーケストレーション」「クラスタ管理」「運用管理」などの各種管理機能を提供し、アプリケーションを構成するコンテナを論理的な単位にグループ化し管理性を向上させます。
「メンテナンス機能」「スケーリング機能」「ノード群スケジューリング機能」「ワークロード動的管理機能」「ユーザー定義状態の共有/管理機能」「ロードバランサー機能」「死活監視機能」などの豊富な機能を備えています。
Kubernetesは「アプリの運用負担を軽減するためのエコシステムのコンポーネントとツールの整備」を目指しており、「可搬性」「拡張性」「自動修復性」などの特徴によりコンテナ管理の自動化を推進できるコンテナオーケストレーションシステムです。
■経緯
・2014年 初版リリース
・2015年 Linux Foundation傘下「Cloud Native Computing Foundation」に移管
Kubernetesは、Google社内で開発/運用されている開発生産ワークロードを15年間実行してきた経験を基に、コミュニティの優れたアイデアやプラクティスやノウハウを結集して開発されたもので、プロダクションレベルに対応できるオープンソースプラットフォームです。
■オフィシャルサイト情報
オフィシャルサイト
→Kubernetes(Production-Grade Container Orchestration – Kubernetes)
ライセンス情報
Kubernetesのライセンスは「Apache License 2.0」です。
詳細について、こちらを参照ください。
→GitHub →kubernetes →LICENSE
動作環境
Kubernetesは「ローカル環境」「Google Cloud」「Amazon Web Services」「Microsoft Azure」「OpenStack」「CloudStack」などの環境に対応します。
ダウンロード
導入事例
→Kubernetes →Kubernetes User Case Studies
「Kubernetes」のDockerコンテナ型仮想化機能
■Dockerとは
Dockerとは、Docker社が提供するオープンソースのコンテナ型仮想化ソフトウェアおよび実行環境です。
独立した実行環境(コンテナおよびその集合)の内部にアプリケーションを構築することで、「環境分離」「高速動作」「Dockerエコシステム」などの特徴を利用して、サービス開発/提供のアジリティを向上できます。
→OSSxCloudNews →オープンソースの仮想化ソフト/Dockerとは
■Docker運用の課題
Dockerには「ネットワークルーティング」「複数コンテナ連携」「複数台サーバ横断的管理」などの機能は提供されていないため、Docker単独での本番環境運用では以下のような問題が発生します。
・複数のDockerホスト管理
・コンテナデプロイ方法定義
・複数コンテナ間連携
・コンテナ死活監視
・コンテナ内データの管理
・外部ネットワークからコンテナへのアクセス経路設定 など
■KubernetesによるDocker型コンテナ運用
Kubernetesはコンテナ型仮想化を本番環境で活用するために必要な機能を提供するコンテナオーケストレーションツールであり、上記の問題点を解決できるさまざまな機能を提供します。
「Kubernetes」の主な特徴
「Kubernetes」の主な特徴
■柔軟性
Kubernetesは、ローカルテスト環境からグローバル開発環境まで、さまざまな複雑なニーズに柔軟に対応できます。
オープンソースソフトウェア連携
Kubernetesは、さまざまなオープンソースソフトウェアと組み合わせることにより、柔軟に機能拡張できます。
多くのデベロッパーが実装した機能を以下のように活用できます。
・リッチな監視機能
・多くのコンテナから出力されるログ分析機能
・機械学習プラットフォーム機能
・分散ストレージ機能 など
クラウドサービス連携
「GoogleCloud」「Amazon Web Services」「Azure」などの主要クラウドベンダーが、Kubernetesクラスタ運用管理マネージドサービスを提供しています。
Kubernetesと各種クラウドサービスを連携することで、要件に応じた最適な環境を構築できます。
■デプロイ性
Kubernetesは、物理サーバや仮想サーバのクラスタ環境で、アプリのコンテナを実行します。
「オンプレミス」「ハイブリッドクラウド」「パブリッククラウド」などの各種インフラストラクチャを自由に活用できます。
■スケーラブル
Kubernetesは、Googleが1週間に何十億ものコンテナを走らせるのと同じ原則で設計されています。
「コマンドやUI」もしくは「CPU/メモリ使用率などの状況」により、アプリケーションを上下に拡大縮小します。
「Kubernetes」のコンテナ管理機能
「Kubernetes」のコンテナ管理機能
Kubernetesは、可用性を犠牲にすることなく、リソース要件やその他の制約に基づいてコンテナを自動的に配置します。
ミッションクリティカルワークロードとベストエフォートワークロードをミックスして、さらに多くのリソースを節約します。
■自動ロールアウトとロールバック
Kubernetesは、アプリケーションの状態を監視しながら、すべてのインスタンスを強制終了することがないように、アプリケーションまたはその構成の変更を徐々に展開します。
何らかの問題が生じた場合には変更をロールバックします。バッチおよびCIワークロードを管理し、必要に応じて失敗したコンテナの置き換えを実行します。
■負荷分散機能
Kubernetesは各コンテナに独自のIPアドレスと単一のDNS名を設定して、負荷バランス調整を行います。
■自動復旧機能
Kubernetesは、ノード停止時にはコンテナを再起動します。
ユーザー定義のヘルスチェックに応答しないコンテナを強制終了し、サービス可能な状態になるまでクライアントに通知しません。
「Kubernetes」のクラスタ管理機能
「Kubernetes」のクラスタ管理機能
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」のその他機能
「Kubernetes」のその他機能
■ストレージオーケストレーション機能
Kubernetesは任意のストレージシステムを自動的にマウントできます。
・ローカルストレージ
・クラウドストレージ(GoogleCloud、AWS)
・NFS
・iSCSI
・Gluster
・Ceph
・Cinder
・Flocker など
■拡張機能
ネットワークプラグイン
Kubernetesはネットワークプラグインを活用することで、ネットワーク機能を強化できます。
・基本実装「Kubenetプラグイン」
・appc/CNI仕様準拠「CNIプラグイン」 など
起動時にプラグインを調べ、見つかったものを記憶し、ポッドライフサイクルの適切な時間に選択したプラグインを実行します。
デバイスプラグイン
Kubernetesはデバイスプラグインフレームワークを提供しています。
カスタムKubernetesコードを記述する代わりに、ベンダーは、手動またはDaemonSetとしてデプロイできるデバイスプラグインを実装できます。
・NVIDIA GPUデバイスプラグイン
・AMD GPUデバイスプラグイン
・RDMAデバイスプラグイン など
参考元サイト
- Kubernetes
- @IT →「Kubernetes」とは何か――コンテナ型仮想化の本番利用に向けた課題
- EnterpriseZine →改めて知る「Kubernetes」とは何か――複数コンテナを扱うならこれ一択、30分で立ち上げられるサービスも
- Qiita →今さら人に聞けない Kubernetes とは?
- Wikipedia →Kubernetes
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク3位🏆
【無料で使える】「 グループウェア 」まとめ - 🏆ランク4位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク5位🏆
【AIツール実験室】画像生成AIツール「 Emi 」(前編) - 🏆ランク6位🏆
【OSS情報アーカイブ】SonarQube - 🏆ランク7位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク8位🏆
【無料で使える】「 バックアップ 」ツールまとめ - 🏆ランク9位🏆
【ツール紹介】無料オープンソース「 ビデオ監視 ツール 」まとめ3選 - 🏆ランク10位🏆
【ChatGPT使ってみる実験室】 WordPress関数を作って記事リストを出力