More Related Content Similar to Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④ Similar to Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④ (20) More from Yahoo!デベロッパーネットワーク More from Yahoo!デベロッパーネットワーク (20) Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④2. 市川 博隆とは?
2010 〜 2014
ヤフー サイトオペレーション本部
ネットワーク運用/開発
[LB/GSLB/DNS/Backbone, LBaaS]
2014 〜
YJ America, Inc.(出向中)
インフラ全般(電気からクラウドまで)
3. カリフォルニア州 (ビジネス 2名、ビックデータ 1名)
ワシントン州 (インフラ 3名、アドミン 2名)
YJ Americaとは?
ヤフー株式会社の米国現地法人として2014年設立
サイトオペレーション本部から赴任(ボス, ネットワーク, サーバー)
25. 2. iBGPフルメッシュ + IPIPカプセル化
1. の課題をIPIPでノード間通信として扱い解決
カプセル化によるパフォーマンス劣化が懸念
27. Calicoネットワーク比較表
フルメッシュ フルメッシュ + IPIP ルートリフレクタ利用
外部からPODへのリーチ × × ◯
総BGPピア数
(M: RR, N: ノード数) △ N(N-1)/2 △ N(N-1)/2 ◯ MN
マルチネットワーククラスタ × ◯ ◯
トンネリング × ◯ ×
ルートリフレクタ利用構成を採用
29. パフォーマンス比較環境
Calico (メッシュ/RR利用)
MTU 1500
Host Node 1 (10.0.0.10)
Pod 1
172.16.0.1/32
Host Node 2 (10.0.0.11)
Pod 2
172.16.1.1/32
iperf
Calico (IPIP) MTU 1440
Host Node 1 (10.0.1.10)
Pod 1
172.17.0.1/32
Host Node 2 (10.0.1.11)
Pod 2
172.17.1.1/32
iperf
Tunnel Interface
172.17.0.0/32
Tunnel Interface
172.17.1.0/32
Flannel (VXLAN) MTU 1450
Host Node 1 (10.0.2.10)
Pod 1
172.18.0.2/24
Host Node 2 (10.0.2.11)
Pod 2
172.18.1.2/24
iperf
CNI Bridge
172.18.0.1/24
CNI Bridge
172.18.1.1/24
Flannel VTEP
172.18.0.0/32
Flannel VTEP
172.18.1.0/32
(CentOS 7.2 3.10.0-327.36.3 、Docker 1.11.2、 Kubernetes 1.4.4、Calico 0.23.0、Flannel 0.6.1)
同一Hypervisor, 異ノードVM上のPOD間通信でiperf(TCP)評価
32. Calico + kube-proxyで作るロードバランサ
LB Node
kube-proxy
k8s Node
Pods
kube-proxy
Applications
k8s NodePods
kube-proxy
Applications
Rotuer
iBGP peer
# route
blackhole <Cluster IP>
# iptables (POSTROUTING)
[SNAT]
dest: <Cluster IP>
snat to: <LB Node IP>
# Calico
{“ipam”: false, “cidr”: <Cluster IP>}
Redistribute cluster routes 下記3項目の設定を追加することにより動作
ヘルスチェックはk8sにてプロセス(POD)/L7監視を行う
①
②③
④
Calicoで管理するネットワークとしてCluster IPの
レンジを追加 PODにIPを払い出さないようIPAMを
無効にする
LBノードにパケットの吸込み設定を追加。Cluster
IPからPODへのDNATはkube-proxyが生成する
iptablesのルールによって行う。DSRはできないの
でSNATルールを追加し、PODからの戻りパケット
を受け取り、クライアントへ返送する
35. Kubernetes on OpenStack
kubelet
k8sMaster
Bare Metal / VM
Docker
etcd-proxy
Pods
kube-apiserver
kube-scheduler
kube-controller-manager
kubelet
k8sNode
Bare Metal / VM
Docker
etcd-proxy
Pods
kube-proxy
Applications
keystone
cinder
etcd
k8s cluster deploy
認証・認可:
Keystone連携で認証環境を統一
テナント情報をk8s namespaceへ
紐付け権限制御を実現
kubelet
k8sNode
Bare Metal / VM
Docker
etcd-proxy
Pods
kube-proxy
Applications
Persistent Volume
Authentication
Authorization
永続的ストレージ:
Cinder連携によりボリュームを
仮想マシン経由でPodへマウント
ネットワーク:
Kubernetes/OpenStack共に
シンプルでフラットなネットワーク
36. DevOpsツールチェーンにのせた全体構成
• Docker registry
• VM image
• etc
Application repo Master job controller
Docker
build
Packer
build
k8s master
Terraform
apply
Launch Jenkins slave pod
and execute job
hook
deploy artifacts
pull repository
track commit build result
CI/CD support Kubernetes Cluster
k8s master
Kubernetes Service Cluster A
deploy
VM/Bare metal
APPAPP
Cinder
Persistent
Volume
Keystone
Auth
Tenant Isolation
push
Launch Pod
pull image
k8s master
Kubernetes Service Cluster B
VM/Bare metal
APPAPP
Cinder
Persistent
Volume
Keystone
Auth
Tenant Isolation
Launch Pod
ChatOps
38. OKO(OpenStack on K8S on OpenStack)
TripleO (OpenStack On OpenStack)のアンダークラウド上に
Kubernetesをデプロイし、PODとしてオーバークラウドのOpenStackを構築
auto-healing機能による自動復旧
柔軟なクラスタ構築が可能
Over Cloud OpenStack
Controller VM
Under Cloud OpenStack
Bare Metalサーバー
Compute
Over Cloud OpenStack
Under Cloud OpenStack
Bare Metalサーバー
ComputeController POD
Bare Metalサーバー
Kubernetes