拡張性が高いオープンソースのオーケストレーションシステム・Kubernetes

今回は、そんなKubernetesの基礎知識について初心者向けに解説します。

この記事でご紹介する内容は以下です。

  • Kubernetesの概要
  • Kubernetesを導入するメリット・気をつけるべきこと
  • Kubernetesができること
  • Kubernetesと類似ツール(Docker)の相違点
  • Kubernetesの使用例
  • Kubernetesの導入方法
  • Kubernetesの基本的な使用方法

Kubernetesの導入を検討している人はぜひご一読ください。


Kubernetesについて

この項目では、Kubernetesの基本情報についてご紹介します。

Kubernetesは、コンテナ化したサービスやワークロードなどを運用管理したり、自動化を促進したりするために作られたオープンソースのオーケストレーションシステムです。

コンテナツール(Dockerなど)と一緒に使います。


名称

読み方は、クバネティスもしくはクーベネティス。

Kubernetesの由来はギリシャ語の「操舵手」「パイロット」を持つ単語から。

Kubernetesは、知事・サイバネティックスの語源にも繋がる単語です。

略称である「K8s」は、スペルの「K」と「S」の間にある8文字(ubernete)を「8」とし、「K8s」と表しています。


作者・開発元

Kubernetesを最初に作ったのはGoogleでした。しかし、現在メンテナンスをおこなっているのは「Cloud Native Computing Foundation」です。


ライセンス

Apache Licenseを採用しています。Kubernetesはオープンソースであるため使用するのに費用はかかりません。


歴史

GoogleのエンジニアだったJoe BedaとBrendan Burns、Craig McLuckieが開発をスタートさせたのがKubernetesの始まりです。

その後すぐにBrian GrantやTim HockinなどのGoogleエンジニアが参戦し、2014年6月に正式発表されるに至りました。

当時のGoogle内でのコードネームは「Project Seven」

この「Project Seven」とはスタートレックに登場するキャラクター…優しいボーグ(Borg)「セブン・オブ・ナイン」から取ったのだとか。

Kubernetesのロゴを見ると、ロゴの輪に7つのスポークがあるのがわかります。これはこのコードネームの名残です。


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

Kubernetesは、オーケストレーションシステムと冒頭で述べました。

正確にいうと、Kubernetesは「コンテナオーケストレーション」

「コンテナオーケストレーション」とは、コンテナ(ホストOS上に仮想的に作られた区画のこと)を管理する技術のことです。


Kubernetes導入のメリット

Kubernetesを導入すると、どんなメリットがあるのでしょうか。


コストを削減できる

有料のツールもありますが、Kubernetesはどんな使い方をしたとしても無料で使うことができます(ライセンス規約の遵守は必須)。


パフォーマンスが素晴らしい

コンテナオーケストレーションシステムなので複数のコンテナ管理が簡単にできます

  • 複数のDockerホストを管理する
  • コンテナのスケジュール管理
  • データ・ログ管理 など

Kubernetesだからこそできることがたくさんあります。


柔軟性が高い

ローカルテストでも大企業がおこなう開発でも使える柔軟性がKubernetesの魅力。

複雑なことでも支障なく実現可能です。


リリースが頻繁でも安心

バグを修正したバージョンの入れ替え、新機能をリリースする際の作業を「Deployments」で自動化することができます。

コンテナを停止することなく、これらのことがおこなえるのは大きなメリットといえるでしょう。

なお、アプリが不安定な時はロールアウトを自動的にストップさせてオペレーターを介して元に戻す「ロールバック」もできます。


高可用性

「Replication Controller」がセルフ・ヒーリングを可能に。Kubernetesは高い可用性を誇ります。


特定の企業に依存していない

最初はGoogleのエンジニアが携わって開発されたツールでしたが、現在はオープンソースとして運営されています。

そのため、特定の企業がルール変更やKubernetesの仕様変更をおこなうことはありません。


軽くて速い

軽快な動きと効率良いスピードもメリット。スピーディーなアプリ開発・運用を求める人にぴったりです。


Kubernetes導入の注意点

この項目で紹介するのは、Kubernetesのデメリットについてです。


初心者はとっつきにくい

Kubernetesの最も大きなデメリットとして挙げられるのは、「初心者にはわかりづらい部分があること」

何でも入っているPaaSシステムではないため、重要なところは自分で選択し構築しなければなりません。

もちろん、デプロイ・拡張・ログ記録や監視などの一般的な機能はPaaS製品と同じように使えます。


最初の構築が面倒くさい

構築するまでの作業が複雑です。

しかし、Kubernetes公式が提供している「かんたん構築ツール」を使用すれば、容易に構築することが可能になります。


日本語の情報が少ない

Kubernetesのことを学びたいなら、英語力が必要です。もし英語に自信がないのなら翻訳ツールなどを頼ると良いでしょう。


Kubernetesの用語&機能

ここでは、Kubernetesの用語機能について解説します。

まずは用語からです。


pod

podとはKubernetesにおいて管理する最小の単位。Kubernetesはコンテナをpod経由で管理します。

podには自動でIPアドレスが割り振られており、コンテナが1つ以上含有しています。


namespace

仮想クラスター。複数のメンバーでKubernetesクラスターを使えます

1人1人に対して権限設定をおこなうことが可能です。


ラベル

リソースの整理をおこなうことができます。


ロールアウト・ロールバック

更新に異変が生じた時などに、ロールアウトやロールバックをおこなえます。

以上、用語の解説でした。次はKubernetesの機能についてです。


Kubernetesクラスターを作成する

システムを継続して動かすことができるように複数のコンピュータを繋げ、1つのコンピュータが故障したとしても他のコンピュータに自動で切り替えることができます。

そのため、ユーザーがアプリを使えないなどの事態を回避することが可能です。

この機能を使うには、ツールの1つである「Minikube」を利用します。


アプリケーションをデプロイする

実行中Kubernetesクラスター上に、コンテナ化したアプリケーションをデプロイすることが可能です。

なお、デプロイしたい場合はアプリケーションをいずれかのコンテナ形式(サポート済みのもの)にパッケージ化しなければなりません。


デプロイしたアプリケーションを探索する

デプロイしたアプリケーションの情報を確認することが可能です(以下を参照)。

  • いつデプロイされたものか
  • 現時点での状態
  • 実行している場所
  • 構成

また、トラブルシューティングをおこなうこともできます。


アプリケーションを公開する

アプリケーションの公開もKubernetesでおこなえます。

Deploymentを作ったあと、Serviceを経由して公開するという流れです。


アプリケーションをスケールアップする

Deploymentのレプリカ数を変更すれば、アプリケーションのスケールアップが可能です


アプリケーションをアップデートする

ローリングアップデート(新しいインスタンスでPodを段階を経てアップデートする方法)でアップデートができます。

この方法だと、ダウンタイムがなくてもDeploymentを更新可能。

アップデートはバージョン管理されているため、前のバージョンに戻すのも簡単です。


KubernetesとDockerの違い

KubernetesとDockerは混同されがちで、「どちらも同じ役割を持っているのでは?」と勘違いされやすいです。

しかし、KubernetesとDockerの役割には明確な相違があります。


Dockerとは

コンテナの一種。「Docker Swarm」という、複数のDockerを管理したり自動化したりする機能を持つことから、Kubernetesと同じ役割を担うと勘違いされることも。


DockerでできないこともKubernetesならできる

たしかに、DockerにもKubernetesと同じように「複数のDockerを管理する」「自動化する」などといったことはできます。

しかし、許容範囲を超えてしまう作業内容も…。

大規模になればなるほど、DockerでKubernetesと同じような動作をおこなわせると煩雑になってしまいます


Kubernetesの活用事例

Kubernetesを活用している企業は数多くあります。

Kubernetesを導入した企業はどんな風にKubernetesを活用しているのでしょうか。


自社開発システムから切り替えたSpotify

Spotifyは全世界で毎月2億人ものアクティブユーザーを有しています。

もともとは自社開発のコンテナ・オーケストレーションシステムを利用していたSpotify。

しかし、小さなチームで取り組むのは効率的でないということでKubernetesを導入したところ、スピードもコストも満足のいく結果を手に入れることができました。


ツールへのアクセスに悩んでいたadidas

ソフトウェアに対しては満足していたものの、ツールへのアクセスに頭を抱えていたadidas。

開発者VMを取得しようとするだけで最短30分。長ければ1週間ほどの時間がかかっていました。

そこでプロジェクトを立ち上げ、アディダスインフラストラクチャに取り込むまでの時間を短くするための方法を模索すること半年。

アディダスのeコマースサイトは全てKubernetesで実行されるようになり、読み込み時間は元来の半分まで短縮するのに成功しました。


Kubernetesのダウンロード・インストールの仕方

Kubernetesについての理解が深まってきたところで、導入手順についても知っておきましょう。

Kubernetesをインストールできるのは「Linux」「Windows」「macOS」です。

詳しいインストール方法については公式サイトをご覧ください。


インストールが終わったら

Kubernetesのインストールが完了したら、自分の必要な設定をおこなう必要があります。

設定方法は、公式サイトのドキュメントを参考にしても良いですし、GoogleクラウドやAzureなどのサービスを試してみてから正式に申し込んでみるのも良いでしょう。

Googleクラウド、Azureなどのサービスを通して申し込むと、設定にかかる時間が大幅に短縮することができます。


Kubernetesの使い方

Kubernetesをインストールし終えたら、実際に触ってみましょう。

Kubernetesの公式サイトには段階的にスキルを獲得できるドキュメントが準備されています。

Kubernetesのことを初めて学ぶ場合はこちらからやりたいことを選んでリンク先に飛びましょう。

  • Kubernetesクラスターを作成する
  • アプリケーションをデプロイする
  • デプロイしたアプリケーションを探索する
  • アプリケーションを公開する
  • アプリケーションをスケールアップする
  • アプリケーションをアップデートする

「Kubernetesの機能」で紹介した機能全てのやり方を網羅しています。


まとめ

Kubernetesについてご紹介しましたが、欲しかった知識をゲットすることはできたでしょうか。

この記事が、Kubernetesを使い始めたいと思っている人の力になれたなら幸いです。

Kubernetesはオープンソースとは思えないほど、とても優れたシステム。

難しいイメージを抱いている人も多く、取っつきにくい印象もあります。

しかし実際に触ってみると拡張性が高く、使い勝手の良いシステムということに気づくでしょう。

もしKubernetesの導入を検討しているのであれば、この記事を閉じたあとすぐにKubernetesをインストールしてみることをおすすめします。