画像をタップして拡大する

2019年10月25日

Kubernetes導入:準備と実践に役立つガイドライン

コンテナーの主要なオーケストレーションツールであるKubernetes。導入するにはまず何から始めれば良いのでしょうか。その答えを出すのは、思ったほど簡単ではありません。
コンテナーオーケストレーションと言えば、Kubernetesが、かつてのMicrosoft Windowsのように市場を支配しつつあるようです。しかし、Kubernetesは、すぐに使える万能なコンテナーオーケストレーションツールとは言い難いものです。企業で導入するには、IT担当者は、多くの問題を考える必要があります。ボストンで開催されたRed Hat Summitでは、Red Hat社のJosh Berkus氏 (Kubernetesコミュニティの責任者) とBrian Gracely氏 (製品戦略のOpenShiftディレクター)、Heptio社のCTO、Joe Beda氏 (Kubernetes開発者の1人) という3人のKubernetesトップエキスパートが知見を交換し、今後の期待について語りました。
当然ですが、最初のステップは、メリットを理解することです。Kubernetesの良さを心から認めるには、「なぜ誰もがDockerとコンテナーを熱狂的に支持するのかを、まず理解する必要があります」と、Beda氏は語ります。Dockerとそれに基づく技術があれば、ノートパソコンでサーバープログラムをテストできます。その後、ほとんど変更せずに、実稼働環境に移植して、高い予見性を得られます。
Kubernetesなら、自動化、効率性、ワークフローを向上させることができると、Beda氏は続けます。そうすることで、「ソフトウェアの展開、構築、運用についての考え方が変わります」。

 

努力は報われる

Kubernetesのメリットは、次のように、非常に分かりやすいものです。

  • コンテナーの実行と管理を簡単に行える

  • 新しいアプリケーションを容易に構築できる

  • アプリケーションをハイブリッドクラウドで実行できる

  • ビジネスの運営方法を大きく変えられる


ただし、それらを実現するには、開発者と運用スタッフにもKubernetesの導入に関わってもらう必要があります。また、Kubernetesに移行したら、各チームが、古い環境のときよりも、迅速かつ簡単に展開できるようにしましょう。登壇したエキスパートたちは、そうアドバイスします。
具体的に言うと、「開発者に、パッケージ化を行う」ように依頼するのではありません。「プログラマが、Kubernetesの管理ではなく、これまでどおりプログラミングを行えるようにするのです」。Berkus氏はそのように述べています。
ITスタッフがKubernetesベースの環境を使用し始めたら、「ツールを親しみやすく使い勝手の良いものにし、彼らのワークフローの統合や、チームワークの支援を行います」と、Berkus氏は語ります。Ansible、GitHub、Eclipse Cheなどのツールを、新しいKubernetesベースの構造に統合する。それが、開発者の同意を得る唯一の方法であり、Kubernetesの展開計画の鍵を握る、と同氏は続けました。
成功するための要因の1つは、Linuxが、最新のコンテナーの基礎となっていることを認識することです。特に、リソース管理についてそのことを意識しましょう。Dockerと互換性のあるWindowsコンテナーがあるのは確かですが、一部のWindowsサーバー以外では、あまり使用されません。非常に実用的な用途で、「Linuxは、どのコンテナーにも使用されていますし、Linux OSホストは、すべてのコンテナーにまたがっています」と、Beda氏は指摘します。
つまり、Kubernetesでコンテナーを管理するつもりであれば、システム管理者がLinuxを熟知する必要があり、DevOpsでも、同様の知識が求められると、エキスパートたちは語ります。KubernetesはLinuxベースであり、Linuxそのものではありません。Kubernetesのみでも成り立ちません。

 

すぐに使用できるとは言えない

Kubernetesの導入には、計画が必要です。最初に、自分で環境を作るか、商用のディストリビューションに頼るかを選択します。Linuxには、長い「自作」の伝統があります。しかし、導入に関して言えば、Kubernetesにかなり詳しいユーザーでも、商用のディストリビューションを使用する、とエキスパートたちは語ります。
その理由は、Kubernetesディストリビューションの中身にあります。APIサーバー、デフォルトコントローラー、デフォルトスケジューラ、Kubeletノードエージェント、Kubectlコマンドラインベースクライアントなどを見ると、すぐに実行できるプログラムと言うよりは、ツールや部品のように思えませんか。まったくそのとおりで、Kubernetesは、アプリケーションではなく、スタックの定義と考えるのが最も適切でしょう。
20年前は、Linuxも同様でした。このOSは、コンポーネントとツールの集合であり、使用できるようにするには、専門の技術者に依頼する必要がありました。
Kubernetesを深く理解するために、エキスパートたちがお勧めするのは、Kelsey Hightower氏の「Kubernetes: The Hard Way」です。評判の良いリソースと彼らが認める、このチュートリアルは、自動化されたアプローチでKubernetesクラスターを構築したい人向けではありません。「学習に焦点が置かれ、Kubernetesクラスターのブートストラップに必要なさまざまなタスクをじっくり学び、理解できるようになっています」と、Gracely氏は述べています。
専門の技術者を目指すわけではなく、Kubernetesを構築して稼働させたいだけ、という方には、Kubeadm、Kubespray、Kopsがお勧めです。この3つも、ハンズオンのアプローチを採ります。
Kubeadmでは、(比較的) 簡単に、実行可能な最小のKubernetesクラスターをブートストラップできます。ただし、起動したクラスターは、Kubernetesの学習には便利ですが、実稼働システムの構築にはあまり向かないようです。一方Kubesprayでは、AnsibleのDevOpsプログラムを使用して、小規模の実稼働用Kubernetesクラスターを、普及しているクラウドに構築できます。3つ目のKopsでは、実稼働レベルのKubernetesクラスターの構築と管理を、Amazon Web Servicesで行えます。Kopsは、現在その他のクラウドに移植が進められています。

 

定期的なアップデートが必要

どのアプローチを採っても、かなりのスピードで進むKubernetesの開発に付いていく必要があります。その状況を、Red Hatカンファレンスのエキスパートは、こう表現します。「良い点は、最新版をすぐに入手できること。悪い点も、最新版をすぐに入手できること」。
いいですか。新しいKubernetesは、3か月おきにリリースされます。もう一度言います。「新しいバージョンが3か月ごとにリリースされます」。それに、長期のサポートを受けられるエディションもありません。あるのは、9か月間のパッチサポートのみです。言うまでもなく、アルファ版とベータ版では互換性が失われる場合があります。
これでは、安心できませんね。
迅速なイテレーションは、開発や、Kubernetesの学習には役立つかもしれませんが、運用に配慮したアプローチではないのは明らかです。実稼働環境に最適なのは、ディストリビューションです。会社にとって適切なKubernetes構築ツールを選択することが、非常に重要です。
Red Hat社はもちろん、自社のOpenShiftを推奨しています。それを選ぶのも良い方法ですが、他にも多くの選択肢があります。
まず、クラウド固有のKubernetesディストリビューションに注目しましょう。たとえば、Amazon EKS、Azure Kubernetes Service、Google Kubernetes Engineなどがあります。ただし、これらを選択する場合、Kubernetesをハイブリッドクラウドの基盤として使用することが難しくなる場合があります。
広く利用され、どのクラウドでも使用できるベンダー固有のKubernetesディストリビューションとして、Canonical Distribution of Kubernetes、Docker Kubernetes Serviceを使用するDocker Enterprise 3.0、Mirantis Cloud Platform、Pivotal Container Service、Rancher 2.0、SUSE Container as a Serviceが挙げられます。いずれも、Kubernetesについて、独自の視点や機能を持っています。たとえば、SUSE社のディストリビューションは、どの既存のクラウド固有Kubernetesでも動作します。また、PKSは、VMwareサービスと緊密に連携します。
Kubernetesは、奇跡を起こすツールではなく、プラットフォームの一部に過ぎません。と言っても、正しく展開すれば、「複雑さを軽減し、同時に、ハイブリッドクラウドで、運用とアプリケーションの展開を自動化できます」。そのようにGracely氏は述べています。
適切なKubernetesの構築方法を選択して導入すれば、アプリケーションの迅速な展開、ワークフロー管理の効率化、IT部門の効率的な運営を実現できます。

 

Kubernetesの導入: リーダーのためのアドバイス

  • Kubernetesの導入をゼロから始めるのは、おそらく良い計画とは言えません。

  • 開発者には、Kubernetesベースのワークフローと展開モデルに移行したことを最大限に活かすために必要なツールを提供しましょう。

  • Kubernetesは、奇跡を起こすツールではなく、プラットフォームの一部に過ぎません。

この記事/コンテンツは、記載されている個人の著者が執筆したものであり、必ずしもヒューレット・パッカード エンタープライズの見解を反映しているわけではありません。

enterprise.nxt

ITプロフェッショナルの皆様へ価値あるインサイトをご提供する Enterprise.nxt へようこそ。

ハイブリッド IT、エッジコンピューティング、データセンター変革、新しいコンピューティングパラダイムに関する分析、リサーチ、実践的アドバイスを業界の第一人者からご提供します。