Kubernetes の説明
最新のアプリケーションは、コンテナー (依存関係と構成がパッケージ化されたマイクロサービス) を使用して構築されることが増えています。Kubernetes ("クーバネティス" と発音します) は、大規模なコンテナーをデプロイおよび管理するためのオープンソース ソフトウェアです。また、ギリシャの言葉で船の操舵手やパイロットの意味もあります。Kubernetes ("k8s" または "k-eights" と呼ばれることもあります) を使用して、コンテナー化されたアプリのビルド、配信、拡張を迅速に行うことができます。
Kubernetes のしくみ
アプリケーションが拡大して複数のコンテナーにまたがり、複数のサーバーにデプロイされるようになると、その運用はさらに複雑になります。この複雑さを管理するために、Kubernetes は、コンテナーを実行する方法と場所を制御するオープンソース API を提供します。
Kubernetes は、仮想マシンのクラスターを調整し、利用可能なコンピューティング リソースと各コンテナーのリソース要件に基づいて、それらの仮想マシンで実行するコンテナーをスケジュールします。コンテナーはポッド (Kubernetes の基本的な運用単位) にグループ化されており、これらのポッドは目的の状態に合わせてスケーリングされます。
また Kubernetes では、サービスの検出の管理、負荷分散の実現、リソースの割り当ての追跡、コンピューティングの使用率に基づいたスケーリングが自動的に行われます。また、個々のリソースの正常性の確認や、コンテナーの再起動またはレプリケートを自動的に行うことにより、アプリが自己回復できるようにします。
Kubernetes を使用する理由
コンテナー化されたアプリの稼働状態を維持することは、複雑な作業になる可能性があります。これは多くの場合、多くのコンテナーが異なるコンピューターにデプロイされていることが理由です。Kubernetes を使用すると、これらのコンテナーをスケジュール設定してデプロイすることができ、さらにそれらを目的の状態にスケーリングしたり、ライフサイクルを管理したりすることができます。Kubernetes を使用して、移植性や拡張性に優れ、スケーラブルな方法でコンテナーベースのアプリケーションを実装することができます。
ワークロードの移植性を高める
コンテナー アプリはインフラストラクチャとは切り離されているため、それらを Kubernetes 上で実行することで移植性が高まります。環境間の一貫性を維持しながら、オンプレミス、ハイブリッド、および複数のクラウド環境において、ローカル コンピューターから運用環境に移行することができます。
コンテナーを簡単にスケーリング
Kubernetes を使用すると、複雑なコンテナー化アプリケーションを定義し、それを 1 つのクラスター サーバー、さらには複数のクラスターにデプロイすることができます。Kubernetes は必要な状態に応じてアプリケーションをスケーリングし、コンテナーの正常性を自動的に監視して維持します。
拡張可能なアプリの構築
開発者や企業で構成される大規模なオープンソース コミュニティは、セキュリティ、監視、管理などの機能を追加する拡張機能やプラグインを Kubernetes で積極的に構築しています。さらに、Kubernetes ソフトウェア適合認証プログラムでは、それらのコミュニティのオファリングを簡単に使用できるようにするための API を、すべての Kubernetes バージョンでサポートすることが求められています。
完全な Kubernetes プラットフォーム上に構築
Kubernetes 自体に、移植性、拡張性、拡張性が備わっており、そこにエンドツーエンドの開発、運用、セキュリティ制御を追加することで、セキュリティや信頼性を損なうことなく、より迅速に更新プログラムをデプロイし、インフラストラクチャ管理の時間を減らすことができます。Kubernetes を採用するときは、次のような実装についても検討してください。
-
プロビジョニング、修正プログラムの適用、アップグレードなどのルーチン タスクを排除するためのインフラストラクチャ自動化またはサーバーレス Kubernetes。
-
コンテナー化されたアプリの開発用ツールと、継続的インテグレーションおよび継続的デプロイ (CI/CD) ワークフロー。
-
セキュリティ、ガバナンス、ID、アクセスを管理するサービス。
DevOps プラクティスでの Kubernetes の活用
コンテナー、環境、チームが追加されて Kubernetes アプリが大きくなるにつれ、リリースの頻度が増える傾向になり、また開発や運用も複雑になります。Kubernetes 環境で DevOps プラクティスを採用することで、セキュリティを強化しながら大規模かつ迅速に移行することができます。
CI/CD を使用してコードをより迅速に配信する
コンテナーにより、開発チームと運用チーム間のコラボレーションを容易にする一貫したアプリケーション パッケージ形式が提供されます。CI/CD では、それらのタスクを自動化することで、コードからコンテナー、さらに Kubernetes クラスターへの移行を数分で実行できます。
コードとしてのインフラストラクチャを使用してリソースを効果的に管理する
コードとしてのインフラストラクチャにより、チーム間でコンピューティング リソースの一貫性と可視性が高まり、人的エラーの可能性が低減されます。このプラクティスは、Helm を利用した Kubernetes アプリケーションの宣言的な性質を使用することで機能します。この 2 つを組み合わせることで、追跡可能で繰り返し可能な信頼性のある方法で、アプリ、リソース、構成を定義できます。
常時監視によってフィードバック ループを加速する
コンテナーの正常性監視からログの一元化まで、リソース、クラスター、Kubernetes API、コンテナー、コードの全体像を把握することで、バグの検出から修正までの時間を短縮することができます。これにより、リソースのボトルネックを防ぎ、悪意のある要求をトレースし、Kubernetes アプリケーションの正常性を維持できるようになります。
DevOps を使用してスピードとセキュリティのバランスを取る
速度を犠牲にすることなく、DevOps ワークフローをリアルタイムで観測することができます。コンプライアンス チェックと再構成を自動的に適用して、ビルドとリリースのパイプラインをセキュリティで保護することで、Kubernetes アプリケーションを保護します。
Kubernetes での DevOps ワークフローの例
- 同じ Kubernetes クラスターで、アプリケーションのさまざまな部分の反復処理、テスト、デバッグを同時にすばやく行います。
- 継続的インテグレーションのために、コードをマージして GitHub リポジトリにチェックインします。次に、継続的デリバリーの一環として、自動化されたビルドとテストを実行します。
- コンテナー イメージのソースと整合性を確認します。イメージはスキャンに合格するまで検疫に保持されます。
- Terraform などのツールを使用して、Kubernetes クラスターをプロビジョニングします。Terraform によってインストールされた Helm チャートにより、アプリのリソースと構成の望ましい状態が定義されます。
- Kubernetes クラスターへのデプロイを制御するポリシーを適用します。
- リリース パイプラインにより、事前定義されたデプロイ戦略が各コードで自動的に実行されます。
- CI/CD パイプラインにポリシー監査と自動修復を追加します。たとえば、リリース パイプラインだけが、Kubernetes 環境で新しいポッドを作成するためのアクセス許可を持ちます。
- アプリのテレメトリ、コンテナーの正常性監視、リアルタイムのログ分析を有効にします。
- 分析情報を使用して問題に対処し、次回のスプリントの計画を通知します。
Azure で Kubernetes の長所を活用
フル マネージドの Microsoft Azure Kubernetes Service (AKS) を使用して、プロビジョニング、アップグレード、監視、スケーリングを自動化しましょう。サーバーレス Kubernetes、開発から運用までのよりシンプルなエクスペリエンス、エンタープライズ レベルのセキュリティとガバナンスを利用できます。
Kubernetes コミュニティからのインスピレーションやイノベーションを採用する
Kubernetes は、数千人の個人と数百社の企業がプロジェクトに注いできた英知、コード、努力の結晶として生まれ、発展しています。情熱のこもった継続的な貢献を活用して、ソフトウェアを成功に導きましょう。
35,000
共同作成者
180,000
コミット
トップ プロジェクト
GitHub で提供
Kubernetes に対する Microsoft の貢献
企業で独創的なオープンソースを実現する
Kubernetes を企業が採用しやすく、開発者が使用しやすいものにするため、Microsoft は、このオープンソース プロジェクトに参加する従業員数をわずか 3 年で 3 倍に増員しました。Microsoft は、第 3 位の貢献企業として、さまざまなお客様との協力関係から得られた最新の知見とベスト プラクティスを Kubernetes コミュニティに還元することにより、Kubernetes を企業にとってより利用しやすいものにすることに取り組んでいます。
FAQ - Kubernetes
-
こちらの厳選されたラーニング パス に従って、Kubernetes の学習を開始できます。
-
Kubernetes は、アプリケーションのクラウドへの移行から、機械学習や AI における課題の単純化まで、さまざまなシナリオで役立ちます。
主なユース ケースは次のとおりです。
-
Kubernetes を使用する何千人もの技術者やパートナーによって作成された ベスト プラクティス と アーキテクチャ パターン をご覧ください。
-
Kubernetes のデプロイにより、アプリケーションのデプロイの望ましい状態を示すことができます。Kubernetes スケジューラにより、実際の状態が望ましい状態と一致していることが確認され、1 つ以上のポッドがクラッシュした場合でもその状態が維持されます。Kubernetes のデプロイにより、一貫性のある方法でアプリケーションをダウンタイムなしでアップグレードすることもできます。
-
DevOps を使用した Kubernetes へのデプロイには、通常、バージョン管理用のリポジトリ (Git など) が含まれます。このリポジトリは、CI/CD ラインの始まりとして機能します。使用する方法に応じて、リポジトリ内での変更により、統合、ビルド、配信、デプロイの各アクティビティがトリガーされます。
-
Kubernetes と Docker は連携して動作します。
Docker は、コンテナー化アプリケーションのパッケージと配布のオープン標準です。Docker を使用することで、コンテナーをビルドして実行し、コンテナー イメージを保存して共有できます。
Kubernetes では、Docker によって作成された、コンテナー化された分散アプリケーションを調整および管理します。また、これらのアプリケーションをマシンのクラスターにデプロイして実行するために必要なインフラストラクチャも提供されます。
リソース
Kubernetes についての詳細情報
AKS についての詳細情報
Azure Kubernetes Service (AKS) を詳しく知る
AKS のビデオ とオンデマンドの Azure ウェビナー で、デモ、主要な機能、技術セッションをご覧ください。
Kubernetes のための Azure クイック スタート テンプレートを見る
他の AKS ユーザーと GitHub や KubeCon で、またはお近くの Kubernetes Meetup で交流しましょう。