Kubernetes とは

Kubernetes は、コンテナーをデプロイ、管理、スケーリングするためのオープンソースのオーケストレーション ソフトウェアです

Kubernetes の説明

最新のアプリケーションは、コンテナー (依存関係と構成がパッケージ化されたマイクロサービス) を使用して構築されることが増えています。Kubernetes (略して k8s) は、これらのコンテナーを大規模にデプロイして管理するためのオープンソース ソフトウェアです。Kubernetes を使用すると、コンテナー化されたアプリをより迅速に構築、配信、スケーリングできます。

こちらの簡単なラーニング パスで Kubernetes の詳細を学ぶ

Kubernetes のしくみ

アプリケーションが、複数のサーバーにデプロイされた複数のコンテナーにまたがるようになるにつれて、アプリケーションの運用が複雑化します。この複雑さを管理するために、Kubernetes は、コンテナーを実行する方法と場所を制御するオープンソース API を提供します。

Kubernetes を使用すると、仮想マシンのクラスターを調整し、利用可能なコンピューティング リソースと各コンテナーのリソース要件に基づいて、それらの仮想マシンで実行するコンテナーをスケジュールすることができます。コンテナーは、Kubernetes の基本的な操作ユニットであるポッドにグループ化されます。ポッドは、必要な状態に応じてスケーリングできます。

Kubernetes は、サービス検出の管理、負荷分散の組み込み、リソース割り当ての追跡、コンピューティング使用率に基づくスケーリング、個々のリソースの正常性のチェック、コンテナーの自動的な再起動またはレプリケーションによるアプリの自己修復の実現を支援します。

Kubernetes の基本に関するビデオを見る

Kubernetes を使用する理由

移植性、スケーラビリティ、拡張性を兼ね備えた方法でコンテナー ベースの環境を実装できます。

移動が簡単

コンテナー化されたワークロードを、ローカルの開発用コンピューターから運用環境にシームレスに移行します。オンプレミスのインフラストラクチャとパブリックおよびハイブリッド クラウドのさまざまな環境で、コンテナーを一貫性のある方法で調整します。

拡張性

Kubernetes により、望ましい状態に基づいてリソースが最適化されるため、コンテナー化された複雑なアプリケーションを定義し、それらをサーバーのクラスターにグローバルにデプロイできます。複数のクラスターにデプロイすることも可能です。Kubernetes はアプリケーションを水平方向にスケーリングするときに、コンテナーの正常性を自動的に監視して維持します。

拡張性

Kubernetes コミュニティを形成している開発者や企業が作成した拡張機能やプラグインの拡大し続ける幅広いコレクションを利用できます。Kubernetes 準拠のサービスを利用することで、コミュニティによるこれらのオファリングを最大限に活用し、セキュリティ、監視、管理などの機能を追加できます。

Beyond Kubernetes

コンテナー化されたアプリケーションを最大限に活用するには、エンドツーエンドの開発、運用、セキュリティ制御を備えた Kubernetes プラットフォームを構築する必要があります。セキュリティや信頼性を損なうことなく、更新プログラムを迅速にデプロイし、インフラストラクチャ管理の時間を節約できます。そのため、Kubernetes を採用するときは、次の実装を検討してください。

Kubernetes と DevOps を使用して俊敏性を大規模に実現

コンテナー、環境、それらを使用するチームが増えるにつれて、開発と運用の複雑さと共に、リリースの頻度が増える可能性があります。Kubernetes 環境で DevOps を採用することで、セキュリティを強化しながらすばやく大規模に移行できます。

継続的インテグレーションと継続的デプロイ (CI/CD) によってコードを迅速に提供する

コンテナーにより、開発チームと運用チーム間のコラボレーションを容易にする一貫したアプリケーション パッケージ形式が提供されます。CI/CD では、それらのタスクを自動化することで、コードからコンテナー、さらに Kubernetes クラスターへの移行を数分で実行できます。

Kubernetes の CI/CD を設定する

コードとしてのインフラストラクチャを使用してリソースを効果的に管理する

コードとしてのインフラストラクチャにより、チーム間でコンピューティング リソースの一貫性と可視性が高まり、人的エラーの可能性が低減されます。この方法は、Helm によって強化された Kubernetes アプリケーションの宣言型の性質と密接に関連しています。この 2 つを組み合わせることで、追跡可能で繰り返し可能な信頼性のある方法で、アプリ、リソース、構成を定義できます。

Terraform を使用して Kubernetes クラスターをデプロイする

常時監視によってフィードバック ループを加速する

不変コンテナー、頻繁なリリース、抽象化されたオーケストレーション レイヤーにより、観測がさらに困難になり、可観測性がさらに重要になります。バグの検出から修正までの時間を短縮するには、コンテナーの正常性監視からログの一元化まで、リソース、クラスター、Kubernetes API、コンテナー、コードの全体像を把握する必要があります。この把握によって、リソースのボトルネックを防ぎ、悪意のある要求をトレースし、Kubernetes アプリケーションの正常性を維持できるようになります。

コンテナーのリアルタイムの分析情報のしくみを確認する

DevOps を使用してスピードとセキュリティのバランスを取る

DevOps ワークフローの一部として、組み込みのリアルタイムの可観測性を利用します。コンプライアンス チェックと再構成を自動的に適用して、ビルドとリリースのパイプラインをセキュリティで保護することで、Kubernetes アプリケーションを保護します。

継続的なセキュリティの実例を見る

Kubernetes での DevOps ワークフローの例

  1. 1同じ Kubernetes クラスターで、アプリケーションのさまざまな部分の反復処理、テスト、デバッグを同時にすばやく行います。
  2. 2継続的インテグレーションのために、コードをマージして GitHub リポジトリにチェックインします。次に、継続的デリバリーの一環として、自動化されたビルドとテストを実行します。
  3. 3コンテナー イメージのソースと整合性を確認します。イメージはスキャンに合格するまで検疫に保持されます。
  4. 4Terraform などのツールを使用して、Kubernetes クラスターをプロビジョニングします。Terraform によってインストールされた Helm チャートにより、アプリのリソースと構成の望ましい状態が定義されます。
  5. 5Kubernetes クラスターへのデプロイを制御するポリシーを適用します。
  6. 6リリース パイプラインにより、事前定義されたデプロイ戦略が各コードで自動的に実行されます。
  7. 7CI/CD パイプラインにポリシー監査と自動修復を追加します。たとえば、リリース パイプラインだけが、Kubernetes 環境で新しいポッドを作成するためのアクセス許可を持ちます。
  8. 8アプリのテレメトリ、コンテナーの正常性監視、リアルタイムのログ分析を有効にします。
  9. 9分析情報を使用して問題に対処し、次回のスプリントの計画を通知します。

Azure で Kubernetes の長所を活用

フル マネージドの Microsoft Azure Kubernetes Service (AKS).を使用して、プロビジョニング、アップグレード、監視、スケーリングを自動化しましょう。サーバーレス Kubernetes、開発から運用までのよりシンプルなエクスペリエンス、エンタープライズ レベルのセキュリティとガバナンスを利用できます。

AKS の詳細を確認する

Kubernetes のソースはコミュニティ

Kubernetes は、数千人の個人と数百社の企業がプロジェクトに注いできた英知、コード、努力の結晶として生まれ、発展しています。情熱のこもった継続的な貢献を活用して、ソフトウェアを成功に導きましょう。

35,000
共同作成者
180,000
コミット
トップ プロジェクト
GitHub で提供

企業向け仕様のオープンソース ソフトウェア

Kubernetes を企業が採用しやすく、開発者が使用しやすいものにするため、Microsoft は、このオープンソース プロジェクトに参加する従業員数をわずか 3 年で 3 倍に増員しました。Microsoft は、第 3 位の貢献企業として、さまざまなお客様との協力関係から得られた最新の知見とベスト プラクティスを Kubernetes コミュニティに還元することにより、Kubernetes を企業にとってより利用しやすいものにすることに取り組んでいます。

FAQ - Kubernetes

  • Kubernetes と Docker は連携しています。

    Docker は、コンテナー化されたアプリケーションをパッケージ化して配布するためのオープン スタンダードです。Docker を使用することで、コンテナーをビルドして実行し、コンテナー イメージを保存して共有できます。

    Kubernetes では、Docker によって作成された、コンテナー化された分散アプリケーションを調整および管理します。また、これらのアプリケーションをマシンのクラスターにデプロイして実行するために必要なインフラストラクチャも提供されます。

    Kubernetes と Docker の詳細
  • Kubernetes のデプロイにより、アプリケーションのデプロイの望ましい状態を示すことができます。Kubernetes スケジューラにより、実際の状態が望ましい状態と一致していることが確認され、1 つ以上のポッドがクラッシュした場合でもその状態が維持されます。Kubernetes のデプロイにより、一貫性のある方法でアプリケーションをダウンタイムなしでアップグレードすることもできます。

    このトピックの詳細を確認する
  • DevOps を使用した Kubernetes へのデプロイには、通常、バージョン管理用のリポジトリ (Git など) が含まれます。このリポジトリは、CI/CD ラインの始まりとして機能します。使用する方法に応じて、リポジトリ内での変更により、統合、ビルド、配信、デプロイの各アクティビティがトリガーされます。

    AKS と Azure DevOps の連携の詳細を確認する
  • Kubernetes は、アプリケーションのクラウドへの移行から、機械学習や AI における課題の単純化まで、さまざまなシナリオで役立ちます。

    主なユース ケースは次のとおりです。

  • Azure を使用する何千人もの技術者やパートナーによって作成されたベスト プラクティスアーキテクチャ パターンをご覧ください。

  • こちらの厳選されたラーニング パスに従って、Kubernetes の学習を開始できます。

リソース

準備ができたら、Azure で Kubernetes を無料で試しましょう