
コンテナ化とは
コンテナ化の概要と、ビジネスにとってのメリットを紹介します。
Kubernetes(別名「K8s」)は、オープンソースのコンテナオーケストレーションプラットフォームです。ホストのクラスタ上で実行される移植性の高いコンテナベースのアプリケーションを管理することができます。Kubernetesを使用すると、クラウドネイティブアプリケーションをどこにでもデプロイすることができ、それがどこにあっても好きな方法で管理できます。
Kubernetesという名前は、「操舵手」または「水先案内人」を表すギリシャ語に由来します。通称の「K8s」は、頭文字のK、中間の文字数である8、末尾のsをとったものです。
コンテナ化により、アプリケーションは小さな単位(多くの場合、マイクロサービス)に分けられ、どのような環境でもアプリケーションを確実に実行できるよう、必要なすべての要素とともにパッケージ化されます。組織では、オンプレミスやマルチクラウドといった様々な環境にこうした移植性の高いコンテナを大量にデプロイすることが多くなっています。コンテナは開発環境と本番環境に移植することができ、サービスの需要が増えた場合、ITチームがすばやく簡単に拡張することが可能です。
Kubernetesは、こうしたコンテナを追跡、スケジュール、管理するためのオーケストレーションソリューションです。Kubernetesは、各コンテナが所定の場所にあることを確認したり、他のコンテナとうまく連携できるようにしたりすることで、サービスをスムーズかつ設計どおりに実行できるようにします。また、長期間実行されるサービスの実行を継続しつつ、ビルドなどの短期間で集中的に実行される作業とのバランスを保つことを可能にします。
Kubernetesは、フレームワーク、プラットフォーム、コンテナ管理ツール、コンテナオーケストレーションシステムといった様々な言葉で説明されます。そして、そのすべてが正解です。Kubernetesを管理する非営利団体であるCloud Native Computing Foundation(CNCF)は、「コンテナベースのクラスタ環境でデプロイを自動化し、アプリケーションの管理を行うことができるオープンソースのフレームワーク」としています。
コンテナ管理用プラットフォームはほかにもありますが、Kubernetesには大規模で今も拡大中のツール、サービス、サポートのエコシステムがあり、コンテナシステムの管理とオーケストレーションを行うフレームワークとして最も幅広く利用されています。
複数のサービスや環境に多数のコンテナがあり複雑化している場合、これらを管理したり自動化したりする必要があります。Kubernetesは、オープンソースのAPIによってコンテナを実行する場所と方法を管理します。さらに、リソースの自動化とプロビジョニングタスクも請け負ってくれるため、拡張プロセスが簡単になります。
KubernetesはOS上で実行されます。Linuxで最も多く利用されていますが、Windowsやその他のOSでも利用できます。Kubernetesをデプロイするとクラスタが作成されます。最もベーシックなレベルでは、ここに含まれるのはワーカーマシン(ノード)とマネージャ(コントロールプレーン)のみです。このクラスタは、物理マシン上、仮想マシン上、または物理マシン上と仮想マシン上の両方に存在することができ、共有ネットワークを介して互いに通信します。このクラスタ内にKubernetesのすべてのコンポーネントと機能が入っています。
Kubernetesは利用可能なコンピューティングリソースや各コンテナの要件に基づいてこれらのクラスタを管理し、最も効率よくコンテナを実行できるようにスケジューリングを行います。こうしたクラスタや、クラスタが必要とするストレージを管理することを「オーケストレーション」といいます。
ここで、Kubernetesのレイヤーを理解するために役立つ基本的な用語を紹介しましょう。
コンテナベースのアプリケーションに含まれるマイクロサービスを管理する必要性が増えてくると、組織はKubernetesを導入するようになります。開発組織は、コンテナのデプロイ、拡張、管理を自動化し、必要な運用リソースを減らすためにKubernetesを活用しています。Kubernetesは、アプリケーションを機能ユニットにグループ化することで管理やディスカバリを簡素化します。また、オープンソースAPIを使用してコンテナの実行方法や実行場所を管理します。
Kubernetes導入のメリットは以下のとおりです。
Kubernetesは、Googleで15年以上も前に開発され、毎週数十億ものコンテナを作成していた「Borg」と呼ばれる社内クラスタ管理システムから生まれました。2014年にKubernetesを公開したGoogleは、これが技術シーズであると考え、2015年にLinux Foundationに寄付しました。これを受け、Linux FoundationはKubernetesを管理する非営利技術コンソーシアムとしてCNCFを創設しました。2018年、GoogleはKubernetesの運用権をコミュニティに正式に譲渡しました。Linux Foundationによると、Kubernetesはオープンソースソフトウェア史上最も成長の早いプロジェクトのひとつだそうです。
Kubernetes環境のサポートを強化するため、CNCFはCertified Kubernetes Administrator(CKA)資格認定やCertified Kubernetes Application Developer(CKAD)認定を行っています。また、Certified Kubernetes Conformance Program(KCSP)ではベンダーの製品やサービスの認定を行っています。このプログラムを活用することで、ベンダーは自社の製品やサービスが所定のKubernetes APIに適合し、他のKubernetes実装で動作することを証明できます。
大規模アプリケーションの高速開発とデプロイの競争が続く中、Kubernetesは開発チームの必須ツールになっています。Kubernetesの使用と管理の詳細については、このトピックに関するテックトークをご覧ください。