https://k8sjp.connpass.com/event/85336/ kubernetes meetup 11回目 今回のkubernetes Meetupは、18/5/2-5/4 に開催された KubeCon + CloudNativeCon Europe 2018 Recap スペシャルです。
Kubeconのスライドや公演の動画は全て公開されているので、興味があるセッションがあれば見るといいとのことでした。
-
KubeConEU2018 セキュリティ関連 の話(Secure Pod)
-
Secure Pod セキュリティーの高いPodを導入したい 今の状態だとkernelの脆弱性をついてそこから攻撃が可能になる Sandbox Podを導入すれば、 Sandboxとkernelの脆弱性をつかないと攻撃ができないのでセキュアだろう。 ただし、今はデザインフェイズ
-
Container isolation at Scale Kernel上で動かくしているアプリケーションだとユーザから入力(画像とか動画とか)があったりするとセキュアじゃなくなってしまう。 VMとかだと、最初に確保したリソースが全て使われてしまうし、VM上のOSのオーバヘッドなどもある。なのでgVisorを作った。 gVisorはSentryのメモリ空間を使っている。もしSentryに脆弱性があって、Applicationから攻撃したとしても、できることは限られているのでセキュアであろう。
-
gVisorに関しては以下記事を参照 https://www.publickey1.jp/blog/18/gvisorgoogle.html https://github.com/google/gvisor
-
Micro Serviceにすると App A/B/C間でネットワークレイテンシが乗ってくる。
-
istioを導入するとバージョニングの管理や A/B/Cの間に挟まっているのでレイテンシのメトリックスを取得したりもできる。
-
パフォーマンス測定 Max Query per Seconds(qps)で version 0.5 -> 0.7.1で 700qps => 1700qpsに 400qpsでのLatenciesも 34ms -> 14msぐらいに。 結構性能も上がってきたのでアドテク系のプロダクションにも載せていける..かも (アドテク領域ではレイテンシ50ms 以下が求められる)
-
コンテナのネットワークのレイテンシ
- k8s上にnginxを動かした場合 LoadBalancer (type LoadBalancer)でバランシングされる。このときにiptablesを元にアクセスを振り分けるpodを決定するので別NodeのPodにアクセスが行く可能性がある。
- vmと比べると1.5倍ぐらいレイテンシが遅いのでアドテクではちょっとつらいとこがある。
- SIG API : KubernetesのAPIを担当しているグループ
- Custom Resource : Kubernetesのリソースを自分で独自に定義できるようにするやつ。 カスタムリソースでは今まではversioningに対応していなかったが、複数のVersionができるようになった。
- Validation:OpenAPI v3 schemaに対応したもの
Continuous Delivery Meets Custom Kubernetes Controller: A Declarative Configuration Approach by nasa9084 (日本仮想化技術株式会社)
- Custom Resourceを使ってCI/CDをいい感じにしよう
- 今までだと Jenkinsから gitのソース取ってきてbuildして docker image pushして kubernetes clusterへ命令出してた。
- MANAGED CDの場合 jenkinsの管理はしなくていいけどkubernetesのアクセス権限をCDに渡す必要がある。
- weaveworks/fluxを使うと kubernets上で別のリポジトリのconfを引っ張ってきてデプロイができる。
Kubernetes Multi-Cluster Operations without Federation by Junichi Yoshise @jyoshise (Hewlett Packard Enterprise)
- エンタープライズが複数クラスタを複数の場所(aws/gcp/オンプレ1 etc)で動かすのは当たり前。
- 大体10クラスタぐらい。
- Kubernetes Federation v1だとetcdとかは1クラスタなのでどこかが落ちると終わる (GKEの場合はgoogleが担保してくれるからいいけど)
- TECTONICの取り組み
- Cluster Registry(クラスタの全情報をもつもの)が1箇所だとまずいので全クラスタ上で同期
- Proxyがセレクタとして扱う
- SIG-MULTICLUSTER
- 今回のような話題を扱っている場のこと
- Federation v2とか
Blackholes and Wormholes: Understand and Troubleshoot the “Magic” of Kubernetes Networking by Hirofumi Ichihara @rafiror (NTT)
- kubernetesネットワークの事例紹介, 事例からの教訓, ベストプラクティスなどの発表があった。
- 何か問題があった場合iptablesをチェック
- k8sの場合Router/FW/LB/Switchすべてが 1つのWorkerに乗ってくるので全てを知っている人じゃないと切り分けは難しい
- GKEのiptables filterルールは デフォルトだと全通し(なんでもOK)になっている。 最近できたGKEのNetWorkPolicy適用するとCalicoの3倍のルールになるのでつらい。 GKEでもネットワーク障害があると掘っていかないとならない。
Multi-Tenancy in Kubernetes: Best Practices Today, and Future Directions by Fujita Daisuke (Mercari)
- k8s上でMulti-tenancyを行う方法として PodSecurity Policyや 各PodのPriorityに応じたPodの配置など。
- メルカリの場合
- サービスごとにクラスタを分けると新しいサービスごとにprovisioning(datadogのAgentいれたりとか)が必要でSREの運用負荷があった
- マイクロサービスの場合 クラスタ分けるとレイテンシの問題がある
- 環境ごとに分けると devとprdのみの場合 stagingをPRごとに立てたかったりすると負荷が大きくなる
- メルカリのMulti-tenancy
- 1リージョンにdevとproがある。
- 今後は1リージョン1クラスタにしたい。
- 1サービスごとにNameSpaceを切ってる。
- SREがクラスタレベルのオペレーションを行えるようにする。
- 開発者はNameSpaceのみの権限を持つ。 RBACを用いて実現
kubernetes meetupはメインセッションとLTの間に懇親会がある。 ここ数回でkubernetes meetupの参加人数結構増えたって話や、 実際マイクロサービス化するときにどうすればいいんでしょうね?みたいな話をした。
- day0でやってる。
- 上海(11月)、シアトル(12月)でも開催予定
- DocsSprint
- kubernetes.ioがいろいろ変わっているのでContributeするチャンスでは?
- どこから手を付ければいいの?
- websiteとtest-infraが初心者にはおすすめ。
- kubernetes-docs-jaもSlack上にチャネル作ったので翻訳等興味ある人がいれば参加するといい。
- コンテナベースオーケストレーション6章の執筆者
- 2系からは100% Goで etcdを使用。
- Rancher2.0からGKEにWordPressをデプロイするみたいなチュートリアルもある。
- どうやってデプロイするか
- kubectl create -f とか kubectl apply -f
- そこからHelmを使いだすけど機密情報を埋め込みしたりしてつらい。
- Helmfileを使うとyaml通りに持ってきてくれる
- Helmfileを使うとちょっとだけhelm installが楽になる
- Telepresenceは いわゆるライブリロード的なものを提供するやつ。
- googleのskaffold的なもの。
Wantedlyの人
- モチベーションとして適切なGithubのTeamでkubernetesの権限を制限したい。
- Github Teamが適切にメンテナンスされているのでGIthubTeamの情報を使う
- Genmonというのを作った。
- GithubTokenをkubectlで送るだけ。 適切な権限を与えられる。