Kubernetes とは

「K8s」とも呼ばれる Kubernetes は、ホストのクラスタ上で実行されるコンテナ化されたアプリケーションのオーケストレーションを行うものです。K8s はオンプレミス インフラストラクチャまたはパブリッククラウド プラットフォームを利用するクラウドネイティブ アプリケーションの展開と管理を自動化するシステムです。アプリケーションのワークロードを Kubernetes クラスタ内で分散させ、動的なコンテナ ネットワークのニーズを自動化します。また、実行中のコンテナにストレージとパーシステント ボリュームを割り当て、自動的にスケーリングを実施し、継続的な動作でアプリケーションの望ましい状態を維持することで、レジリエンスを確保します。

モダン アプリケーションの大規模な開発、デプロイ、実行を支援する Kubernetes の詳細をご確認ください。

5 分でわかる Kubernetes

2021 年 Kubernetes の現状

Kubernetes の機能

Kubernetes は、複数のホストで実行されるコンテナのオーケストレーション、K8s クラスタの管理の自動化、インフラストラクチャの有効活用によるリソースの使用率の最大化など、多くの機能を備えています。以下のような重要な機能があります。

  • オートスケーリング。コンテナ化されたアプリケーションとそのリソースを使用状況に応じて自動的にスケールアップまたはスケールダウンします。
  • ライフサイクル管理。次の機能によってデプロイとアップデートを自動化します。
    • 以前のバージョンへのロールバック
    • デプロイの一時停止と続行
  • 宣言型モデル。望ましい状態を宣言するだけで、Kubernetes がバックグラウンドで動作してその状態を維持します。障害が発生した場合も同様に復旧することができます。
  • 耐障害性と自動修復。自動配置、自動再起動、自動レプリケーション、自動スケーリングにより、アプリケーションの自動修復を実現します。
  • パーシステント ストレージ。ストレージの動的なマウントと追加が可能です。
  • ロードバランシング。内部および外部のさまざまなロードバランシング オプションをサポートし、多様なニーズに対応できます。
  • DevSecOps のサポートDevSecOps は、複数のクラウドにわたるコンテナ運用を簡素化および自動化し、コンテナ ライフサイクル全体にセキュリティを組み込んで、安全かつ高品質なソフトウェアを迅速に提供できるようチームを支援する、高度なセキュリティ アプローチです。DevSecOps の手法と Kubernetes を組み合わせることで、開発者の生産性が向上します。

Kubernetes のアーキテクチャとその仕組み

コンテナは、アプリケーションをカプセル化して、可搬性に優れた、デプロイが容易な形式にしたものです。Kubernetes のアーキテクチャは、コンテナ化されたアプリケーションを実行するために設計されています。Kubernetes クラスタは、1 つ以上のコントロール プレーンと 1 つ以上のワーカー ノード(通常は物理サーバまたは仮想サーバ)で構成されています。コントロール プレーンの役割は主に 2 つで、API サーバを通じて Kubernetes API を提供し、クラスタを構成するノードを管理します。コントロール プレーンは、クラスタ管理について決定を下し、クラスタのイベントを検出して対処します。

Kubernetes で管理されるアプリケーションの最小の実行単位は、Kubernetes Pod と呼ばれます。Kubernetes Pod は 1 つ以上のコンテナで構成され、ワーカー ノードで実行されます。

Kubernetes に関するその他の用語

K8s の主なコンポーネントの名前と機能を知っておくことは重要です。コンポーネントには、コントロール プレーンの一部になっているものと、Kubernetes ノード上で実行されるものがあります。

Kubernetes Terminology

コントロール プレーンには、Kubernetes クラスタの通信の制御、ノードの管理、状態の追跡に使用される 4 つの主要コンポーネントがあります

  • kube-apiserver。kube-apiserver はその名のとおり、Kubernetes の API を提供するものです。
  • etcd。Kubernetes クラスタに関連するすべてのデータが保存されるキーバリュー ストアです。
  • kube-scheduler。ノードが割り当てられていない新しい Kubernetes Pod を監視し、リソース、ポリシー、「アフィニティ」の仕様に基づいて、実行用のノードに割り当てます。
  • kube-controller-manager。コントロール プレーンのすべてのコントローラ機能は、単一のバイナリである kube-controller-manager にコンパイルされています。

K8s ノードは、大きく分けて 3 つのコンポーネントで構成されます。

  • kubelet。必要なコンテナを Kubernetes Pod で確実に実行するためのエージェントです。
  • kube-proxy。クラスタ内の各ノードで動作するネットワーク プロキシです。ネットワークのルールを維持し、通信を可能にします。
  • コンテナ ランタイム。コンテナの実行を担当するソフトウェアです。Kubernetes は、Kubernetes CRI(Container Runtime Interface)に準拠したすべてのランタイムをサポートしています。

以下の用語も覚えておいてください。

  • Kubernetes サービスKubernetes サービスは、同じ機能を実行する一連の Kubernetes Pod を論理的に抽象化したものです。Kubernetes サービスには一意のアドレスが割り当てられ、ポッド インスタンスの入れ替わりがあっても同じアドレスが維持されます。
  • コントローラ。コントローラの役割は、Kubernetes クラスタの実際の実行状態をできる限り望ましい状態に近づけることです。
  • オペレーター。Kubernetes オペレーターを使用すると、アプリケーションのドメイン固有のナレッジを、ランブックのようにカプセル化できます。アプリケーション固有のタスクを自動化することで、K8s でのアプリケーションのデプロイと管理がより簡単になります。

Kubernetes のメリット

Kubernetes プラットフォームは、以下のような重要なメリットが得られることから広く利用されています。

  • 可搬性。コンテナは、仮想環境からベアメタルまで、さまざまな種類の環境において可搬性があります。Kubernetes はすべての主要なパブリッククラウドでサポートされているため、K8s でコンテナ化されたアプリケーションはさまざまな環境で実行できます。
  • 統合と拡張性。Kubernetes は、ログ収集、モニタリング、アラート サービスなどの、すでに使用しているソリューションと組み合わせられる拡張性を備えています。Kubernetes コミュニティでは、Kubernetes を補完するさまざまなオープンソース ソリューションが開発されており、充実したエコシステムが急速に拡大しています。
  • 優れたコスト効率。Kubernetes は、リソースの最適化や自動スケーリング機能、ワークロードを最適な場所で実行する柔軟性を備えており、組織は IT コストをコントロールできます。
  • スケーラビリティ。クラウドネイティブ アプリケーションは水平方向に拡大します。Kubernetes では「自動スケーリング」を採用しており、要求に応じて追加のコンテナ インスタンスを起動し、自動的にスケールアウトを行います。
  • API ベース。Kubernetes の基本構造は REST API です。Kubernetes 環境内のすべての要素は、プログラミングによって制御できます。
  • CI/CD の簡素化CI/CD は、アプリケーションの構築、テスト、本番環境へのデプロイを自動化する DevOps の手法です。企業は、Kubernetes と CI/CD を統合し、動的に負荷に適応するスケーラブルな CI/CD パイプラインを構築しています。

コンテナ オーケストレーションとは

コンテナ オーケストレーションとは、コンテナ化されたワークロードやサービスの実行に必要なタスクのほとんどを自動化することです。プロビジョニング、デプロイ、スケーリング、ネットワーキング、ロードバランシングなど、Kubernetes コンテナのライフサイクルに不可欠なタスクが自動化されます。

Kubernetes と Docker

Docker は、コンテナ化されたアプリケーションを作成するために使用されるソフトウェア プラットフォームです。K8s は、Docker などのツールで作成されたコンテナ型のクラウドネイティブ アプリケーションを実行するプロセスを自動化します。多くの場合、企業は Docker と Kubernetes を併用しています。

関連するソリューションおよび製品

Tanzu Kubernetes Grid

エンタープライズ対応の Kubernetes の管理

Tanzu Community Edition

ローカル ワークステーションまたはクラウドで、VMware Tanzu の運用を数分で開始し、無償で利用可能

Tanzu Application Platform

Kubernetes プラットフォームでのアプリケーションの構築、デプロイ、管理