SlideShare a Scribd company logo
Rancher2.0で実現する
Managed Kubernetes Service
LINE Corporation, Verda2 Yuki Nishiwaki
Our KaaS?
Rancherの採用に到るまで
理想と現実 (2018年6月)
Web Application Engineer: ちょっと
Kubernetes Engineer: いっぱい
Etcd Engineer : ちょっと
OpenStack Engineer: 0.6 人
Web Application Engineer: 0.6 人
Frontend Engineer: 0.5人
Deployment? Configuration? HA? Monitoring?...
● Kubernetes/Etcdの仕組みの深い理解
● KubernetesにおけるHA設定
● Kubernetesのデプロイの自動化
● EtcdにおけるHA設定
● Etcdのデプロイの自動化
● 設定のチューニング
● 障害時の対処の仕方
● 監視すべき項目の整理
● バックアップすべきデータ /設定の整理
● 管理に必要な情報の整理
● 管理するためのソフトウェアの開発
● 新しいバージョンの機能検証
・
・
リリースまで何年かかるの?
OSS利用の検討
● OpenStack L3サービス利用の前提
● 強いVMイメージの制約
● 積極的なOpenStackサービスの利用
● 開発コミュニティが活発でない
● 社内実績なし
● VMが作れてSSHできればOK
● ゆるいイメージ制約
● OpenStackサービスに依存しない
● 今は活発にみえる
● 社内のプロダクション運用実績
OSS利用の検討
● OpenStack L3サービス利用の前提
● 強いVMイメージの制約
● 積極的なOpenStackサービスの利用
● 開発コミュニティが活発でない
● 社内実績なし
● VMが作れてSSHできればOK
● ゆるいイメージ制約
● OpenStackサービスに依存しない
● 今は活発にみえる
● 社内のプロダクション運用実績
● OSSを利用する
● OSSはきちんと動くと思い込む
● 開発業務はない
OSSは利用するが、OSSは信用しすぎない
信用する?
OSS
Blackbox
Clusterはきっと冗
長構成だよ
Clusterはきっと
Rancherが面倒みて
るよ
Clusterはきっと簡
単にUpgradeでき
るよ
OSSは利用するが、OSSは信用しすぎない
信用しない?
OSS
Whitebox
どういう仕組みで
Clusterは作成され
るのか
Rancherはどこま
でClusterの面倒を
みるのか
Community Contribution from Our Team
● Pull Requests
○ Rancher (8件)
■ https://github.com/rancher/norman/pull/201
■ https://github.com/rancher/norman/pull/202
■ https://github.com/rancher/norman/pull/203
■ https://github.com/rancher/machine/pull/12
■ https://github.com/rancher/types/pull/525
■ https://github.com/rancher/rancher/pull/16044
■ https://github.com/rancher/rancher/pull/15991
■ https://github.com/rancher/rancher/pull/15909
○ Ingress-Nginx (1件)
■ https://github.com/kubernetes/ingress-nginx/pull/3270
● Issue
○ Rancher (8件)
● Presentation/Material
○ https://github.com/ukinau/rancher-analyse
○ Rancher 2.0 の実装とNormanの紹介
○ Rancher 2.0 の実装の概要
バグ修正、バグレポート等 解析資料の公開等
Rancherをどのように利用しているのか?
本題
Rancher 2.X
● 複数のKubernetesクラスタを作成、管理するためのソフトウェア
● Kubernetes Operator Patternを用いてCluster/Nodeの管理を実現
○ 全てのリソースがKubernetesのリソースとして表現される
API Controller
ClusterA
Watch
Reconcile
Get latest
information from
kube-apiserver
Check if any difference
Between desired and
actual states
Do something to make actual state desired
Reconcile
Loop
Kubernetes Cluster
Cluster Agent
Node AgentCreate
Rancher +αでManaged Kubernetes Serviceを実現
API Server
● Private Cloudとの連携
● Rancherの機能を制限
● 複数Rancherサーバに対応
User Kubernetes Cluster
● Rancherによってデプロイされる
● OpenStackのVMにデプロイされる
● Worker数以外のClusterの構成を固定
Rancher +αでManaged Kubernetes Serviceを実現
Rancher
● ここの深堀りが今日のメイントピック
僕らが、Rancherでできるに期待していること
● Cluster/Nodeの作成、削除
● Clusterがきちんと作成できたのかの検証
● Clusterの継続的な監視、状態の反映
● 特定の故障パターンの自動復旧
● Clusterの安全なアップグレード
● Cluster上で動かすAdd-onの管理
・
・
・
Kubernetesを簡単に利用できるようにする
ある程度決められた条件で、
Kubernetesを簡単に運用できるようにする
僕らが、Rancherでできるに期待していること
● Cluster/Nodeの作成、削除
● Clusterがきちんと作成できたのかの検証
● Clusterの継続的な監視、状態の反映
● 特定の故障パターンの自動復旧
● Clusterの安全なアップグレード
● Cluster上で動かすAdd-onの管理
・
・
・
ある程度決められた条件で、
Kubernetesを簡単に運用できるようにする
Kubernetesを簡単に利用できるようにする
自信を持っておすすめできる機能
実装済みだが、追加でさらに検証が必要そうな機能
実装されていな機能
カスタマイズを前提にRancherの利用を決断
● 全てがすでに実装されていることは最初から想定していない
● 必要最低限の機能実装と今後の方向性があっているのであれば良い
● 足りない部分、バグの修正など、自分たちも実装に参加
公式Dockerイメージは、使わず
自分たちでPatchを当てたイメージを作成し、運用している
Rancher Image Pipeline
rancher/rancher
LINE/rancher
base commit id
patches
Create Patch
patch
patch
Pull Requests
Run Job
Check out base commit
● Apply patch
● Run Test
● Build image
● Push to registry
Github Enterprise
Github
Jenkins
Docker Registry
● Update manifest
● Run Integration Test
Pull new image
old new
どのようなパッチを当てているのか
● Rancherの内部ステートをモニタリングするための機能追加
○ 全ての変更はまだ、提案できていない
○ 一部UpstreamでMergeされている (https://github.com/rancher/norman/pull/202)
● 複数のバグ修正
○ Upstreamに提案済みのもの
○ すでにマージされているが、利用バージョンではまだマージされていないもの
/metrics エンドポイントの追加
Upstream Rancher
LINEで運用している Rancher
内部ステート監視のモチベーション
● Rancherサーバの障害の影響範囲は小さくない
○ Cluster、Nodeの作成ができなくなる
○ Cluster、Nodeの正常性の管理ができなくなる
○ Clusterに対してKubernetes APIが叩けなくなる
● 障害についてきちんと内部で何が起きているか把握したい
○ スケールが原因の障害には予兆があることが多い
○ ログのみから内部の情報を把握するのは難しい
○ 内部情報は、バグ修正の役に立つことが多い
Rancher API部分の重要な内部ステート
Kubernetes API Latency (from client-go)
● Rancherが扱うデータは全て、 Kubernetesのリソースとして保存される
● Rancher APIは、Kubernetes API Proxyのように振舞っており、全ての Rancher APIリクエストの裏側では、
複数のKubernets APIが呼び出されている
● 遅延の多い APIリクエストを特定、改善に役立つ
WebSocket Session Informations for Agents
● 全てのRancher Agentは、Rancher Serverに対してWebSocket Sessionを確立すると期待されている
● Rancher Serverがデプロイ済みのClusterの管理のために、Clusterや特定のNodeのDockerにAPIリクエスト
を実施したいとき、WebSocket Session越しで提供されるTCP Proxyを利用する
● Rancherからデプロイされたクラスタに対する APIリクエストも実は、上記の TCP Proxy機能を使って実現さ
れている
=> WebSocket Sessionが不安定だと、クラスタ管理、クラスタの利用に多大な支障がでる
Rancher Controller部分の重要な内部ステート
Handler Total Execution/Total Failure
● Rancherでは、ほとんどのビジネスロジックが Norman Frameworkを用いて実装されている
● Norman Frameworkは、Custom ControllerのFrameworkで、Kubernetes Clientと複数の
Function(Handlerと呼ばれる) を1つのCustom Controllerに登録できる
● 登録されたKubernetes Clientがリソース変化を検知すると、登録された全ての Handlerが実行され、1つで
もHandlerの実行に失敗すると、時間を置いてからリトライされる
● どのHandlerがどれくらいの頻度で呼ばれているのか、失敗しているのか把握することでバグの発見やトラ
ブルシューティングに非常に有効
Each Controller’s Queue Metrics (from client-go)
● Norman Frameworkは、client-goのラッパーなので、client-goより提供されるQueue滞在時間や1つのkey
処理時間などの把握も有効
どんな感じ?
Websocket Sessionが確立できていないノード、クラ
スタが表示される。
 => 長期的に接続が切れているものが検出可能
直近5分間で接続と切断が行われた
クラスタ、ノードが表示される。
=> 頻繁に接続が切れているものが検出可能
どんな感じ?
2分間の間で実行された Handlerの回数が表示される。
どのような処理がRancherの中でよく実施されているかが
分かる
2分間の間で実行された Handlerで失敗したものとその時評価し
ていたリソースのkeyが表示される。
=> 失敗したHandlerとKeyが分かるので、ログと合わせてトラブ
ルシューティングの効率が上がる
Rancherを採用してみて
実際どうだったか
よかったこと
● リードタイムをかなり短縮できた
○ 2018年6月に2人でプロジェクトを開始し、 11月にβ版として社内提供まで
● 少数クラスタ管理を前提にすれば、今のままでも十分活用できると思う
○ KaaSのバックエンド以外にも、弊社でプロダクションで運用されている事例はいくつかある
● 数少ないOperator Patternを使ったManaged KubernetesのOSS実装  
● Kubernetesの使い方、デプロイのされ方など、立ち上がりには十分なほどの知見が
Rancherを解析した結果得ることができた
少し苦労した(している)こと
● ドキュメントがとにかく少ない = コードを読むしかない
○ 社内でのナレッジ共有コストがとにかく高い(属人化のリスク)
● 大丈夫と思ったオペレーションに危険が潜んでいる
○ イメージアップデートをすると、 1-5分の間クラスタに対する APIが叩けなくなる(デザイン)
● 様々な機能が実装されているため、障害が起きた時の原因の特定が難しい
○ この点は、モニタリングカスタマイズでかなり改善された
● クラスタステートの扱いがあまり重要視されていない
○ https://github.com/rancher/rancher/issues/15907
● クラスタ数増加に伴って判明した、タイミング起因のバグ
○ 750ノード作成した際に、一部 Pod間通信ができなくなる
(https://github.com/rancher/rancher/issues/13644)
○ 特定の条件でNodeの作成に失敗した際に、リトライされない
(https://github.com/rancher/rancher/issues/14933)
少し苦労した(している)こと
● ドキュメントがとにかく少ない = コードを読むしかない
○ 社内でのナレッジ共有コストがとにかく高い(属人化のリスク)
● 大丈夫と思ったオペレーションに危険が潜んでいる
○ イメージアップデートをすると、 1-5分の間クラスタに対する APIが叩けなくなる(デザイン)
● 様々な機能が実装されているため、障害が起きた時の原因の特定が難しい
○ この点は、モニタリングカスタマイズでかなり改善された
● クラスタステートの扱いがあまり重要視されていない
○ https://github.com/rancher/rancher/issues/15907
● クラスタ数増加に伴って判明した、タイミング起因のバグ
○ 750ノード作成した際に、一部 Pod間通信ができなくなる
(https://github.com/rancher/rancher/issues/13644)
○ 特定の条件でNodeの作成に失敗した際に、リトライされない
(https://github.com/rancher/rancher/issues/14933)
とはいうものの、
KaaSのベースソフトウェアとして
十分な価値が発揮できていると思っている
これから期待していること
● ~100, ~1000クラスタの管理を見据えたさらなるオペレーションの自動化
○ クラスタ向けテストとテスト情報の管理
○ クラスタ向けの監視、監視情報の Cluster Stateへの反映
○ 特定の故障からのセルフヒーリング
○ 自動バックアップと1 API Callリカバリ
=> クラスタを直接意識して、何かを設定、オペレーションする機会をもっと減らしたい
● スケーラビリティに関する改善
○ Rancher 2.1 でようやく2つ以上のRancher Serverのデプロイが可能になった
○ Rancher 2.X でRancher Serverのメモリ使用量の大幅な改善
=> この調子で1つRancherクラスタでなるべく多くの k8sを管理したい
ライセンス
Jenkins ならびに Jenkins CIは、Jenkins (http://jenkins-ci.org/)に帰属します。また、 Creative
Commons Attribution 3.0 Unported licenseに従い、利用しています。

More Related Content

PDF
LINE Engineerを支える CaaS基盤の今とこれから
PDF
Dockerfileを改善するためのBest Practice 2019年版
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
PPTX
コンテナネットワーキング(CNI)最前線
PDF
containerdの概要と最近の機能
PDF
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
LINE Engineerを支える CaaS基盤の今とこれから
Dockerfileを改善するためのBest Practice 2019年版
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
コンテナネットワーキング(CNI)最前線
containerdの概要と最近の機能
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー

What's hot (20)

PDF
10分でわかる Cilium と XDP / BPF
PDF
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
BuildKitの概要と最近の機能
PDF
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
PPTX
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
PDF
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
PDF
レシピの作り方入門
PPTX
急速に進化を続けるCNIプラグイン Antrea
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PPTX
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PPTX
VPP事始め
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
PDF
DBスキーマもバージョン管理したい!
PDF
PostgreSQL実行計画入門@関西PostgreSQL勉強会
PDF
L3HA-VRRP-20141201
PDF
Kibanaでsysstatを可視化する
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
TripleO Deep Dive 1.1
PDF
OpenStack Octavia入門
10分でわかる Cilium と XDP / BPF
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
BuildKitの概要と最近の機能
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
レシピの作り方入門
急速に進化を続けるCNIプラグイン Antrea
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VPP事始め
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
DBスキーマもバージョン管理したい!
PostgreSQL実行計画入門@関西PostgreSQL勉強会
L3HA-VRRP-20141201
Kibanaでsysstatを可視化する
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
TripleO Deep Dive 1.1
OpenStack Octavia入門
Ad

Similar to Rancher2.0で実現する Managed Kubernetes Service (20)

PDF
NGINX Instance Manager Tames the Sprawl (Japanese version)
PDF
Next.jsでの開発を加速させるVercelとNext.js/App Routerの便利な機能たち
PDF
Gitと出会って人生変わった テックヒルズ2013-03-22
PDF
20201127 .NET 5
PPTX
Rails on GKEで運用するWebアプリケーションの紹介
PPTX
Fluentd1.2 & Fluent Bit
PDF
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
PDF
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
PPTX
話題のKubernetesをRancher2.0で 便利に使う!
PPTX
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
PDF
NGINX製品の最新機能アップデート情報
PDF
Hajimete k3s agenda_201008
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PPTX
Introduction of Kubernetes & Rancher
PDF
Dotnetcore30forwindesktop
PDF
Kubernetes1.9でWindowsコンテナーをクラスタ化
PDF
Hajimete k3s agenda_200730
PDF
New Relic University ワークショップ@東京へのご招待
PDF
オープニング
PDF
k8sとOpenShiftの違いとは.pdf
NGINX Instance Manager Tames the Sprawl (Japanese version)
Next.jsでの開発を加速させるVercelとNext.js/App Routerの便利な機能たち
Gitと出会って人生変わった テックヒルズ2013-03-22
20201127 .NET 5
Rails on GKEで運用するWebアプリケーションの紹介
Fluentd1.2 & Fluent Bit
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
話題のKubernetesをRancher2.0で 便利に使う!
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
NGINX製品の最新機能アップデート情報
Hajimete k3s agenda_201008
はてなにおける継続的デプロイメントの現状と Docker の導入
Introduction of Kubernetes & Rancher
Dotnetcore30forwindesktop
Kubernetes1.9でWindowsコンテナーをクラスタ化
Hajimete k3s agenda_200730
New Relic University ワークショップ@東京へのご招待
オープニング
k8sとOpenShiftの違いとは.pdf
Ad

More from LINE Corporation (20)

PDF
JJUG CCC 2018 Fall 懇親会LT
PDF
Reduce dependency on Rx with Kotlin Coroutines
PDF
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
PDF
Use Kotlin scripts and Clova SDK to build your Clova extension
PDF
The Magic of LINE 購物 Testing
PPTX
GA Test Automation
PDF
UI Automation Test with JUnit5
PDF
Feature Detection for UI Testing
PDF
LINE 新星計劃介紹與新創團隊分享
PDF
​LINE 技術合作夥伴與應用分享
PDF
LINE 開發者社群經營與技術推廣
PDF
日本開發者大會短講分享
PDF
LINE Chatbot - 活動報名報到設計分享
PDF
在 LINE 私有雲中使用 Managed Kubernetes
PDF
LINE TODAY高效率的敏捷測試開發技巧
PDF
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
PDF
LINE Things - LINE IoT平台新技術分享
PDF
LINE Pay - 一卡通支付新體驗
PDF
LINE Platform API Update - 打造一個更好的Chatbot服務
PDF
Keynote - ​LINE 的技術策略佈局與跨國產品開發
JJUG CCC 2018 Fall 懇親会LT
Reduce dependency on Rx with Kotlin Coroutines
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Use Kotlin scripts and Clova SDK to build your Clova extension
The Magic of LINE 購物 Testing
GA Test Automation
UI Automation Test with JUnit5
Feature Detection for UI Testing
LINE 新星計劃介紹與新創團隊分享
​LINE 技術合作夥伴與應用分享
LINE 開發者社群經營與技術推廣
日本開發者大會短講分享
LINE Chatbot - 活動報名報到設計分享
在 LINE 私有雲中使用 Managed Kubernetes
LINE TODAY高效率的敏捷測試開發技巧
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE Things - LINE IoT平台新技術分享
LINE Pay - 一卡通支付新體驗
LINE Platform API Update - 打造一個更好的Chatbot服務
Keynote - ​LINE 的技術策略佈局與跨國產品開發

Rancher2.0で実現する Managed Kubernetes Service