はじめに
このエントリーは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 EngineやAzure 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 アドベントカレンダーに参加してくださっている人にも会場で会えて、嬉しかったです。当日の資料はこちらです。合わせて見ていただけると嬉しいです。