SlideShare a Scribd company logo
1 of 27
Download to read offline
©Internet Initiative Japan Inc. ‐ 1 ‐‐ 1 ‐
寺田 充毅
Rancher/k8sを利用した運用改善の取り組み
©Internet Initiative Japan Inc. ‐ 2 ‐‐ 2 ‐
自己紹介 & チーム紹介
 名前:寺田 充毅(Michitaka Terada)
 仕事:オブジェクトストレージの開発、運用
 会社:株式会社インターネットイニシアティブ
 部署:IoTビジネス事業部 プラットフォーム開発課
 趣味:
バードウォッチング
農業
ギター演奏
©Internet Initiative Japan Inc. ‐ 3 ‐‐ 3 ‐
IIJオブジェクトストレージサービス
 内製のs3互換ストレージ
 サービスを構成する各AppがREST APIでつながっている
 サーバ台数は二ケタ前半
 今日はこのサービスの新リージョンを構築する際にトライしたことを話します
フロントサーバ(外部向けREST API)メタデータ管理
契約管理 分散ファイルシステム
インターネット
分散DB
©Internet Initiative Japan Inc. ‐ 4 ‐‐ 4 ‐
今回のテーマ
Kubernetesの初心者チームがオンプレミスに
Kubernetesを構築し、現行サービスをマイグ
レーションさせるまでの試行錯誤を共有する
©Internet Initiative Japan Inc. ‐ 5 ‐‐ 5 ‐
動機
©Internet Initiative Japan Inc. ‐ 6 ‐‐ 6 ‐
k8sをサービス基盤に使う動機
 直面している問題
• 本番とステージングの差異に起因するデプロイ事故の頻発
• バージョンアップで内部APIのインタフェース齟齬が起き障害発生
• バージョン推移で初めて気が付く失敗
• 複数の社内基盤に対応出来るポータビリティの確保が必要になった
 今回の解決手段
• デプロイの改善&試験強化
• デプロイ、試験を自動化して組合せ試験の強化
• Blue/Greenの導入による障害時間の短縮
• テストをした組み合わせ一式を丸ごとデプロイすることで事故を減らす
• インフラとアプリの間に層(k8s)を導入して基盤を抽象的に扱う
 APIの設計改善、品質保証の強化でもアプローチするべきだが、今回はデプロ
イで解消する方向
©Internet Initiative Japan Inc. ‐ 7 ‐‐ 7 ‐
Kubernetes(k8s)を基盤に使う?
 2017年の秋ぐらいから検討開始
 経験値0なので、まずは検証から
• アークテクチャ(方式)は作りながら試行錯誤で進めて行った状況
プロトタイピング
(コンテナ化、manifest)
k8s構築技術の確立
性能試験、安定性試験
k8sに対する学習
方式検討/設計/実装
性能試験
アプリマイグレーション
(helm化とか)
障害試験
基盤設計
(サーバ、NW)
セキュリティ設計
機能試験k8s構成設計
監視設計
検証 構築/実装 試験
ロングラン
CI/CD
ログ収集
リポジトリ ボリューム管理
©Internet Initiative Japan Inc. ‐ 8 ‐‐ 8 ‐
検証編
©Internet Initiative Japan Inc. ‐ 9 ‐‐ 9 ‐
k8s構築技術の確立
 基盤
• ほぼオンプレミスの自社クラウド
• 社内のk8s環境の検討は走っていたが、オブジェクトストレージを実装できるI/O性能、
NW性能は無さそうだったので除外
 どうやってk8sを構築するか
• 構築ツール候補:kubeadm, kubespray, RKE etc
• 要件
• とにかく簡単であること
• オンプレのingressどうするのか問題をクリアしている
• HA構成を構築できる
• ドキュメント調査してRKEを第一候補に
 RKEより下のレイヤをどう構築するか?
• TerraformとAnsibleを利用
• 自社クラウド用のRancherドライバを以前は開発、利用していたがこののころは不透
明だったので除外
©Internet Initiative Japan Inc. ‐ 10 ‐‐ 10 ‐
k8s構築技術の確立
 RKEでCluster Networkが構成出来ない問題に直面(flannel)
 今回は複数面NWがある構成
• グローバルセグメント、内部セグメント、管理セグメント
• Cluster Networkは内部セグメントで通信させたかった
• IaaSの仕様上、デフォルトGWは管理セグを向いている
 この環境だと内部セグを指定してRKE upしても通信が成立しない
• RKEの設定を試行錯誤(advertise addressを追加)
• これだけではダメでStatic Routingの設定も必要
• 複雑な面構成のNWは構築時点で挫折しやすい
 何かを使うときはスコープを明確にしないとハマる
• k8sは要件を満たすNWをCluster Networkとして使うというスタンス
• RKEはCluster Networkの構成をしてくれるが、さらに下のIP NWのレイヤーは面倒を
見てくれない
 このあたりから、k8sを動かす、かつ安定に動かすにはホストやDockerを適
切に構成する必要がある点を理解し始める
• Ansibleで頑張る
©Internet Initiative Japan Inc. ‐ 11 ‐‐ 11 ‐
プロトタイピング – アプリをk8sに載せる
 Kubernetes力が足りない
• 日本語の書籍もまだ(あまり)なかった
• 勉強会に参加したり、ドキュメント読んだり色々な手段で情報収集
• 幸い環境は立ったので、触りながらStep by Stepで覚えていった
• チームの所帯が小さく、かつプロトをやっていたのは2人だけだったので、内部の共有
等無く、ひたすら試して学ぶ
 最初から無理をしないことを心掛けた
• 最初はliveness probeも、resource limitなども書かず、ただdeployするだけのシンプ
ルなマニフェストを書く
• kubectl editで実験してmanifestに書き戻す
• おそらく皆さんこんな感じ?
• helmは存在を知ってはいたが手を付けず
©Internet Initiative Japan Inc. ‐ 12 ‐‐ 12 ‐
プロトタイピング – アプリをk8sに載せる
 もともとREST APIで接続されている構造
 Liveness probe相当も実装済み
 DNSラウンドロビンでAPI間の通信の冗長性、負荷分散を実施
• この仕組みはk8sと相性がよくKubernestesのDNSを使うように変更
 Java
• Heapの状態、GCの状態の収集はJMX exporterで収集
• サイドカーで載せている
• JVMのメモリ使用量は気になるものの、コンテナに詰めるにあたり1つあたりのheap量、
スレッド数を小さくする方向で調整
• プロセス落ちた際の影響範囲の範囲を狭める
• k8sのスケジューリング機能との相性(大きいものははめ込みずらい)
JVM
アプリ
DNS
監視プ
ラグイン
JVM
アプリ
死活監視
名前引いて..
呼び出す
munin
JVMの情報収集
JVM
アプリ
k8s
Liveness probe
名前引いて..
呼び出す
promethesus
JVMの情報収集
JMX
exporter
JVM
アプリ
JMX
exporter
©Internet Initiative Japan Inc. ‐ 13 ‐‐ 13 ‐
性能試験、安定性試験
 k8sで本当にストレージサービス提供できるのか、材料を集める
• 性能、安定性をまずは検証し判断をしたい
• 耐障害性は、アプリとk8sの組み合わせで実現するべきだと考えており、この時点では
追い込まなかった
 ネットワーク性能の基礎値を取得
• iperfを使って比較
• MSSを小さくした場合(ショートパケット風)、ホストNWより性能が落ちるが、今回の
通信要件では問題無いと判断
©Internet Initiative Japan Inc. ‐ 14 ‐‐ 14 ‐
性能試験、安定性試験
 ストレージの性能測定
• クラスタ外部に分散ファイルシステムを構築
• ホストに直接マウントして読み書きするパターンと、k8sでマウントしてコンテナから
読み書きするパターンを比較
• 仕組みとしては、ホストへのマウントを手動でやるのか、k8s(CSIドライバ)がやるか
の差でしかなく、当然ながら性能差は無かった
 安定性試験、アプリも含めた性能試験
• アプリケーションをk8sに載せて負荷をかけて試験を実施
• 24時間連続稼働しておかしなことが起きないか確認
• これが思いのほか苦戦
• dockerのワークディレクトリの見積もりミスでdisk pressureでeviction
• Javaのヒープサイズでresource limitを設定してkillされる
• スケジューラの制御方法がわからず、配置ガチャ状態
• resource limit / requirement、affinityなど学びながら設定して何とか動くように
©Internet Initiative Japan Inc. ‐ 15 ‐‐ 15 ‐
結論:k8sでオブジェクトストレージサービス 動かせる
 Rancher 2.0 Nightというイベントで話をした際の、この図のようなアーキ
テクチャで進める
カタログに
よるデプロイ
k8sクラスタ
の構築
分散データベース
インターネット
分散ファイルシステム
本番
ステージング
自社クラウド基盤上
(略)
Blue/Green
©Internet Initiative Japan Inc. ‐ 16 ‐‐ 16 ‐
方式検討編
©Internet Initiative Japan Inc. ‐ 17 ‐‐ 17 ‐
CI/CDパイプラインの検討
 取り組みの当初
• CIパイプラインがあったが活用されていない状態
• コードによるUT、ITは完備されているが自動実行はUTまで
 人間系も含めてフローをかなり詳細に設計した
• これが失敗のもと
 理想が高すぎ、完成まで至っていない
• 小さく始める原則に沿ってなかった
• 個々の要素の接続は完了しておりあとはパイプラインを作るだけ(なのだが)
 自動化 = 総合力の勝負
• UT、ITの自動化
• モジュール設計、リポジトリへの格納単位の設計
• バージョン戦略
• フロー設計 etc..
©Internet Initiative Japan Inc. ‐ 18 ‐‐ 18 ‐
CI/CDパイプラインの検討
 ツール
• 候補はGitLab、Concourse CI、spinnaker
• 実際に触ってみて感触の良かったGitLabでCIまで、Concourse CIで後半の工程を行う
想定で開始
 Concourse CIですべて実装する結論に
• Concourse CI が柔軟で、GitLabと役割分担する理由が特になかった
 開発支援系のツールにもk8sを実行基盤にするものが多い
• 今日のテーマであるRancher(Server) もその一つ
• 運用用のk8sをサービス稼働用とは別に構築してツールはそこに載せることに
 運用用k8sに載せているもの
• Ansible AWX
• Concourse CI
• Rancher
• (Longhorn)
©Internet Initiative Japan Inc. ‐ 19 ‐‐ 19 ‐
CI/CDパイプラインの検討 - 全体像
 Concourseをコアにビルドが流れる
 最終的な本番へのデプロイ指図、切り替えは人間
Gitlab
運用 k8s Hosts
k8s Hosts(Stg)
運用 k8s Hosts
運用k8s
運用k8s
Concourse
サービス k8s
Docker
レジスト
リ
アプリ
作業用 Host
Rancher
CLI
ソース
コード
image push
コード取得
デプロイ(helmカタログを利用)
build & test
helm
repo
k8s Hosts(本番)
サービス k8s
アプリ
ステージへのデプロイ
(ITは図として略)
image pull
定義情報の取得
定義情報
の取得
デプロイ&ingress切り替え
デプロイ&ingress
切り替え操作
git push
Rancher Server
©Internet Initiative Japan Inc. ‐ 20 ‐‐ 20 ‐
k8s適用範囲の検討 - どこまでk8sに載せるのか?
 勉強会等で話を聞くと会社、案件によってまちまち
 データのような重みのあるものをどう考えるか
App
サーバ
DB 分散FS DNS
ログ
収集
可視化 プロキシ
k8s
全部のせ?
App
サーバ
DB 分散FS DNS
ログ
収集
可視化 プロキシ
k8s k8s
データを管理するものは全部外にする?
App
サーバ
DB 分散FS DNS
ログ
収集
可視化 プロキシ
k8s
最小限でもいいのか?
©Internet Initiative Japan Inc. ‐ 21 ‐‐ 21 ‐
k8sの適用範囲の検討
 ホストの役割を分類
• アプリケーションサーバ
• データサーバ(DB、分散FS)
• ユーティリティ
• DNSキャッシュサーバ、NTPサーバ等サービスのリクエストが直接流れないサーバ群
• 運用
• 踏み台とか、プロキシとか
 変化のスピード、頻度を検討
• データ、ユーティリティ、運用は変更の適用頻度が低い
• バージョンアップ、セキュリティfixの適用がメインで設定変更もほぼ無い
• 結局ホストへのfix適用というタスクは残る
• アプリケーションは変更の適用頻度が高い(適用速度上げたい)
 スケールアウトの有無による検討
• 顧客要求に応じてスケールアウトが必要なレイヤはアプリケーションサーバのみ
 我々の結論:アプリケーションだけ乗せる
©Internet Initiative Japan Inc. ‐ 22 ‐‐ 22 ‐
監視、ログ収集
 ログ収集はk8sのスコープ外
• Docker管理下のログをfluentdで収集して集める
• 公式ドキュメントに記載がある
• 通常のログの確認は、Rancher GUIかSternでやることが多い
• アプリのDebugはStern
 メトリクスの収集&監視
• 多層化している状況
• Podの監視はPrometheusで
• 現状これを超えるものはない
• ホストの監視はIIJ内製の監視基盤
• KubernetesのAPI
• 監視基盤の監視はIIJの監視サービスで監視
©Internet Initiative Japan Inc. ‐ 23 ‐‐ 23 ‐
監視、ログ収集
 RancherのMulti Tenant Prometheus機能は未使用
• Rancher使わずPrometheus Operatorで導入当時
• 現在運用k8sに導入済みで、本番利用検討中
 ここまでやるのは運用負荷を考えるとお勧めしない
内製監視システム用 Hosts
IIJ内製監視システ
ム
k8s Hosts
サービス k8s
アプリPrometheus
Prometheusは同一クラスタに置いているが、affinityを使ってア
プリとは別のホストに入るようにしている
IIJ統合運用監視サービス
APIサーバ
死活監視
ホストの監視
(SNMP)
ホストの監視
(SNMP)
APIキックで
メール、架電
IIJ内製メトリクス
収集ツール
SNMP情報収集
flu
en
td
ログ収集サーバ(正副)
OSレベル
のログ
fluentd
健全性監
視テスト
flu
en
td
健全性試験を実施
ワードをひっ
かけてキック
APIキックで
メール、架電
健全性試験でNGの場合
は架電する仕組み
©Internet Initiative Japan Inc. ‐ 24 ‐‐ 24 ‐
セキュリティ
 正直、まだまだ手を入れられる箇所がありそうな状況
 ホストのセキュリティは一般的な対応を実施している
 k8sの操作制限にRancherを利用
• Rancher経由で操作を行うことで、事故を減らす
• 完全には排除しきれていないが素のkubectlを排除中
• コマンドライン文化なのでRancher CLIを利用
 その他の検討
• ネットワークポリシーを使うかどうか
• 内外の接続に制約をかけられるのは非常に魅力的
• 結局使わなかった
• 経験値を積んできたflannelは対応していない
• トラブルシュートの難しさ(予測)
• Callicoのiptablesルールがかなり複雑で、NWポリシーを有効にすると輪をかけてやばい
©Internet Initiative Japan Inc. ‐ 25 ‐‐ 25 ‐
まとめ
©Internet Initiative Japan Inc. ‐ 26 ‐‐ 26 ‐
まとめ
 オブジェクトストレージのアプリケーションの管理にk8sを利用しています
 本番リリースはまだですが、間もなくリリースします
 Rancherは①k8sの構築ツール ②クイックなシステム状況の確認ツール ③
ユーザ管理ツール として主に利用しています
 Multi Tenant Prometheusへ乗り換えようとしています
オンプレでもあきらめないで!
©Internet Initiative Japan Inc. ‐ 27 ‐‐ 27 ‐

More Related Content

What's hot

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】DeNA
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情Rakuten Group, Inc.
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)NTT DATA Technology & Innovation
 
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)NTT DATA Technology & Innovation
 
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...NTT DATA Technology & Innovation
 
SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」
SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」
SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」Hideaki Tokida
 
20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つYuichi Hasegawa
 
モニタリングプラットフォーム開発の裏側
モニタリングプラットフォーム開発の裏側モニタリングプラットフォーム開発の裏側
モニタリングプラットフォーム開発の裏側Rakuten Group, Inc.
 
Light and shadow of microservices
Light and shadow of microservicesLight and shadow of microservices
Light and shadow of microservicesNobuhiro Sue
 
DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用Shota Suzuki
 
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)NTT DATA Technology & Innovation
 
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)NTT DATA Technology & Innovation
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力NTT DATA OSS Professional Services
 
Stratosphereが提供するSDN/OpenFlow技術の現在と未来
Stratosphereが提供するSDN/OpenFlow技術の現在と未来Stratosphereが提供するSDN/OpenFlow技術の現在と未来
Stratosphereが提供するSDN/OpenFlow技術の現在と未来IIJ
 
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説Kimihiko Kitase
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...NTT DATA Technology & Innovation
 
統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~
統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~
統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~Hinemos
 

What's hot (20)

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
 
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
 
SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」
SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」
SoftLayerBluemixSummit はじめてのSoftLayer「ネットワーク編」
 
20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ20170525 jsug バッチは地味だが役に立つ
20170525 jsug バッチは地味だが役に立つ
 
モニタリングプラットフォーム開発の裏側
モニタリングプラットフォーム開発の裏側モニタリングプラットフォーム開発の裏側
モニタリングプラットフォーム開発の裏側
 
Light and shadow of microservices
Light and shadow of microservicesLight and shadow of microservices
Light and shadow of microservices
 
DeNAでのVertica運用
DeNAでのVertica運用DeNAでのVertica運用
DeNAでのVertica運用
 
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
 
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
 
Stratosphereが提供するSDN/OpenFlow技術の現在と未来
Stratosphereが提供するSDN/OpenFlow技術の現在と未来Stratosphereが提供するSDN/OpenFlow技術の現在と未来
Stratosphereが提供するSDN/OpenFlow技術の現在と未来
 
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~
統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~
統合運用管理ソフトウェアの決定版!Hinemos ver.6.1のご紹介! ~基本機能編~
 

Similar to Rancher/k8sを利用した運用改善の取り組み

社外発表 Rancher2.0night
社外発表 Rancher2.0night社外発表 Rancher2.0night
社外発表 Rancher2.0nightMichitaka Terada
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるMichitaka Terada
 
Gitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイGitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイiwata jaws-ug
 
次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとは次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとはTrainocate Japan, Ltd.
 
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点Tetsutaro Watanabe
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCodingTaiji Tsuchiya
 
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~Brocade
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotNobuyuki Matsui
 
Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢Maho Takara
 
ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)伸夫 森本
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向NTT Software Innovation Center
 
AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方Shota Suzuki
 
Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!Boss4434
 
NTT Communications' Initiatives to Utilize Infrastructure Data
NTT Communications' Initiatives to Utilize Infrastructure DataNTT Communications' Initiatives to Utilize Infrastructure Data
NTT Communications' Initiatives to Utilize Infrastructure DataDataWorks Summit
 
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi IshikawaInsight Technology, Inc.
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~法林浩之
 
IoT/ロボティクス時代のモニタリングとコントロール
IoT/ロボティクス時代のモニタリングとコントロールIoT/ロボティクス時代のモニタリングとコントロール
IoT/ロボティクス時代のモニタリングとコントロールMasahiro Takechi
 

Similar to Rancher/k8sを利用した運用改善の取り組み (20)

社外発表 Rancher2.0night
社外発表 Rancher2.0night社外発表 Rancher2.0night
社外発表 Rancher2.0night
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
 
Gitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイGitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイ
 
次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとは次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとは
 
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCoding
 
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
 
Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢Cedec2015 ゲームサーバー基盤の新しい選択肢
Cedec2015 ゲームサーバー基盤の新しい選択肢
 
ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
 
AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方AI/MLシステムにおけるビッグデータとの付き合い方
AI/MLシステムにおけるビッグデータとの付き合い方
 
Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!
 
NTT Communications' Initiatives to Utilize Infrastructure Data
NTT Communications' Initiatives to Utilize Infrastructure DataNTT Communications' Initiatives to Utilize Infrastructure Data
NTT Communications' Initiatives to Utilize Infrastructure Data
 
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa
[C32] 正確でスピーディーな決断を促す、日立の高速データアクセス基盤~性能検証事例と活用効果~ by Taichi Ishikawa
 
OSS光と闇
OSS光と闇OSS光と闇
OSS光と闇
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
 
20170720_5 MBC-IoT_IoTビジネス共創ラボ
20170720_5 MBC-IoT_IoTビジネス共創ラボ20170720_5 MBC-IoT_IoTビジネス共創ラボ
20170720_5 MBC-IoT_IoTビジネス共創ラボ
 
IoT/ロボティクス時代のモニタリングとコントロール
IoT/ロボティクス時代のモニタリングとコントロールIoT/ロボティクス時代のモニタリングとコントロール
IoT/ロボティクス時代のモニタリングとコントロール
 

Rancher/k8sを利用した運用改善の取り組み

  • 1. ©Internet Initiative Japan Inc. ‐ 1 ‐‐ 1 ‐ 寺田 充毅 Rancher/k8sを利用した運用改善の取り組み
  • 2. ©Internet Initiative Japan Inc. ‐ 2 ‐‐ 2 ‐ 自己紹介 & チーム紹介  名前:寺田 充毅(Michitaka Terada)  仕事:オブジェクトストレージの開発、運用  会社:株式会社インターネットイニシアティブ  部署:IoTビジネス事業部 プラットフォーム開発課  趣味: バードウォッチング 農業 ギター演奏
  • 3. ©Internet Initiative Japan Inc. ‐ 3 ‐‐ 3 ‐ IIJオブジェクトストレージサービス  内製のs3互換ストレージ  サービスを構成する各AppがREST APIでつながっている  サーバ台数は二ケタ前半  今日はこのサービスの新リージョンを構築する際にトライしたことを話します フロントサーバ(外部向けREST API)メタデータ管理 契約管理 分散ファイルシステム インターネット 分散DB
  • 4. ©Internet Initiative Japan Inc. ‐ 4 ‐‐ 4 ‐ 今回のテーマ Kubernetesの初心者チームがオンプレミスに Kubernetesを構築し、現行サービスをマイグ レーションさせるまでの試行錯誤を共有する
  • 5. ©Internet Initiative Japan Inc. ‐ 5 ‐‐ 5 ‐ 動機
  • 6. ©Internet Initiative Japan Inc. ‐ 6 ‐‐ 6 ‐ k8sをサービス基盤に使う動機  直面している問題 • 本番とステージングの差異に起因するデプロイ事故の頻発 • バージョンアップで内部APIのインタフェース齟齬が起き障害発生 • バージョン推移で初めて気が付く失敗 • 複数の社内基盤に対応出来るポータビリティの確保が必要になった  今回の解決手段 • デプロイの改善&試験強化 • デプロイ、試験を自動化して組合せ試験の強化 • Blue/Greenの導入による障害時間の短縮 • テストをした組み合わせ一式を丸ごとデプロイすることで事故を減らす • インフラとアプリの間に層(k8s)を導入して基盤を抽象的に扱う  APIの設計改善、品質保証の強化でもアプローチするべきだが、今回はデプロ イで解消する方向
  • 7. ©Internet Initiative Japan Inc. ‐ 7 ‐‐ 7 ‐ Kubernetes(k8s)を基盤に使う?  2017年の秋ぐらいから検討開始  経験値0なので、まずは検証から • アークテクチャ(方式)は作りながら試行錯誤で進めて行った状況 プロトタイピング (コンテナ化、manifest) k8s構築技術の確立 性能試験、安定性試験 k8sに対する学習 方式検討/設計/実装 性能試験 アプリマイグレーション (helm化とか) 障害試験 基盤設計 (サーバ、NW) セキュリティ設計 機能試験k8s構成設計 監視設計 検証 構築/実装 試験 ロングラン CI/CD ログ収集 リポジトリ ボリューム管理
  • 8. ©Internet Initiative Japan Inc. ‐ 8 ‐‐ 8 ‐ 検証編
  • 9. ©Internet Initiative Japan Inc. ‐ 9 ‐‐ 9 ‐ k8s構築技術の確立  基盤 • ほぼオンプレミスの自社クラウド • 社内のk8s環境の検討は走っていたが、オブジェクトストレージを実装できるI/O性能、 NW性能は無さそうだったので除外  どうやってk8sを構築するか • 構築ツール候補:kubeadm, kubespray, RKE etc • 要件 • とにかく簡単であること • オンプレのingressどうするのか問題をクリアしている • HA構成を構築できる • ドキュメント調査してRKEを第一候補に  RKEより下のレイヤをどう構築するか? • TerraformとAnsibleを利用 • 自社クラウド用のRancherドライバを以前は開発、利用していたがこののころは不透 明だったので除外
  • 10. ©Internet Initiative Japan Inc. ‐ 10 ‐‐ 10 ‐ k8s構築技術の確立  RKEでCluster Networkが構成出来ない問題に直面(flannel)  今回は複数面NWがある構成 • グローバルセグメント、内部セグメント、管理セグメント • Cluster Networkは内部セグメントで通信させたかった • IaaSの仕様上、デフォルトGWは管理セグを向いている  この環境だと内部セグを指定してRKE upしても通信が成立しない • RKEの設定を試行錯誤(advertise addressを追加) • これだけではダメでStatic Routingの設定も必要 • 複雑な面構成のNWは構築時点で挫折しやすい  何かを使うときはスコープを明確にしないとハマる • k8sは要件を満たすNWをCluster Networkとして使うというスタンス • RKEはCluster Networkの構成をしてくれるが、さらに下のIP NWのレイヤーは面倒を 見てくれない  このあたりから、k8sを動かす、かつ安定に動かすにはホストやDockerを適 切に構成する必要がある点を理解し始める • Ansibleで頑張る
  • 11. ©Internet Initiative Japan Inc. ‐ 11 ‐‐ 11 ‐ プロトタイピング – アプリをk8sに載せる  Kubernetes力が足りない • 日本語の書籍もまだ(あまり)なかった • 勉強会に参加したり、ドキュメント読んだり色々な手段で情報収集 • 幸い環境は立ったので、触りながらStep by Stepで覚えていった • チームの所帯が小さく、かつプロトをやっていたのは2人だけだったので、内部の共有 等無く、ひたすら試して学ぶ  最初から無理をしないことを心掛けた • 最初はliveness probeも、resource limitなども書かず、ただdeployするだけのシンプ ルなマニフェストを書く • kubectl editで実験してmanifestに書き戻す • おそらく皆さんこんな感じ? • helmは存在を知ってはいたが手を付けず
  • 12. ©Internet Initiative Japan Inc. ‐ 12 ‐‐ 12 ‐ プロトタイピング – アプリをk8sに載せる  もともとREST APIで接続されている構造  Liveness probe相当も実装済み  DNSラウンドロビンでAPI間の通信の冗長性、負荷分散を実施 • この仕組みはk8sと相性がよくKubernestesのDNSを使うように変更  Java • Heapの状態、GCの状態の収集はJMX exporterで収集 • サイドカーで載せている • JVMのメモリ使用量は気になるものの、コンテナに詰めるにあたり1つあたりのheap量、 スレッド数を小さくする方向で調整 • プロセス落ちた際の影響範囲の範囲を狭める • k8sのスケジューリング機能との相性(大きいものははめ込みずらい) JVM アプリ DNS 監視プ ラグイン JVM アプリ 死活監視 名前引いて.. 呼び出す munin JVMの情報収集 JVM アプリ k8s Liveness probe 名前引いて.. 呼び出す promethesus JVMの情報収集 JMX exporter JVM アプリ JMX exporter
  • 13. ©Internet Initiative Japan Inc. ‐ 13 ‐‐ 13 ‐ 性能試験、安定性試験  k8sで本当にストレージサービス提供できるのか、材料を集める • 性能、安定性をまずは検証し判断をしたい • 耐障害性は、アプリとk8sの組み合わせで実現するべきだと考えており、この時点では 追い込まなかった  ネットワーク性能の基礎値を取得 • iperfを使って比較 • MSSを小さくした場合(ショートパケット風)、ホストNWより性能が落ちるが、今回の 通信要件では問題無いと判断
  • 14. ©Internet Initiative Japan Inc. ‐ 14 ‐‐ 14 ‐ 性能試験、安定性試験  ストレージの性能測定 • クラスタ外部に分散ファイルシステムを構築 • ホストに直接マウントして読み書きするパターンと、k8sでマウントしてコンテナから 読み書きするパターンを比較 • 仕組みとしては、ホストへのマウントを手動でやるのか、k8s(CSIドライバ)がやるか の差でしかなく、当然ながら性能差は無かった  安定性試験、アプリも含めた性能試験 • アプリケーションをk8sに載せて負荷をかけて試験を実施 • 24時間連続稼働しておかしなことが起きないか確認 • これが思いのほか苦戦 • dockerのワークディレクトリの見積もりミスでdisk pressureでeviction • Javaのヒープサイズでresource limitを設定してkillされる • スケジューラの制御方法がわからず、配置ガチャ状態 • resource limit / requirement、affinityなど学びながら設定して何とか動くように
  • 15. ©Internet Initiative Japan Inc. ‐ 15 ‐‐ 15 ‐ 結論:k8sでオブジェクトストレージサービス 動かせる  Rancher 2.0 Nightというイベントで話をした際の、この図のようなアーキ テクチャで進める カタログに よるデプロイ k8sクラスタ の構築 分散データベース インターネット 分散ファイルシステム 本番 ステージング 自社クラウド基盤上 (略) Blue/Green
  • 16. ©Internet Initiative Japan Inc. ‐ 16 ‐‐ 16 ‐ 方式検討編
  • 17. ©Internet Initiative Japan Inc. ‐ 17 ‐‐ 17 ‐ CI/CDパイプラインの検討  取り組みの当初 • CIパイプラインがあったが活用されていない状態 • コードによるUT、ITは完備されているが自動実行はUTまで  人間系も含めてフローをかなり詳細に設計した • これが失敗のもと  理想が高すぎ、完成まで至っていない • 小さく始める原則に沿ってなかった • 個々の要素の接続は完了しておりあとはパイプラインを作るだけ(なのだが)  自動化 = 総合力の勝負 • UT、ITの自動化 • モジュール設計、リポジトリへの格納単位の設計 • バージョン戦略 • フロー設計 etc..
  • 18. ©Internet Initiative Japan Inc. ‐ 18 ‐‐ 18 ‐ CI/CDパイプラインの検討  ツール • 候補はGitLab、Concourse CI、spinnaker • 実際に触ってみて感触の良かったGitLabでCIまで、Concourse CIで後半の工程を行う 想定で開始  Concourse CIですべて実装する結論に • Concourse CI が柔軟で、GitLabと役割分担する理由が特になかった  開発支援系のツールにもk8sを実行基盤にするものが多い • 今日のテーマであるRancher(Server) もその一つ • 運用用のk8sをサービス稼働用とは別に構築してツールはそこに載せることに  運用用k8sに載せているもの • Ansible AWX • Concourse CI • Rancher • (Longhorn)
  • 19. ©Internet Initiative Japan Inc. ‐ 19 ‐‐ 19 ‐ CI/CDパイプラインの検討 - 全体像  Concourseをコアにビルドが流れる  最終的な本番へのデプロイ指図、切り替えは人間 Gitlab 運用 k8s Hosts k8s Hosts(Stg) 運用 k8s Hosts 運用k8s 運用k8s Concourse サービス k8s Docker レジスト リ アプリ 作業用 Host Rancher CLI ソース コード image push コード取得 デプロイ(helmカタログを利用) build & test helm repo k8s Hosts(本番) サービス k8s アプリ ステージへのデプロイ (ITは図として略) image pull 定義情報の取得 定義情報 の取得 デプロイ&ingress切り替え デプロイ&ingress 切り替え操作 git push Rancher Server
  • 20. ©Internet Initiative Japan Inc. ‐ 20 ‐‐ 20 ‐ k8s適用範囲の検討 - どこまでk8sに載せるのか?  勉強会等で話を聞くと会社、案件によってまちまち  データのような重みのあるものをどう考えるか App サーバ DB 分散FS DNS ログ 収集 可視化 プロキシ k8s 全部のせ? App サーバ DB 分散FS DNS ログ 収集 可視化 プロキシ k8s k8s データを管理するものは全部外にする? App サーバ DB 分散FS DNS ログ 収集 可視化 プロキシ k8s 最小限でもいいのか?
  • 21. ©Internet Initiative Japan Inc. ‐ 21 ‐‐ 21 ‐ k8sの適用範囲の検討  ホストの役割を分類 • アプリケーションサーバ • データサーバ(DB、分散FS) • ユーティリティ • DNSキャッシュサーバ、NTPサーバ等サービスのリクエストが直接流れないサーバ群 • 運用 • 踏み台とか、プロキシとか  変化のスピード、頻度を検討 • データ、ユーティリティ、運用は変更の適用頻度が低い • バージョンアップ、セキュリティfixの適用がメインで設定変更もほぼ無い • 結局ホストへのfix適用というタスクは残る • アプリケーションは変更の適用頻度が高い(適用速度上げたい)  スケールアウトの有無による検討 • 顧客要求に応じてスケールアウトが必要なレイヤはアプリケーションサーバのみ  我々の結論:アプリケーションだけ乗せる
  • 22. ©Internet Initiative Japan Inc. ‐ 22 ‐‐ 22 ‐ 監視、ログ収集  ログ収集はk8sのスコープ外 • Docker管理下のログをfluentdで収集して集める • 公式ドキュメントに記載がある • 通常のログの確認は、Rancher GUIかSternでやることが多い • アプリのDebugはStern  メトリクスの収集&監視 • 多層化している状況 • Podの監視はPrometheusで • 現状これを超えるものはない • ホストの監視はIIJ内製の監視基盤 • KubernetesのAPI • 監視基盤の監視はIIJの監視サービスで監視
  • 23. ©Internet Initiative Japan Inc. ‐ 23 ‐‐ 23 ‐ 監視、ログ収集  RancherのMulti Tenant Prometheus機能は未使用 • Rancher使わずPrometheus Operatorで導入当時 • 現在運用k8sに導入済みで、本番利用検討中  ここまでやるのは運用負荷を考えるとお勧めしない 内製監視システム用 Hosts IIJ内製監視システ ム k8s Hosts サービス k8s アプリPrometheus Prometheusは同一クラスタに置いているが、affinityを使ってア プリとは別のホストに入るようにしている IIJ統合運用監視サービス APIサーバ 死活監視 ホストの監視 (SNMP) ホストの監視 (SNMP) APIキックで メール、架電 IIJ内製メトリクス 収集ツール SNMP情報収集 flu en td ログ収集サーバ(正副) OSレベル のログ fluentd 健全性監 視テスト flu en td 健全性試験を実施 ワードをひっ かけてキック APIキックで メール、架電 健全性試験でNGの場合 は架電する仕組み
  • 24. ©Internet Initiative Japan Inc. ‐ 24 ‐‐ 24 ‐ セキュリティ  正直、まだまだ手を入れられる箇所がありそうな状況  ホストのセキュリティは一般的な対応を実施している  k8sの操作制限にRancherを利用 • Rancher経由で操作を行うことで、事故を減らす • 完全には排除しきれていないが素のkubectlを排除中 • コマンドライン文化なのでRancher CLIを利用  その他の検討 • ネットワークポリシーを使うかどうか • 内外の接続に制約をかけられるのは非常に魅力的 • 結局使わなかった • 経験値を積んできたflannelは対応していない • トラブルシュートの難しさ(予測) • Callicoのiptablesルールがかなり複雑で、NWポリシーを有効にすると輪をかけてやばい
  • 25. ©Internet Initiative Japan Inc. ‐ 25 ‐‐ 25 ‐ まとめ
  • 26. ©Internet Initiative Japan Inc. ‐ 26 ‐‐ 26 ‐ まとめ  オブジェクトストレージのアプリケーションの管理にk8sを利用しています  本番リリースはまだですが、間もなくリリースします  Rancherは①k8sの構築ツール ②クイックなシステム状況の確認ツール ③ ユーザ管理ツール として主に利用しています  Multi Tenant Prometheusへ乗り換えようとしています オンプレでもあきらめないで!
  • 27. ©Internet Initiative Japan Inc. ‐ 27 ‐‐ 27 ‐