Docker
kubernetes
minikube

Kubernetesの世界を散策してみよう

More than 1 year has passed since last update.


はじめに

このエントリーはKubernetes Advent Calendar 2016の1日目の投稿になります。今年の8月頃から仕事でKubernetesを検証していたので、勢い余ってアドベントカレンダーを作ったところ、私以外にも24名の参加者が集まってくれました。今からどんなエントリーが集まるのか楽しみです。皆さん、よろしくお願いします!


Kubernetesの世界を散策してみよう!

そんなわけで、Kubernetesを使ってあれこれ検証しているわけですが、初回ということもあり、Kubernetesに関して知ることのできる情報をいくつか紹介しながら、その世界を散策したいと思います。


Kubernetes誕生の物語

まずは、Kubernetesがどのようにして生まれたのか?という話から覗いてみましょう。

こちらはGoogle Cloud Platform Japan Blogのエントリーです。Googleの内部で使われているBorgというクラスタ管理システムをベースにして、Dockerを活用したコンテナ管理システムとしてKubernetesが作られたことが語られています。

Googleが提供するGoogle Container EngineはKubernetes上に構築されたクラスタ管理およびオーケストレーションシステムであり、Dockerコンテナを使用して、Kubernetesで管理することができます。

また、少し前のニュースで知りましたが、Azure Container Serviceでも、オーケストレーションツールの選択肢として、Kubernetesが選べるようになりました。


Kubernetesを知る

Kubernetesの仕組みがどのようなものか知るには、公式ページのWhat is Kubernetes?で紹介されている次のスライドを見るとよいです。

Kubernetesのバージョンは1.1が対象ですが、Kubernetesの基本となるアーキテクチャや主要機能(Pods、Labels、ReplicationControllers、Services・・・)などについて説明されています。

また、Kubernetesの1.3、1.4についての説明も含んだ内容としては、こちらのスライドがオススメです。


Pokémon GOはGoogle Container EngineでのKubernetes過去最大のデプロイ例

Pokémon GOは私も毎日やっているのですが、Google Container Engineを使ってKubernetes上にデプロイされているそうです。Kubernetesの利用事例は多くありますが、一番惹かれたのがPokémon GOの事例です。こちらのスライドで紹介されています。


読み方と略語

ちなみに、「Kubernetes」ってなんて読むの?と私も最初に疑問に思ったのですが、YouTubeなどで確認すると「クゥーバネティス」が正しいようです。また、文字数が長いので、省略して書くときは「k8s」と表現します。


OpenShift

Kubernetesをエンタプライズ向けに機能追加したプラットフォームとして、Red HatはOpenShiftを提供しています。OpenShiftはKubernetes上に主に運用面で必要なるツール群が追加されています。私自身も少し試してみましたが、基本はKubernetesなので、Kubernetesを使っていれば大きなギャップがなくOpenShiftも使うことができるように感じています。


fabric8

もう一つ紹介したいのが、私が個人に最近注目しているfabric8です。fabric8はRed Hatが支援しているOSSコミュニティで、公式ページの書き出しには

fabric8 is an opinionated and open source Integrated Developer Platform 

for the Continuous Delivery of Microservices using Kubernetes and Jenkins.

とあります。私はJavaをメインで使うのですが、fabric8はKubernetesにアプリケーションをデプロイするためのfabric8 maven pluginやJenkinsを用いたpipe line機能、Spring CloudをKubernetes用に拡張したspring-cloud-kubernetesを提供しているので、実際の使用感をあれやこれやと試していますが、今の所気に入っています。


Kubernetesをローカル環境に構築してみよう!

Kubernetesを使ってみるには、Google Container EngineAzure Container Serviceを使うのが手っ取り早いですが、mininkubeを使うとローカルマシンに環境を簡単に構築することができます。

miniubeのインストールは簡単そうなのですが、私が試したところ、それなりにはまりました。。。

あれこれ試行錯誤した結果、現状での私のお気に入りは、先に紹介したfabric8が提供するfabric8 maven pluginを利用したインストール方法です。こちらはJavaユーザ向きとは思いますが、Java8とMaven 3.3.9が入っていれば次の1コマンドでminikubeの環境が作れます。

mvn io.fabric8:fabric8-maven-plugin:3.2.7:cluster-start

(もう少し環境面を補足すると私の環境は、MacBook Air 11-inch, Mid 2012で、メモリは8G、brew installでxhyveを入れてあります)

この方法は次のエントリーで紹介されていて、空港のWifiを使って、陽気なおじさんがお酒を飲みながら、1コマンドでminikube環境を構築する様子を見ることができます :-)


おわりに

というわけで?、Kubernetesに関連する話題を、ぶらぶらと散歩しながら紹介してきました。ここから始まるアドベントカレンダーの記事でより多くのKubernetesに関する情報に触れることができると思いますので、書く人も、読む人も気軽に楽しんでもらえると嬉しいです。

また、12/3(土)に開催されるJJUG CCC 2016 FALLにて、「Spring Cloudアプリケーションの開発にDockerを活用し、Kubernetes上にデプロイするまで(#ccc_g6)」というタイトルで発表しますので、ぜひ興味のある方は聞きに来てください!イベントが終わったら、発表資料をこちらにも掲載しようと思います。


追記

発表してきました。Kubernetes アドベントカレンダーに参加してくださっている人にも会場で会えて、嬉しかったです。当日の資料はこちらです。合わせて見ていただけると嬉しいです。