OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
at OpenStack Days / Cloud Native Days 2018
CyberAgent, Inc
adtech studio
Strategic Infrastructure Agency
@amsy810
@makocchi
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
1. OpenStack上に展開する
Container as a Service を
本番で利⽤するために必要だったこと
CyberAgent / Adtech Division
Masaya Aoyama(@amsy810)
Makoto Hasegawa(@makocchi)
OpenStack Days Tokyo 2018
Cloud Native Days Tokyo 2018
5. CKA #150 / CKAD #5 / OPCEL
Contributing to OpenStack and Kubernetes
Bass
Makoto Hasegawa (@makocchi)
Infrastructure Engineer
6. OpenStack 上に展開する Container as a Service を本番で利⽤するために必要だったこと
TODAY’S AGENDA
CyberAgent, Inc
and
Adtech Studio
AKE
アドテク領域に
耐えうるネットワーク
and
利便性の⾼い
プラットフォーム
ROADMAP
まとめ
01 02 03 04 05
10. AKE
Container as a Service Platform
OpenStack Heat をベースとして⾃動 deploy
POINT #1
OpenStack Integrated な Container クラスタ
POINT #2
アドテク領域での利⽤に耐えうる環境
POINT #3
カスタマイズ性の⾼い環境
複数のオーケストレーター、ランタイム、アドオン
POINT #4
15. Pod Network
(Internal Network)
NIC NIC
IP: x.x.x.x IP: y.y.y.y
Kubernetesで起動されるPodのネットワークは外部から疎通性がない
外部のエンドポイントを作成するにはServiceが必要
#1 “type: LoadBalancer” with HW Load Balancer
Kubernetes Pod Network
VM Network
(External Network)
16. Pod Network
(Internal Network)
NIC NIC
IP: x.x.x.x IP: y.y.y.y
x.x.x.x:XX 宛のトラフィックが
各 Pod に転送される
“type: NodePort” Service
VM Network
(External Network)
#1 “type: LoadBalancer” with HW Load Balancer
17. “type: NodePort” Service
Pod Network
(Internal Network)
NIC NIC
IP: x.x.x.x IP: y.y.y.y
y.y.y.y:YY 宛のトラフィックも同様に
各 Pod に転送される
VM Network
(External Network)
#1 “type: LoadBalancer” with HW Load Balancer
18. “type: NodePort” Service + Manual LB
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 に転送される
NodePort
Manual LoadBalancer
#1 “type: LoadBalancer” with HW Load Balancer
25. SNAPTが必要 = DSR不可
#1 “type: LoadBalancer” with HW Load Balancer
NIC NIC
LoadBalancer
:30080 :30080
VIP: X.X.X.X:80
NIC NIC
LoadBalancer
:30081 :30081
VIP: Y.Y.Y.Y:80
26. SNAPTが必要 = DSR不可
#1 “type: LoadBalancer” with HW Load Balancer
NIC NIC
LoadBalancer
:30081 :30081
VIP: Y.Y.Y.Y:80
HAProxy
HAProxy
HAProxy
DSR
SNAPT
弊社の初期Kubernetes
27. “type: LoadBalancer” Service
#1 “type: LoadBalancer” with HW Load Balancer
01
02
03
04
スケール時にLBの操作が必要
Kubernetesで管理できない
IPアドレスの管理が必要
SNAPTが必要
NIC NIC
LoadBalancer
GCLB
IP: x.x.x.x IP: y.y.y.y
VIP: z.z.z.z
28. “type: LoadBalancer” Service
#1 “type: LoadBalancer” with HW Load Balancer
Kubernetes CloudProviderが機能を提供
GCP CloudProviderでは
PersistentVolume: GCP Persistent Disk
“type: LoadBalancer”: Google Cloud LoadBalancer
OpenStack CloudProviderでは
PersistentVolume: Cinder
“type: LoadBalancer”: Octavia
アドテク領域の⽤途では性能不⾜
35. Serviceリソース と Ingress リソース
#3 GKE-like Ingress Controller
Serviceリソース:L4 LoadBalancer Ingressリソース:L7 LoadBalancer
NIC NIC
LoadBalancer
NIC NIC
LoadBalancer
over TCP over HTTP
パスベースルーティング
SSL終端
etc
36. Serviceリソース と Ingress リソース
#3 GKE-like Ingress Controller
Serviceリソース:L4 LoadBalancer Ingressリソース:L7 LoadBalancer
NIC NIC
LoadBalancer
NIC NIC
LoadBalancer
over TCP over HTTP
パスベースルーティング
SSL終端
etc
37. Serviceリソース と Ingress リソース
#3 GKE-like Ingress Controller
Ingressリソース:L7 LoadBalancer
(オンプレ)
Ingressリソース:L7 LoadBalancer
(GKE)
LoadBalancer
NIC NIC
LoadBalancer パスベースルーティング
SSL終端
etc
NIC NIC
nginx-ingress
(L7処理を担当)
厳密にはLB > nginx-ingressの経路は複雑です
また、nginx-ingressは各ノードに複数Pod存在します
67. OpenStack上に展開する
Container as a Service を
本番で利⽤するために必要だったこと
CyberAgent Adtech Division
Masaya Aoyama(@amsy810)
Makoto Hasegawa(@makocchi)
OpenStack Days Tokyo 2018
Cloud Native Days Tokyo 2018
ご清聴ありがとうございました