第2回 Kubernetesの歩き方

第2回 Kubernetesの歩き方

Kubernetesはどこから学ぶのがよいですか?とか、よい資料やサイト無いですか?とかよく聞かれるのでまとめてみました。(この記事はKubernetes Meetup Tokyo#5の発表内容です)

あらすじ

次の6つのパターンのとき、どこを見にいくとどんな情報が置いてあるのかを紹介していきます。また、よりよい情報源があれば教えていただけると嬉しいです :)

  1. 入門する
  2. アプリケーションを管理する
  3. Clusterを使う&作る
  4. k8sユーザの動向を追う
  5. KubernetsをDeepDiveする
  6. 困った時は

入門する

Kubernetesは独自用語がたっぷり含まれているので、いきなりアプリケーションをドキュメント読みつつ構築しようとするとハマります。まずはKubernetesのコンセプトをざっくり読んだ後に素晴らしいインタラクティブなチュートリアルを触ってみるのがよいです。

  • Concepts
    公式ドキュメント。Kubernetesの概念やアーキテクチャ、用語がまとめられている。OverviewとKubernetes Architectureだけ読んでおけばチュートリアルがやりやすくなるはず
  • Tutorials
    Web上のターミナルでminikubeを使ったクラスタの構築からアプリケーションのデプロイ、スケールアップ、アップグレードを試せる
  • Building Mesos/Omega-style frameworks on Kubernetes
    クラスタ管理アーキテクチャとしてのk8sの方針を知りたいときはココ

日本語情報

WEB+DB PRESS Vol.99の実践Kubernetes がとても分かりやすかったのでオススメです

アプリケーションの管理

チュートリアルのように数アプリケーションのみ起動するときは生のJSONやYAMLで設定ファイルを保持していても問題ありませんが、商用で使っていくとなると環境ごとのパラメータ管理や依存関係を保持するのが辛くなってきます。そらへんを解決する方法としては、K8s用のパッケージマネージャ Helm があります。

テンプレートを作って変数ファイルを切り替えられたり、アプリケーションの依存関係を指定できたり、プラグイン使ってSecret情報をGPGで暗号/復号化したりと、さまざまな機能があります。公式ドキュメントが非常によくまとまっているので困った時はドキュメントが解決してくれるでしょう。

  • Helm Docs
    Helm Official Document
  • [おまけ] Azure Draft
    DeisがMSに移ってからリリースされたよ

番外編 - Serverless

Kubernetes上でServerlessなアプリケーションをデプロイしたいという場合次の3つの選択肢があります。GithubのStar数は上から順に2074, 493, 154です。(2017年6月27日調べ)

  1. Fission by Platform9
  2. Kubeless by Bitnami
  3. Funkiton by Fabric8(RedHat)

Clusterを使う&作る

チュートリアルまでこなせば基本的なアプリケーションの立ち上げ方は分かるようになっているので、アプリケーションを立ち上げる先を考え始めます。まずはKubernetesのマネージドサービスにのっかる話、2つ目は自前運用する話です。

マネージドサービス

Kubernetesの運用はそれなりに辛いので、エンジニアも豊富にいるしマルチデータセンタにクラスタ構築してバンバン活用するぜ!とかでない限り、マネージドなサービスを使うというのはよい選択肢だと思います。(k8s外ですが、イメージレジストリの自前運用は面倒が多いのでそこら辺も合わせて検討すると◯)

マネージドクラウドサービス

サポート付きサービス

Clusterを運用する

チュートリアルで使ったminikubeはお手軽ですが、あくまでもお試し用であって本番環境としては不向きです。本番環境にもデプロイ方法は色々ありますが現時点で主流なツールは以下の3つです。それぞれ向き不向きがあるので用途に応じて検討してください。

  • kops
    AWSに特化しているツール。AWSにデプロイするならこれ
  • kargo
    Ansibleベースでベアメタルや複数のクラウドプロバイダに対応している。デプロイ先によって対応している機能が違うので注意 (現在kubesprayにコードベースも改名中)
  • kubeadm
    本番環境の流れで紹介しましたがMasterHAには対応していないので今後に期待したいツール (そのためにはk8s本体にmasterアクセスをロードバランスしたりする機能が入らないといけないので当分無理そう)

コラム

自前でクラスタ管理しているとMasterHA(特に証明書とロードバランサ周り)、ネットワークあたりではまりがちでなのでご注意ください。ちなみに、サーバ証明書は次のKubernetes1.7でアップグレード機能が入りそうです。

k8sユーザの動向を追う

個人/企業Blogやmeetupのスライドと動画、Github上に公開されたk8s関連のツール情報はRedditとKubeWeeklyを見ると追いやすいです。週一くらいでReddit、たまにKubeWeekly、暇なときはk8s関連のPodcast聴いてるとなんとなく動向がわかります。

コラム

Data nuts, Google Cloud Podcast, The Cloud Castsはよくk8sの話題がでるので聴いてます。また、Software Engineering Dailyを使ってk8sタグで引っ掛けておくとk8sの回だけ収集できます。

KubernetsをDeepDiveする

運用していてトラブったり、
アーキテクチャが気になって夜も眠れなくなったり、
Kubernetesの開発がしたくなった方は次の場所が参考になります。

特定のアーキテクチャやロジックがきになる

開発の最新情報を追いたい

  • Contributor Discussion
    GoogleGroupに登録してメール購読 (1日ごとのサマリで丁度良い流量)
  • Kubernetes community meeting
    日程は上のメールでだいたいわかる。日本時間で参加するのはつらいので公開されている議事録や録画をYoutubeで見るのがオススメ。

開発に参加する前に

communityに開発のためのお作法が書かれているのでざっと目を通しておくのがオススメです。次のようなものが書かれていたりします。Go言語のコード規約とかツールとかもまとめられているのでk8s以外の開発にも参考になるものが多いです

困った時は

Kubernetesを使っていく中でリファレンスやコードを見ても分からないことが出てくるかもしれません。そんな時は次のところに助けを求めるとよいでしょう。

comments powered by Disqus