SlideShare a Scribd company logo
1 of 44
Download to read offline
サイバーエージェントにおける
プライベートコンテナ基盤AKEを支える技術
MasayaAoyama @amsy810
Masaya Aoyama
@CyberAgent [adtech studio]
MasayaAoyama @amsy810
Masaya Aoyama
@CyberAgent [adtech studio]
ぼくは
「あくー
え」
ぼくは
「青山 真
也」
サイバーエージェントにおける
プライベートコンテナ基盤AKEを支える技術
self
introduction
page
03
連載 「今こそ始めよう! Kubernetes入門」 @ThinkIT
Certified Kubernetes Administrator (CKA-1700-0138-0100)
OpenStack Active Technical Contributor
Masaya Aoyama
Infrastructure Engineer
MasayaAoyama @amsy810
あくーえ
Hobby == Kubernetes
Kubernetes のラズベリーパイ包み
“サイバーエージェント風”
イベントを盛り上げるため…プレゼント企画
page
05
Raspberry Pi 3 * 3
USB Charger 6 port 50W
4-Tier acrylic case
Switching hub
Wi-Fi AP
etc…
おうち Kubernetes の素
Ad Technology meets
Kubernetes
Target workloads of us
page
07
High Computing
Machine Learning を用いたモデル生成
GPU / 分散処理 などを積極的に利用
データセットは PB クラスに大規模
1 システムあたり
300,000 req/sec〜 をさばく
High Traffic
DSP システムにおいては
10 ms〜100 ms 以内にレスポンスを返す
Low Latency
Ad Technology のシステムは性能要件が非常にシビ
ア
page
08
“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)
History of AKE
Why “Adtech Container Engine” is implemented?
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.
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
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
our development is
growing fast
production environment!
Now 15 clusters
AKE Overview
How to create and release Kubernetes Cluster?
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 …
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 を実施
Key Features of AKE
GKE like container platform
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
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) をサポート
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
Kubernetes & Swarm
(Multi COE)
Kubernetes
Docker Swarm
etc…
Kubernetes & Swarm
(Multi COE)
page
023
Docker Swarm
シンプルな COE
Kubernetes
デファクトスタンダート
高機能な COE
type: LoadBalancer 相当の機能を実装
Kernel の Rebuild (for tuning)
OpenStack Integration
Keystone
Cinder
Designate
Heat
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
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 を
構築
Why we choose
on VM not baremetal?
page
027
Virtual Machine
Overhead が大きい
Baremetal
コンテナを詰めすぎると影響範囲が大きい
(コア数の少ない物理サーバで解消可能)
物理サーバのコア数に依存したクラスタサイ
ズ
マルチテナントではネットワークの分離が面
倒
自在な粒度で Node を切り出せる Overhead が少ない
High performance
L4 / L7 LoadBalancer
Baremetal Loadbalancer
GKE Like Ingress
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 に転送される
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 に転送される
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
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
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) 誕生秘話とアーキテクチャ完全公開!」
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 を実装してみた」
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
Add-on mechanism for us
Datadog, Prometheus
ElasticSearch + Fluentd + Kibana
Helm, Dashboard
ake addon
mechanism
page
037
Monitoring
メトリクス監視、コンテナの監視
AKE では後からでも利便性の高い
Add-on を追加できるようにしています
Logging
コンテナから出力される
ログの蓄積
(今後は SaaS にも対応予定)
Other
dashboard
Helm や dashboard、
その他ユーザの利便性向上に繋がるものを
ワンクリックで利用可能に
$ ake cluster addon 
--cluster amsy810 
--enable datadog
Tuning for adtech system
Network
Kernel
Kubernetes
Hypervisor
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 の間隔やシステムへの割り当てリソースを
調整
Multi Container Runtime
(now planning)
Docker
containerd
rktlet
cri-o
AKE will support
several container runtime
page
041
conspros
Kubernetes Master の柔軟な設定
新しいバージョンが増えた際に
迅速に対応可能
特定のワークロードに向けた
チューニングが可能
考えつくことはなんでも実現可能
実装コストが大きい
運用コストが少し大きい
内部実装を理解していないと危険
ハイブリットクラウド構成
飼い主さん募集中
(We are hiring!)
あくーえ
KubeCon 2018 EU 日本交流会
@コペンハーゲン

More Related Content

What's hot

AWS CURのデータを安く楽に可視化して共有したい
AWS CURのデータを安く楽に可視化して共有したいAWS CURのデータを安く楽に可視化して共有したい
AWS CURのデータを安く楽に可視化して共有したいTakayuki Ishikawa
 
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)NTT DATA Technology & Innovation
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
なるほどわかった!App Service on Linux
なるほどわかった!App Service on Linuxなるほどわかった!App Service on Linux
なるほどわかった!App Service on LinuxYasuaki Matsuda
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)NTT DATA Technology & Innovation
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPFShuji Yamada
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話imurata8203
 
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Suguru Ito
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)NTT DATA Technology & Innovation
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-Yuta Imai
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 

What's hot (20)

AWS CURのデータを安く楽に可視化して共有したい
AWS CURのデータを安く楽に可視化して共有したいAWS CURのデータを安く楽に可視化して共有したい
AWS CURのデータを安く楽に可視化して共有したい
 
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
なるほどわかった!App Service on Linux
なるほどわかった!App Service on Linuxなるほどわかった!App Service on Linux
なるほどわかった!App Service on Linux
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
 
データセンターネットワークでのPrometheus活用事例
データセンターネットワークでのPrometheus活用事例データセンターネットワークでのPrometheus活用事例
データセンターネットワークでのPrometheus活用事例
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
自宅k8s/vSphere入門
自宅k8s/vSphere入門自宅k8s/vSphere入門
自宅k8s/vSphere入門
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
 
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
 
AWSの課金体系
AWSの課金体系AWSの課金体系
AWSの課金体系
 
AWS CLIでAssumeRole
AWS CLIでAssumeRoleAWS CLIでAssumeRole
AWS CLIでAssumeRole
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 

Similar to サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術

OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったことOpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったことMasaya Aoyama
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...VirtualTech Japan Inc.
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"Masaya Aoyama
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたHideaki Aoyagi
 
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...Masaya Aoyama
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengewhywaita
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018Yoshio Terada
 
Kubernetesと閉域網
Kubernetesと閉域網Kubernetesと閉域網
Kubernetesと閉域網Han Li
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsYoshio Terada
 
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)Amazon Web Services Japan
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとはKoto Shigeru
 
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11Masaya Aoyama
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」Nobuyuki Tamaoki
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetupru pic
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
20220302_TechDojo_OpenShift_BootCamp_1章概要
20220302_TechDojo_OpenShift_BootCamp_1章概要20220302_TechDojo_OpenShift_BootCamp_1章概要
20220302_TechDojo_OpenShift_BootCamp_1章概要Airi Furukawa
 
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?IIJ
 

Similar to サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術 (20)

OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったことOpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 
Kubernetesと閉域網
Kubernetesと閉域網Kubernetesと閉域網
Kubernetesと閉域網
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
 
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
 
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
KubeCon Recap for Istio and K8s network performance @Kubernetes Meetup #11
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
 
Open Source x AI
Open Source x AIOpen Source x AI
Open Source x AI
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
vmware-meetup7
vmware-meetup7vmware-meetup7
vmware-meetup7
 
20220302_TechDojo_OpenShift_BootCamp_1章概要
20220302_TechDojo_OpenShift_BootCamp_1章概要20220302_TechDojo_OpenShift_BootCamp_1章概要
20220302_TechDojo_OpenShift_BootCamp_1章概要
 
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
 

More from Masaya Aoyama

ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1Masaya Aoyama
 
5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon Recap5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon RecapMasaya Aoyama
 
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...Masaya Aoyama
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Masaya Aoyama
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視についてMasaya Aoyama
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜Masaya Aoyama
 
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2Masaya Aoyama
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~Masaya Aoyama
 

More from Masaya Aoyama (8)

ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
 
5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon Recap5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon Recap
 
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視について
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
Certified XXX まわりのはなし Kubernetes Invitational Meetup #2
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
 

サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術

Editor's Notes

  1. 鈴木さん、ご紹介ありがとうございます。 サイバーエージェントにおける、プライベートコンテナ基盤AKEを支える技術についてお話したいと思います。
  2. 本日お話させていただくのは青山と、AKEのマスコットキャラクター「あくーえ」ちゃんです。 あくーえちゃんはこの日のためにステッカーも作ってきたので、良かったら持っていって下さい。 (クリスさんが居るなら) そして本日はCNCFの方もいらっしゃってるとのことなので、スライドは英語をなるべく取り入れています。 Mr Chris, who is member of CNCF, is here with us today, So my slides has little english.
  3. 軽く私の自己紹介をさせてください。 2016年に新卒で入社し、プライベートクラウドなど基盤インフラ周りの業務に従事しています。 ここ最近は、本日お話するAKEの実装を行ってきました。 実はこのAKE,2人がかりで実装しています。 他にも、ThinkITで K8s の連載をしているので、よかったらよんでください。 FB、Twitterの申請もお待ちしております。
  4. ちなみに私の最近の趣味はKubernetesです。 非常にフォトジェニックでインスタ映えのする、手のひらサイズのおうち Kubernetes、一家に一台ほしくないですか?ほしいですよね? 実は今日展示用に持ってきているので、受付エリアで見てみて下さい。
  5. さらに、イベントを盛り上げるためにおうちk8sの素をセットで用意してきたので、興味がある方は受付エリアにいってみてください。
  6. AKEの話をする前に、背景としてAKEが主に利用されているAdtechnology領域について説明させて下さい。
  7. アドテクはインターネット広告に関する事業です。 アドテク領域のシステムは、性能要件が非常にシビアになっています。 仕様上は100ms以内に応答しないといけないけど、これはネットワークの往復の遅延時間も含んでいるので一般的には50msが目安、某チームはピーク時でも25ms以内に抑えるように運用してる
  8. 弊社の特徴として、広告主側からメディア側までほぼすべてのアドテク領域をカバーしており、インターネット広告事業でNo1の売上を誇っています。 システム毎に様々なシビアな要件があるため、それらを満たすコンテナ基盤を作らなければならないという使命がありました。
  9. ちなみにアドテクスタジオでは、コンテナが大好きな人が多いです。 風土的に新しいものは積極的に触ってみて、よければ取り入れるという雰囲気が根付いています。 ちなみに、ここ1年でスタートした新規事業がいくつかあるのですが、いずれもGKEやAKEなどのKubernetes Platform を利用しています。 Local、Public、Onpremise
  10. まずはじめにAKEの概要として、歴史を振り返りたいと思います。
  11. ちょうど2年前あたりにコンテナの検証をし始めました。 先程お話したとおり、弊社のエンジニアは新しい技術が好きなので、私を含めコンテナに対する関心度は高かったため、コンテナ基盤を提供することにしました。 このときはK8s も Swarm も prd 利用できるか怪しい状態で、内部実装や Nemaspace/Iptables の実装把握などをしていました。 ちなみにこのときはまだDocker Swarm やK8s の覇権争いの真っ最中でした。
  12. 最新版のプライベートクラウド自体の新規構築も行い、そこにAKEを載せたため、約1年後、AKEを正式リリースしました。 ちなみにAKEは2人で実装しています。 去年の07月くらいになると k8s 1.7 がリリースされ、Cinder Integration の動作が安定化しました ちなみに k8s 1.7 から production ready と宣言
  13. 後ほど詳しく紹介しますが、Kubernetesを利用するに辺り必須ともいえる LoadBalancer と Ingress の独自実装を行いました。 LB については、OpenStack の Lbaas である octavia は性能面でアドテク領域の利用に耐えられないため、ハードウェアのLBと連携する実装を K8s にパッチを当てて実現しています。 Ingress については、仕様や実装がいまいち定まっておらず、GKEのIngressとnginx-ingressなどで利用方法が大きく異なります。 弊社ではGKEを使っているプロジェクトが多い点、GKE Ingress が非常に使い勝手が良い点から GKE Like な Ingress Controller を独自実装して利用しています。
  14. そしていま、AKEは production で利用されています。 現状では XXX cluster 程度利用されています。
  15. このAKEにはスケーリングなどの基本的な機能を始めとして、様々な機能が実装されているのですが、今回はKeyとなる機能を紹介します。
  16. 今回ご紹介する機能は6個あります。
  17. AKE では Swarm と K8s の両方を対応しています。 ただし、今回の発表では、デファクトスタンダートともなったK8sについての発表を行います。 Swarmも、弊社の中で一部プロジェクトは使っているケースがあります。 Swarmでは、type LoadBalancer のような外部の LB と連携するような仕組みはありませんでしたが、AKEの環境ではその部分も作り込まれており、type LB 相当のことができるようにしてあります。 ほかにも、カーネルの一部変数をいじってリビルドしたカーネルを利用するなど、Swarmも利便性の向上やパフォーマンスチューニングを施しています。
  18. Storage driver 周り