OSC2019 Hokkaido(2019/6/1)のセミナーセッション「なるほどわかった!Azure Kubernetes Service」にて登壇に使用した資料です。
なるほどわかった!Azure Kubernetes ServiceJAZUG札幌支部(きたあず)
View Slide
撮影について• 一部を除いてOKです。• 撮影NGな箇所は、都度お知らせします。• 他の人が入り込む際にはご配慮をお願いします。
自己紹介• 名前• 不破 崇行(ふわ たかゆき)• JAZUG札幌(きたあず) / Azureもくもく会札幌の宴会係• コメディアン• 仕事• 昼は普通の正社員、夜は個人事業主• 好きなAzureサービス• AppService / Monitor / Application Gateway• 最近の趣味• AWS / Azure / 航空無線 / シメパフェ
4JAZUG 札幌支部■正式名称Japan Azure User Group 札幌支部 / 略称:きたあず■活動概要Cloudにちょっと興味のあるゆるふわな方から実ビジネスで使用される方まで学べる勉強会を開催しています。■Webサイトhttps://kitaazu.azurewebsites.net/きたあずちゃん(@kitaazu_chan)
5JAZUGの紹介JAZUG⼥⼦部学⽣部札幌⽀部 (きたあず)⻘森⽀部仙台⽀部福島⽀部静岡⽀部信州⽀部名古屋⽀部(なごあず)関⻄Azure研究会福岡⽀部 (ふくあず) / ふくあず⼥⼦部熊本⽀部沖縄⽀部 http://r.jazug.jp/
ちょいちょい勉強会を開催しています• 2,3ヶ月ぐらいに1度、勉強会を開催しています。• 初心者大歓迎です。• 「今日初めてAzure触るんです!」でもOK!
Azureもくもく会もあるよ• 「もくもく会」もやってます• 一心不乱にAzure CLIを叩いたり• ひたすらに雑談したり• 「困った!」について誰かに相談したり• ひたすらにお菓子を食べる• 月1で開催しています!
分からない事があれば• 「きたあず」のメンバーに聞いてみてください。• 懇親会にもいるはずなので、是非捕まえてみて下さい!
今日のお話について
今日のおはなし• Azureの基礎知識• 10分ぐらい• そもそも「コンテナ」とか「Docker」とか「Kubernetes」って何?• 15分ぐらい• Azure Kubernetes Serviceの紹介とデモ• 20分ぐらい
今日のゴール• なんとなくでいいので、「Kubernetesでこんなことが出来るんだ!」という事を理解して欲しい!• 「ちょっとAzure使ってみたくなった!」って思ってもらう
こんな方を想定しています• Azureって名前は知ってるけど、実はあんまよくわかってない• Kubernetesって名前は知ってるけど、実はそこまで分かっていない• 「コンテナはいいぞ!」っていう声は聞くけど、イマイチよく分かっていない• 普段別のクラウドサービス(AWSとか)使っててAzureはよく分かっていない
そもそもAzureって何?
Azure(あじゅーる)とは• 正式名称「Microsoft Azure」• イタリア語で「紺碧」(こんぺき)• 青空をイメージしてください• MSが提供しているパブリッククラウドサービス• 仮想マシンの構築やサーバレスアプリケーションの構築・機械学習系サービスまで、多種多彩なサービスを提供しています。
多種多様なサービスラインナップ
世界中に存在するリージョン
実際に画面を見てみましょう• とりあえずデモしましょう!
コンテナ・Docker・Kubernetes
「仮想マシン」と「Dockerコンテナ」の違い• Azure VMやEC2に代表される「仮想マシン」とは大きく違う引用:Docker初めての人向け説明メモhttps://qiita.com/miyasakura_/items/87ccb6d4a52d4a00a999
「仮想マシン」• VirtualboxやParallelsなど、ハイパーバイザーを経由してOSから上をまるごと仮想的にOSを作り上げる• これが仮想マシン
Dockerコンテナ化• LinuxカーネルまではホストOSのリソースを使用し、そこから先を仮想化する。• Dockerの場合、Linuxの1プロセスとして扱うようなイメージで大丈夫です。
Dockerコンテナ化のメリット• 既存のLinuxカーネルを使うことで、ギリギリまでホストOSを使用するので、立ち上げ速度が非常に早い• 仮想マシンの場合はOSブートから始まるので、数分ぐらいはかかる• コンテナの場合、大体数秒で起動完了• 展開しやすい• 極力Linuxカーネルを使っているので、サイズが軽くなり、結果的に他の仮想マシンへの展開速度が速くなる
Dockerとは• そんなコンテナ技術を簡単かつエンタープライズレベルに利用可能に使えるエンジン• 米国Docker社が開発・サポートを行っている。• 要するに、サクッとコンテナを扱えるツール・エンジンが「Docker」• 世の中の「コンテナ」と言えば殆ど「Docker」と言っても過言ではない• Windows / Macでも動作できる
よくある質問Docker for Windows / Mac「DockerってLinuxカーネルを使ってるんでしょう?」なんでWindowsやMacでも動くんですか?
Docker for Windows / Mac• Docker for Windows / Macをインストールすると、自動的にDockerに特化したLinux仮想マシンがインストールされます。• Windows版だと、Hyper-V上に自動的にLinuxマシンが立ち上がります• Mac版の場合、hyperkitというMacネイティブの仮想化環境で動いています• この仮想マシンでDockerを動かすことで、同じ動作をさせることが出来ます
Dockerの嬉しいメリット• Windows / Mac / Linux どのOSでも、同じコンテナを起動させることが出来る• 「Windows用Dockerコンテナ」といったものは存在しない• ただしCPUアーキテクチャ単位での違いはあります• 「開発環境では動くんだけど、本番環境では動かない!」という開発現場でよくある事故を防ぐことが出来る• Dockerfileという、Makefileみたいなテキストファイルを記述するだけでコンテナを生成することが出来る• Dockerfileだけを開発者に配布し、そこから各自の環境にコンテナを立ち上げるという技も一応可能
Dockerの嬉しいメリット• メモリのプロビジョニングを行わないため、ホストOSのメモリを無駄なく活用することが出来る• Dockerのコンテナ単位でメモリやCPUコア数の指定を行わない引用:What Is Docker & Docker Container ? A Deep Dive Into Docker !https://www.edureka.co/blog/what-is-docker-container
コンテナ化の例• WordPressをDockerで構築する場合、• Nginx + PHP-FPMコンテナ• MySQL(MariaDB)コンテナ• の2つを立ち上げる
Dockerでの運用の問題点• Dockerコンテナはどんどん作成出来るため、数がジャンジャン増えるコンテナ間の依存関係が分からない!あと、知らないうちにコンテナが落ちてしまっても気づけない!
一元管理するためのツールが必要になってきた• Dockerコンテナによるサーバ運用が当たり前になりつつあるが、それに併せて規模がデカくなってきてしまった!• 一々確認したり、立ち上げし直すのは面倒!• 出来る事なら自動化したい!
Kubernetesという名の救世主• 「くーべねーてぃす」と呼びます• ギリシャ語で「航海長」・「パイロット」という意味• Google製のツールで、現在はオープンソース• 複数台(数十台〜数百台)に跨がってコンテナを集中管理してくれるツール
Kubernetesで出来る事• コンテナ化したアプリケーションのデプロイ・スケーリング管理• アプリの健全性のチェック• ローリング・アップデート• 水平の自動スケーリングの利用• などなど他にも機能は沢山あります
「Pod」という概念• コンテナを「グループ化」するという概念• ストレージ・リソース・IPアドレスをカプセル化• IPアドレスを共有しながらグループ化出来るので、ポート衝突を考慮しなくて良い• Podの中のコンテナは1つでも良いし、複数台でも良い引用:https://qiita.com/MahoTakara/items/f5130bb6e9e493c46c6b
「Node」という概念• 平たく言うと、仮想マシン1つ単位引用:https://Kubernetes.io/ja/docs/tutorials/Kubernetes-basics/explore/explore-intro/
Kubernetesの仕組みMaster WorkerインターネットWorker Worker・・・
我が家の例 (ビスケット1号)• 一家に一台Kubernetesクラスターの時代ですよ!• ラズベリーパイ * 3 (+1あると踏み台サーバを作れる)• USB電源(1ポートで2A出せる)• LANスイッチ * 2• 無線 有線アダプタ• ケーブル一式• 多層型ラック * 2• 手のひらサイズ• 持ち運び可能• ラック以外は全てヨドバシカメラ札幌店で買えます。
元ネタhttps://developers.cyberagent.co.jp/blog/archives/14721/
Kubernetesの欠点• 非常に便利なツールだが、インストールが非常に難しい• ビスケット1号もインストールだけで数日かかった• エンタープライズな環境だと設計も慎重に考える必要があり、更に難しい
Azure Kubernetes Service(AKS)ようやく出番がやってきた!
AKSで出来る事• Kubernetesによるクラスタリング環境を全自動で構築することが出来る• Node管理やスケールアウト・スケールアップもAzureでやってくれる• ポータル画面かAzure CLIで操作出来る• つまり、アプリ開発に注力することが出来る
AKSの構成例
既存のアプリケーションを移行させる引用:https://azure.microsoft.com/ja-jp/services/Kubernetes-service/
GitHub + Azure DevOps + AKSによる DevOps的なスタイル引用:https://azure.microsoft.com/ja-jp/services/Kubernetes-service/
仮想ノード(Virtual Node)を使用した超高速スケールアウト
TensorFlow / Kubeflowなど機械学習ツールを実行し、学習モデルを生成する
まとめ
世界は既にコンテナで動いている• 世界は既にコンテナ技術で回っている• 事実、Googleは地球規模でコンテナデプロイを繰り返している• Dockerを使って開発を進め、本番環境にデプロイする事は、世界規模ではデファクトスタンダードになりつつある• 仮想マシンがダメだとは言わないが、有力な選択肢は増えたのは事実
開発や運用で抱える問題をツールやサービスで解決しよう• 「開発環境と本番環境で動きが違う!」• Dockerコンテナで開発とデプロイをしよう• 「無停止リリースをしたい!」• Kubernetesを使って楽しよう• 「運用・構築だけで時間を取られたくない!」• Azure Kubernetes Services(AKS)を使って楽しよう• ツールとサービス(Azure)を駆使して、本質的な問題解決に取り組もう
Azureによる問題解決• Azureの様々なサービスを使うと、「問題の本質」に取り組むことが出来る• 私たちの目的は「お客さんにサービスを提供すること」 であって、「サーバやサービスを構築・インストール」するのが目的ではない• 難しい事や時間のかかることはAzure / Kubernetesに任せて、「本当に解決したい問題」に取り組むことがこれから重要になる
続きは会場や懇親会で• 質問や感想、フィードバックは会場や懇親会で受け付けています。• この顔にピン!と来たら私です!