y.takky てくめも

web技術について勉強会の参加メモだったり、本を読んだメモだったりを載せる予定

夜のGooge Cloud Next'17 Tokyo ~Google Cloud Community fes~

cloudnext.withgoogle.com

6/14(水)に開かれた上記カンファレンスの夜のイベントとして、Google Cloud Community fesが開催されたので参加してきた。
www.meetup.com

Google Cloud Community fesはGoogle系の技術を扱うコミュニティが集まって様々なセッションが行われていた。 GCPUGでのパネルディスカッションやbq SushiでBigQueryの開発者の方を読んで話を聞くなど様々あったが ひたすらkubernetes部屋にいた。 セッション内容は以下の通り

k8sjp.connpass.com

An Introduction to Kubernetes

An introduction to Kubernetes // Speaker Deck

Kubernetesの基本的なところからおさらいすることができてよかった。 PodやLabelsの概念はわかるんだけど etcdやapiserver周りはそこまで見れてなかったから参考になった。 以下メモを箇条書き

概念的な

  • kubernetesはよくk8sと略されるけど uberneteが8文字だから
  • 米国ではよくk-eightsと呼ばれているらしい
  • PrometeusというKubernetesのメトリクスを収集するのがある。
  • KubernetesはPortablityで自分で立てることができるし、RuntimeもDockerだけじゃない
  • HybridなCloud Kubernetesも組める。GLBとかで受けて様々なクラウドに流すのもあり
  • Kubernetes Cluster Federationで複数k8s Clusterを仮想的に1つに見せられる。

kubernetes は成長している

アーキテクチャ

  • MasterとNodeの2つの役割がある
  • Masterのetcd : kubernetesの全ての状態を保存する。 分散型kvs.zookeperの類似品みたいな
  • watchしといて更新されたら対象コンポーネントに通知が飛ぶ
  • apiserver
    • REST/認証/認可
    • 唯一etcdに書き込む。
    • validation(specがあってるか)
    • Scheduler : Podのスケジューリング。スケジューリングされていなPODを特定のNodeにスケジュールする。
    • Controller Manager : ビジネスロジックを司る。 ある特定のリソースを作ったときに他のリソースを作るかの判断を行う。
    • kuberlet(キューブレット) : apiserverを常にwatchしている。 自分のNodeに割り当てられたコンテナがあるかを調べて割り当てられたらImageのPullとかする。

コアコンセプト

  • Pods

    • デプロイの最小単位
    • 複数のコンテナと複数のボリューム
    • IP-per-pod
  • Labels

    • Key valueのデータ 唯一グルーピングする。ラベルセレクタ
  • Replica sets

    • N個のPodが実行されている状態を保つ
  • Services
    - 仮想IPとポート
     - L4LBにあたるもの
    - ラベルセレクタによるPodのグルーピング  
     - サービスが負荷分散してくれる。  ClusterIP -> 内部の仮想IP , External-LB
    
  • PersistentVolumes
    • PersistentVolumes ストレージを払い出して
    • PersistentVOlumeClaims それを要求する
    • GKEであればPesistentDisk
  • その他のリソースがある

作りたい

  1. apiserverに作りたいです って命令 2.認証認可する 3.パスしたら etcdに対して作成するpodの情報をKVSを書く 4.ユーザには200返す
  2. SchedulerがUnScheduleのPodを監視する。Nodeの状態見ていい感じに配置する。配置したNodeの情報をapiserverで受けてetcdに書き込む
  3. kubeletが自分の中で動いているか確認して、イメージ立ち上げたりコンテナ立ち上げたりする。 7.ステータスは apiserverを経由してetcdに書き込む

  4. sternという便利ツールある

  5. kubernetes : up and Runnning とう言う洋書がいい。なおkubernetesは進化し続けるから和書はでないと思われる(翻訳しているタイミングでバージョン上がってしまう)

実際は"キューブコントロール"って読むみたい。

Understanding SRE

GoogleでSREやっている Paul Newson (@newsons_nybbles) | Twitter が発表してくれた。 スライドはGoogle翻訳したものらしい。 あと同時翻訳なんてあるわけないので、頑張って英語を聞いていた。

google内のjobローテーションでSREチームに所属してた。

  • 開発やデプロイ、サポートまでは分割していて開発者だったりQAだったりインフラだったりサポートチームだったりするけどそうじゃない。エンジニアリングってのはすべてをやることだよ。

  • SREは buildingやScaleじゃなくてテストとかそのへんまで関わってくよ

  • 大体のチームではOperation TeamはコードをBuildしないし、その逆だけどGoogleはその辺ちゃんとやる。

  • サービスがスケールするたびに自動化やコーダが必要になってくる。

  • SREは多くの方法とは異なる。

  • GoogleにおいてもSREはレアで面白い仕事でキャリアの成長やメンターになる

  • On-call

    • Two Location
    • 8時間の時差
    • 最低6人で最大12時間シフト
    • 1シフトで2コールまで

LT

LTあたりからバッテリーがもうダメでそんなにメモは取っていない。

10分でわかる「kube-aws]

10分でわかる「kube-aws」 - Qiita

アプリのVersionごとにURLを自動生成 on GKE

[Lt]versionごとにurlを自動生成

  • アプリをデプロイしたらデプロイしたversionのURLがつくといいなー。
  • gitにtagをつけてpushするだけ
  • ingressのrulesでこっちのURLに来たらこっちのsvc使うとかできる。
  • container builder でdeployもできる。

Container Builderに関してはかなり参考になった。

Prometheus による Kubernetes モニタリングの基礎

Prometheus による Kubernetes モニタリングの基礎 / Kubernetes monitoring with Prometheus // Speaker Deck - CNCFのコンポーネントの1つ - Service Discovery - PrometeusはPodとしてデプロイするのがいい - Prometeusが定期的に監視してくれる - Prometeusの集約・監視もできる(Federation) - Grafanaで可視化できる - kubestatemetricsとかでkubernetes自体の監視もできる

アプリケーションの監視

Kubernetes1.6

  • SLOがある。
  • 5000Node , 150000podまで対応した
  • etcdのパフォーマンスを上げた
  • httpでなく protocolbufferで内部のやり取りはするようにした
  • RBAC Support
  • PrivateのDNS ZOneが使えるようになった
    • DNS ServerをCLusterの中で使えるようになった

流石に150,000pod立てるようなアプリケーション運用はしないから恩恵は得られないだろうけど、 etcdのパフォーマンスが上がったっていうのはじみに良い気がする。

まとめ

昼のGoogle Cloud Nextはどちらかというと万人向けで基本的なところから始まったけどコミュニティイベントはかなりディープな感じでよかった。 かなり勉強になりました。

運営の皆様ありがとうございました。

あとみんなコミュニティ入ろう。

GCPUG | Google Cloud Platform ユーザーグループ