Slide 1

Slide 1 text

αΠόʔΤʔδΣϯτʹ͓͚Δ ϓϥΠϕʔτίϯςφج൫AKEΛࢧ͑Δٕज़ MasayaAoyama @amsy810 Masaya Aoyama @CyberAgent [adtech studio]

Slide 2

Slide 2 text

MasayaAoyama @amsy810 Masaya Aoyama @CyberAgent [adtech studio] ぼくは 「あくーえ」 ぼくは 「青山 真也」 αΠόʔΤʔδΣϯτʹ͓͚Δ ϓϥΠϕʔτίϯςφج൫AKEΛࢧ͑Δٕज़

Slide 3

Slide 3 text

self introduction page 03 連載 「今こそ始めよう! Kubernetes入門」 @ThinkIT Certified Kubernetes Administrator (CKA-1700-0138-0100) OpenStack Active Technical Contributor Masaya Aoyama Infrastructure Engineer MasayaAoyama @amsy810 ͋͘ʔ͑

Slide 4

Slide 4 text

Hobby == Kubernetes Kubernetes ͷϥζϕϦʔύΠแΈ “αΠόʔΤʔδΣϯτ෩”

Slide 5

Slide 5 text

ΠϕϯτΛ੝Γ্͛ΔͨΊ…ϓϨθϯτاը page 05 Raspberry Pi 3 * 3 USB Charger 6 port 50W 4-Tier acrylic case Switching hub Wi-Fi AP etc… おうち Kubernetes の素

Slide 6

Slide 6 text

Ad Technology meets Kubernetes Target workloads of us

Slide 7

Slide 7 text

page 07 High Computing Machine Learning を用いたモデル生成 GPU / 分散処理 などを積極的に利用 データセットは PB クラスに大規模 1 システムあたり 300,000 req/sec〜 をさばく High Traffic DSP システムにおいては 10 ms〜100 ms 以内にレスポンスを返す Low Latency Ad Technology のシステムは性能要件が非常にシビア

Slide 8

Slide 8 text

page 08

Slide 9

Slide 9 text

“adtech studio” loves Container page 09 Some engineer use Docker for development. e.g. Minikube, Nvidia-Docker Local We use AKE On-premise (Unmanaged) We use GCP GKE and AWS ECS Public Cloud (Managed)

Slide 10

Slide 10 text

History of AKE Why “Adtech Container Engine” is implemented?

Slide 11

Slide 11 text

timeline option page 011 06 2016 Kubernetes 1.2/1.3 の時代 Docker Swarm、Kubernetes、Mesos などの覇権争い Start feasibility study for Container as a Service Engineer needs container platform for technical curiosity.

Slide 12

Slide 12 text

04 2017 AKE is Implemented by only 2 people (and then, new OpenStack based private cloud was also released) Release AKE 07 2017 Support stable cinder integration from Kubernetes v1.7 CNCF announced “production ready from v1.7” Stable support Persistent Volume

Slide 13

Slide 13 text

09 2017 High performance Baremetal LB integration for ad-technology system without OpenStack Octavia (LBaaS). Support “type LoadBalancer” 11 2017 Ingress is support L7 loadbalancing. but, specification and implementation are not determined now. Implement “GKE like” Ingress

Slide 14

Slide 14 text

our development is growing fast production environment! Now 15 clusters

Slide 15

Slide 15 text

AKE Overview How to create and release Kubernetes Cluster?

Slide 16

Slide 16 text

Creating Cluster page 016 Provisioning K8s OpenStack Heat を用いて自動構築を実施 Scaling 等も Heat の機能を使って実施 Vaious operation is executed via “ake client” $ ake cluster create amsy810 \ --az ad-izanami-1a \ --network netA …

Slide 17

Slide 17 text

Release Flow of new version page 017 Build Pached K8s Original の Baremetal Loadbalancer 連携のため Patch を当てた Kubernetes をビルド Create OS Image Kubernetes、Docker、etcd など 必要なコンポーネントを組み込んだ OS Image Provisioning K8s OpenStack Heat を用いて自動構築を実施 Scaling 等も Heat の機能を使って実施 Run E2E Test Sonobuoy や bosh を使った E2E Test を実施

Slide 18

Slide 18 text

Key Features of AKE GKE like container platform

Slide 19

Slide 19 text

Key features of AKE page 019 Add-on system for us High performance L4 / L7 LoadBalancer Kubernetes and Swarm (Multi COE) OpenStack integration Multi Container Runtime Tuning for adtech system

Slide 20

Slide 20 text

page 020 AKE (Adtech Container Engine) key features 02 OpenStack integration OpenStack と統合し、独自カスタマイズの Kubernetes 環境を提供 03 High performance L4 / L7 LoadBalancer Integration with hardware load balancer Implement GKE like original ingress controller 01 Kubernetes & Swarm (Multi COE) 複数の COE (Container Orchestration Engine) をサポート

Slide 21

Slide 21 text

06 Multi Container Runtime (now planning) 複数の Container Runtime をサポート予定  Docker, containerd, rkt, kata-container AKE (Adtech Container Engine) key features 05 Tuning for adtech system Network & Kernel & Hypervisor tuning Kubernetes tuning (Horizontal Pod Autoscaler, some controller manager) 04 Add-on mechanism for us 利便性向上のため、アドオン機能の提供  Datadog, EFK (ElasticSearch + Fluentd + Kibana), etc… page 021

Slide 22

Slide 22 text

01 Kubernetes & Swarm (Multi COE) Kubernetes Docker Swarm etc…

Slide 23

Slide 23 text

Kubernetes & Swarm (Multi COE) page 023 Docker Swarm シンプルな COE Kubernetes デファクトスタンダート 高機能な COE type: LoadBalancer 相当の機能を実装 Kernel の Rebuild (for tuning)

Slide 24

Slide 24 text

02 OpenStack Integration Keystone Cinder Designate Heat

Slide 25

Slide 25 text

OpenStack Integration page 025 アプライアンスストレージと連携して Dynamic Provisioning で Persistent Volume を提供 OpenStack Cinder Volume Kubernetes クラスタへの認証で Keystone のユーザ情報を利用 OpenStack Keystone Identity and Auth page 025 AWS CloudFormation 相当 YAML で書かれたマニフェストを用いて Kubernetes クラスタを構築 Heat Custom Resource を独自実装 OpenStack Heat Orchestration CLI などからの接続時は Cluster 名をもとにした名前解決 OpenStack Designate DNS

Slide 26

Slide 26 text

Why we choose vanilla Heat not some tools? page 026 OpenStack Magnum Floating IP 等 L3 Network が必要 開発スピードが遅い、大幅な変更 細かい設定が困難 Rancher 2.0 Rancher 2.0 の GA は 5 月 細かい設定が困難 Tectonic 検証時点での知名度は低い 細かい設定が困難 OpenStack 連携した K8s を構築 クラウドやオンプレ上に K8s を構築 既存のクラスタの Import も可能 クラウドやオンプレ上に K8s を構築

Slide 27

Slide 27 text

Why we choose on VM not baremetal? page 027 Virtual Machine Overhead が大きい Baremetal コンテナを詰めすぎると影響範囲が大きい  (コア数の少ない物理サーバで解消可能) 物理サーバのコア数に依存したクラスタサイズ マルチテナントではネットワークの分離が面倒 自在な粒度で Node を切り出せる Overhead が少ない

Slide 28

Slide 28 text

03 High performance L4 / L7 LoadBalancer Baremetal Loadbalancer GKE Like Ingress

Slide 29

Slide 29 text

Service “type: NodePort” page 029 Pod Network (Internal Network) NIC NIC IP: x.x.x.x IP: y.y.y.y IP: x.x.x.x ѼͷτϥϑΟοΫ͕ ֤ Pod ʹసૹ͞ΕΔ

Slide 30

Slide 30 text

Service “type: NodePort” page 030 Pod Network (Internal Network) NIC NIC LoadBalancer BIG-IP GCLB IP: x.x.x.x IP: y.y.y.y NodePort + Manual LoadBalancer VIP: z.z.z.z VIP: z.z.z.z ѼͷτϥϑΟοΫ͕ ֤ Pod ʹసૹ͞ΕΔ

Slide 31

Slide 31 text

Service “type: NodePort” page 031 Pod Network (Internal Network) NIC NIC LoadBalancer BIG-IP GCLB IP: x.x.x.x IP: y.y.y.y ϊʔυͷεέʔϧ࣌΍ো֐࣌ʹ LoadBalancer ͷૢ࡞͕ඞཁ VIP: z.z.z.z NIC IP: w.w.w.w

Slide 32

Slide 32 text

Service “type: LoadBalancer” page 032 Pod Network (Internal Network) NIC NIC LoadBalancer BIG-IP GCLB IP: x.x.x.x IP: y.y.y.y खಈͰͷ LoadBalancer ੍ޚ͕ෆཁ ݫີʹ͸ NodePort + LB ͱ͸ҟͳΔ VIP: z.z.z.z NIC IP: w.w.w.w

Slide 33

Slide 33 text

Implement Baremetal LB Integration page 033 最近は MetalLB なども出てきている “type: LoadBalancer” は Cloud Provider Integration で実装 Ad Technology 領域では性能不足 OpenStack では Octavia (LBaaS) が利用可能 Not difficult, it’s easy! Baremetal LB と連携するよう CloudProvider Integration を独自実装 参考: https://developers.cyberagent.co.jp/blog/archives/12058/ 「GKE 互換のオンプレコンテナ基盤 AKE (Adtech Container Engine) 誕生秘話とアーキテクチャ完全公開!」

Slide 34

Slide 34 text

GKE vs nginx/nghttpx ingress controller page 034 Create Ingress Resource GKE ingress controller Create Ingress Resource Create Ingress Controller Deployment Create HorizontalPodAutoscaler Create LoadBalancer Service Rewrite Ingress status for IP Addr nginx/nghttpx ingress controller 参考: https://adtech.cyberagent.io/techblog/archives/3758 「オンプレでも GKE Like な Ingress を使うために 自作 Ingress Controller を実装してみた」

Slide 35

Slide 35 text

GKE vs nginx/nghttpx ingress controller page 035 Create Ingress Resource GKE ingress controller Create Ingress Resource Create Ingress Controller Deployment Create HorizontalPodAutoscaler Create LoadBalancer Service Rewrite Ingress status for IP Addr AKE ingress controller 参考: https://adtech.cyberagent.io/techblog/archives/3758 「オンプレでも GKE Like な Ingress を使うために 自作 Ingress Controller を実装してみた」 Auto provisioning

Slide 36

Slide 36 text

04 Add-on mechanism for us Datadog, Prometheus ElasticSearch + Fluentd + Kibana Helm, Dashboard

Slide 37

Slide 37 text

ake addon mechanism page 037 Monitoring メトリクス監視、コンテナの監視 AKE では後からでも利便性の高い Add-on を追加できるようにしています Logging コンテナから出力される ログの蓄積 (今後は SaaS にも対応予定) Other dashboard Helm や dashboard、 その他ユーザの利便性向上に繋がるものを ワンクリックで利用可能に $ ake cluster addon \ --cluster amsy810 \ --enable datadog

Slide 38

Slide 38 text

05 Tuning for adtech system Network Kernel Kubernetes Hypervisor

Slide 39

Slide 39 text

Tuning for adtech system page 039 iptables 周りや Hash table サイズ、 connection 周りなどを中心にチューニング 今後は CNI 周りの検証も行い、更に高速化 Network tuning Kernel tuning ボトルネックとなりそうな箇所のチューニング 4.x 系で入ったパラメータも実施 Hypervisor tuning Over commit ratio = 1.0 Hyper Threading 以上のコア割り当てをしない Virtualization 周りもチューニング Kubernetes tuning Kubernetes Master の設定を変更できるため、 HPA の間隔やシステムへの割り当てリソースを調整

Slide 40

Slide 40 text

06 Multi Container Runtime (now planning) Docker containerd rktlet cri-o

Slide 41

Slide 41 text

AKE will support several container runtime page 041

Slide 42

Slide 42 text

cons pros Kubernetes Master の柔軟な設定 新しいバージョンが増えた際に 迅速に対応可能 特定のワークロードに向けた チューニングが可能 考えつくことはなんでも実現可能 実装コストが大きい 運用コストが少し大きい 内部実装を理解していないと危険 ハイブリットクラウド構成

Slide 43

Slide 43 text

ࣂ͍ओ͞Μืूத ʢWe are hiring!ʣ ͋͘ʔ͑

Slide 44

Slide 44 text

KubeCon 2018 EU ೔ຊަྲྀձ ˏίϖϯϋʔήϯ