組織内でのコンテナの普及に伴い、コンテナ中心の管理ソフトウェアである Kubernetes は、コンテナ化アプリケーションのデプロイと運用における標準になっています。Google Cloud は Kubernetes が生まれた場所です。元々 Google で開発され、2014 年にオープンソースとしてリリースされました。Kubernetes は、15 年間にわたって Google のコンテナ化されたワークロードを実行してきた経験と、オープンソース コミュニティによる価値ある貢献のもと、構築されています。Google の内部クラスタ管理システムである Borg にインスパイアされた Kubernetes を利用すると、アプリケーションのデプロイと管理に関連するすべてが容易になります。自動化されたコンテナのオーケストレーションを提供することで、Kubernetes は信頼性を向上させ、日々の運用作業にかかる時間とリソースを削減します。
Kubernetes(「K」と「s」の間にある 8 文字と合わせて「K8s」と短縮されることもあります)は、コンテナ化されたアプリケーションをどこでもデプロイ、スケール、管理できるオープンソース システムです。
Kubernetes はコンテナ管理の運用タスクを自動化し、アプリケーションのデプロイ、アプリケーションへの変更の展開、変化するニーズに合わせたアプリケーションのスケールアップやスケールダウン、アプリケーションのモニタリングなどの組み込みコマンドが含まれているため、アプリケーションの管理が容易になります。
アプリケーションが複数のコンテナやサーバーにわたってスケーリングされるため、Kubernetes では管理が簡素化されます。オープンソース API を使用してデプロイをオーケストレートし、コンテナを Pod にグループ化して需要とリソースの可用性に基づいてスケーリングします。また、Kubernetes は、サービス ディスカバリ、ロード バランシング、リソース割り当てを自動化し、コンテナの再起動やレプリケーションによる自己修復を可能にするために健全性をモニタリングします。
企業デベロッパー向けに、Kubernetes の仕組みを段階的に説明します。
自動化された運用
Kubernetes にはアプリケーション管理に関係する多くの手間のかかる作業を処理するためのコマンドが組み込まれており、日々の運用作業を自動化できます。アプリケーションの実行がどんなときでも確実に意図したとおりに行われるようにすることができます。
インフラストラクチャの抽象化
Kubernetes をインストールすると、自分のワークロードに代わってコンピューティング、ネットワーキング、ストレージを処理します。これにより、デベロッパーはアプリケーションに集中することができ、基盤となる環境を気にする必要がありません。
サービス正常性のモニタリング
Kubernetes は、サービスに対して継続的にヘルスチェックを実行し、障害のあるコンテナまたは停滞しているコンテナを再起動します。コンテナが実行されていることが確認できた場合のみ、ユーザーにサービスを提供します。
リソース使用率の最適化
Kubernetes は、コンテナの要件に基づいてコンテナをノード上に効率的に配置することで、リソース使用率を最適化します。これにより、リソースの無駄を減らし、インフラストラクチャの費用を削減できます。
アプリケーション管理の簡素化
Kubernetes でアプリケーション管理を合理化します。Kubernetes により、複雑さの異なるアプリケーションを一貫した方法でデプロイ、更新、管理できます。
ポータビリティの強化
Kubernetes は、オンプレミスのデータセンターからパブリック クラウドまで、さまざまな環境で一貫して実行されるオープンソース プラットフォームであり、企業に柔軟性とポータビリティを提供します。
Kubernetes と Docker は、どちらか一方だけを選択するものと誤解されることが多いですが、コンテナ化されたアプリケーションを実行するための、異なりながらもお互いに補い合うテクノロジーです。
Docker を使用することで、アプリケーションを実行するために必要なすべてのものを、必要なときに必要な場所に保存して開くことができるボックスに入れておくことができます。アプリケーションをボックスに入れ始めると、それらを管理する方法が必要になります。それが Kubernetes の役割です。
Kubernetes はギリシャ語で、「船長」を意味します。船長が海上で船を安全に航行する責任があるように、Kubernetes はこれらのボックスを使用できる場所に安全に運んで届ける責任があります。
Kubernetes は、どこでも簡単に管理してデプロイできるアプリケーションを作成するのに使用されます。マネージド サービスとして利用できる場合、Kubernetes は必要に応じて幅広いソリューションを提供します。一般的なユースケースを次に示します。
Kubernetes は、クラウドネイティブのマイクロサービス ベースのアプリを構築するのに役立ちます。また、既存アプリのコンテナ化もサポートしており、アプリケーションのモダナイゼーションの基盤となり、アプリをすばやく開発できます。
Kubernetes はどこでも使用できるように構築されており、オンサイト デプロイとパブリック クラウド、そしてその間のハイブリッド デプロイにまたがるアプリケーションの実行が可能になります。そのため、必要な場所でアプリケーションを実行できます。
Kubernetes は、サービスを実行するために必要なクラスタのサイズを自動的に調整できます。これにより、需要に応じてアプリケーションを自動的にスケールアップまたはスケールダウンし、効率的に運用できます。
Kubernetes に関するよくある質問を確認する
Kubernetes クラスタは、Kubernetes によってオーケストレートされたコンテナ化されたアプリケーションを実行するノード(仮想マシンまたは物理マシン)で構成されます。
Kubernetes Pod は、デプロイ可能な最小単位であり、1 つ以上のコンテナを格納し、単一の実行プロセス インスタンスを表します。
Kubernetes Deployment は、レプリカの管理とスムーズな更新によって、アプリケーションの望ましい状態を確保します。
Kubernetes Service は、アプリケーションに固定の IP アドレスと DNS 名を提供して、他のアプリケーションがアクセスできるようにする Kubernetes オブジェクトです。
アプリケーションをスケーリングするには、デプロイ構成のレプリカ数を更新します。Kubernetes は、目的のスケールに合わせて Pod を自動的に作成または削除します。