woshidan's blog

そんなことよりコードにダイブ。

JAWS-UG コンテナ支部 #13 に参加しました

ちょっとバタバタしていたため遅くなってすみません。。

jawsug-container.connpass.com

上記にブログ枠で参加したので各発表についてまとめます。

AWS サービスアップデート

toricls さんの発表でした。

EKSのTokyoリージョンおめでとうごさいます!

Kubernetes関連を勉強しはじめだったのでアップデート内容についてはうなずくしかできない...という感じだったのですが、re:Inventのアップデート内容の中で、DNSについて、SQSキューなどのリソースのURIを固定にするためRoute53にCNAMEレコードをたくさん登録したことがあったのであとで試してみたいと思います。

今日から始める人のための Kubernetes on AWS ベストプラクティス 2018版

mumoshu さんの発表。

https://www.slideshare.net/mumoshu/kubernetes-on-aws-2018

まさに、これからKubernetesAWSでさわってみようかな、と考えていたので、各種ツールのアプローチやできることの差異などが非常に参考になりました。

特に前半について、KubernetesAWSで動かすための選択肢として、kops, kube-aws, EKSの選択肢があげられていたのですが

  • 連携しているツールの違い(kops: Terraform/kube-aws: CloudFormation/EKS: SDK, CLIの手作業ベース , kubeconfig(まだ貧弱))
  • サポートしているホストOSの違い(kops: いろいろ/kube-aws: CoreOs/ Container Linux)
  • ツールで扱える範囲(kops/kube-aws: マスタ+ノードの運用少し, EKS: Control-Plane*1の構築、運用)

など、一筋縄でいかなさそうです...。

AWSで仮想コンピューティングが行えるサービスとしては、Lambda・EKS・ECS(Fargate)がありますが、それらの使い分けについて触れられていたのも助かりました。

後半はまた改めてお世話になると思います。本当に濃かったです...。

Kubernetes Scheduler のカスタマイズ

チェシャ猫さんの発表。EKSの話ははじめてだったのでついていけるか不安だったのですが、ECSの復習からはじまったので非常に助かりました!

LTがわりの連続Tweetの最初のアドレスはこちら

メンバーごとのリモートで試せる開発環境を用意したい場合*2に、常にメンバーの人数分のEC2インスタンスを立ち上げていても無駄なので、もしすでにDockerのタスクが動作しているインスタンスがあり、余裕があるなら新しいタスクもそちらに配置するようにしたい、という場合にEKSではどう設定したらいいか、について*3

KubenetersのPod*4のSchedulingは、

  • 配置しようとしているPodの条件に合うNodeをフィルタリングする
  • 残ったNodeを優先度にもとづいてスコアリングする

の二段階で行われています。

EKSを利用する場合、上記を実行するSchedulerの指定が行えませんが、追加のSchedulerを指定することで追加の指定を行うことはできます。

しかし、これも追加のSchedulerをPodごとに用意する必要があったりで煩雑なので、Scheduler Extenderの利用が考えられます。

が、こちらは実行タイミングの問題でEKSのデフォルトのSchedulerでフィルタリングされたNodeを選べない、などややこしく、こういった状況にたいして Scheduling Framework が開発されていますが果たして、という内容でした。

犬でもわかった気になってしまった!!

Firecracker とは何か

理解できているか自信ないですが、今回の発表の中で一番面白かったです。

https://speakerdeck.com/pottava/what-is-firecracker

  • アカウントごとにGuest OSのリソースを確保して動かすから従来のLambda(EC2利用)はリソースの無駄な確保もあり、遅かった
  • アカウントごとではなくプロセス単位で分離できていれば十分なのでより細かくリソースを分離、既に起動しているGuest OSを利用できるので早くなる

くらいのノリで理解していました。

発表とは直接関係ないですが、あとで見返す時用にスライドの4ページの各層についてメモを置いておきます。

  • Our code ... 人間が扱いやすいようなレベルに抽象化された命令が書いてある
  • Lambda runtime ... コードの実行環境。(各種サンドボックス相対パスから見て)Lambdaは特定のバージョンのPythonが実行できるようにライブラリなどを決まったパスに入れている
  • Sandbox ... 外部から受け取ったプログラムを保護された領域で動作させて、システムが不正に操作されるのを防ぐセキュリティ・システムのことをいいます。この決まった領域内(多分usrディレクトリ以下はOKでsys以下はだめとか、そういう)にLambdaの実行環境を構築する https://blog.codecamp.jp/sandbox
  • ゲストOS ... ハイパーバイザによって実行されているOS. Macの中にWindowsが!!! とか?
  • ハイパーバイザ (hypervisor) とは、コンピュータの仮想化技術のひとつである仮想機械(バーチャルマシン)を実現するための、制御プログラム https://ja.wikipedia.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%90%E3%82%A4%E3%82%B6
  • ホストOS ... ハイパーバイザを動かしているOS

Envoyを分かりやすく例えつつApp Meshの話をします

_mpon さんの発表。

https://speakerdeck.com/mpon/envoywofen-kariyasukuli-etutuapp-meshfalsehua-wosimasu

App Meshどころか、envoyすら初見だったのですが、nginxでできることに合わせて説明されていたのでめちゃくちゃ助かりました...。 マイクロサービス方面についてもっと調べてみようと思います。

GameDay @ re:Invent のこと

chie8842 さんの発表。

GameDayに行った際、英語がうまく話せなくても自分の担当領域の作業を見つけて実行していく様子や優勝したときに採点されたポイントに他のチームがあまり気づいていなかった話が聞いてて参考になりました。

EKSのいーかんじなサービス公開方法

sugimount さんの発表。

https://speakerdeck.com/sugimount/expose-service-eks-externaldns-acm

EKSでは外部に公開しようと思った時にELBの利用が必要で、その具体的な手順のまとめでした。お名前.comなどからドメインを予約するところから始まっていてありがたかったです。

Virtual Kubelet + Fargate + EKSでノードレス Kubernetes を夢見た話

bbrfkr さんの発表。

https://speakerdeck.com/bbrfkr/virtual-kubelet-plus-fargate-plus-eksdefalsedoresu-kubernetes-womeng-jian-tahua

Kubernetes外のAPIにPodの作成を依頼可能、ということはkubuletが属しているクラスタの外部(たとえば、今回だとEKSのMasterに対してリクエストを投げている)にリクエストを投げられる、ということだったのですが、今回初めてMasterも含めて1つのクラスタの中に構成していく、ということの方を知ったので*5精進せねば...と焦る感じでした。

ECSばかりさわっていて、この辺の話を聞いたことがなかったので大丈夫かな、と思ったのですが、わかりやすい発表が多くてとても助かりました。

*1:kubectlコマンドの結果を受け付けて、そのコマンドによるリクエスト結果をクラスタに反映させるために常駐しているプロセスのことをさすみたい

*2:マルチテナント化、といった用語で説明される状況が恐らくこれ

*3:ECSではBinpackで設定すればよいみたいです

*4:同じ仮想ENIを利用するコンテナの集合。 Webサーバとログサーバを1つのPodに入れて扱うなど。ECSでいうとタスクに近い

*5:https://ja.wikipedia.org/wiki/Kubernetes など