先週の話になるのですが、OSC Hokkaido 2019のセミナーセッションで「なるほどわかった!Azure Kubernetes Service(AKS)」というタイトルで登壇しました。あと、きたあずブースでもAKS立ち上げライブデモをやりました。
結構大変でした。k8sネタで登壇したこと無かったし、久々のOSCでの登壇ということで準備で直前までバタバタしてました。。。バタバタしてたら「#ふわたかゆき頑張れ」とかハッシュタグまで付いてて嬉しかったりします。
当日の資料
当日の資料はSpeakerdeckに掲載しています。
フォローアップ
会場で伝えきれなかったことなどをフォローアップしていきます。
なんでMacやWindowsでDockerコンテナが動くの?
なんでLinuxカーネルで動くDockerコンテナがWindowsやMacで動くの?
特にWindowsにインストールすると分かるのですが、DockerをインストールするときにLinux仮想マシンが生成されます。Windowsの場合、Hyper-Vに自動的にMobi LinuxというDockerに特化したLinuxがインストールされます。(このため、WindowsでDockerを動かす場合はHyper-Vをインストールする必要があります)
つまり、Linuxの仮想マシンを一枚敷くことでDocker Engineを動かしているということになります。
Kubernetesってどんな役割を持ってるの?
Kubernetesって色んな機能があって難しそう。使いこなせる気がしないんですよ。
確かにKubernetesは機能や役割が多岐にわたるため、難しく感じるところがあります。実際、素の仮想マシンでのセットアップは難易度がかなり高いです。
Googleが地球規模でのデプロイに使っていたツールが発祥ということもあり、機能は非常に多いのですが、大まかな機能はシンプルです。
非常にざっくりと言うならば、「コンテナクラスタの自動運転」と言えます。Kubernetesは複数のサーバ(Node)に対して自動的にコンテナをデプロイすることが出来、これが基本機能です。コンテナの監視やロードバランシング・更にローリングアップデートなどもありますが、「自動運転」が基本です。
また、面倒なKubernetesクラスターのインストールもAzure上であればAKSを使うことで自動化することが出来ます。Nodeを増やすことも簡単ですし、クラスターの構築は10分程度で終わります。
複雑なものこそ「自動化」しよう
Dockerを使うことで、環境の共通化やポータビリティ向上というメリットを獲得することが出来ますが、本番運用となると構成が複雑になりがちになります。
しかしKubernetesを使うことでコンテナクラスタ化を自動化することが出来ます。また、ローリングアップデート機能を使うことで、エンドユーザーにエラー画面を見せずにアプリをアップデートすることが出来ます。
更にAKSを使うことで、面倒なKubernetesのインストールを任せることが出来ます。もしくはRancherを使うという手もあります。
私たちの仕事は「サーバのインストール」がゴールではなく、「お客さんに価値を届けること」が最終ゴールです。面倒なことは自動化したり委任させることで、本来私たちが向き合うべき仕事やゴールに向かって集中することこそが今のクラウド時代で重要だと考えます。
今後の予定
登壇の予定はないのですが、機会があればまたどこかで登壇したいなーと思ってます。