Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ICTSCにおけるk8s運用の話
Search
Takeru Hayasaka
March 07, 2021
Technology
0
520
ICTSCにおけるk8s運用の話
ICTSCにおいてのk8sクラスタはさくらのクラウドに全て載せているが、このスライドではどのように運用しどの様な構成のかを述べる
Takeru Hayasaka
March 07, 2021
Tweet
Share
More Decks by Takeru Hayasaka
See All by Takeru Hayasaka
eBPF Deep Dive: Architecture and Safety Mechanisms
takehaya
12
1.4k
Perlで始めるeBPF: 自作Loaderの作り方 / Getting started with eBPF in Perl_How to create your own Loader
takehaya
2
1.8k
Exploring XDP: Fundamentals and Real-World Implementations in Mobile Network Data Plane
takehaya
1
980
JANOG53 LT 自作k6 Extension利用した NFVへの負荷計測手法の紹介
takehaya
0
400
Wakamonog13 LT: VPPで始めるHigh Performance BGPルーター
takehaya
2
1.1k
自作パケット処理系の性能測定と可視化&改善のPDCAを回して最強のパケット処理系の作り方を学ぼう / Let's Measure the Performance of Packet Processing System with Python Tools.
takehaya
4
4.8k
SRv6 Mobile User Plane(MUP) の紹介とMUP-BGPのOSS実装における相互接続性について
takehaya
1
800
Debug linux drop packets
takehaya
1
1.1k
P4とICTSCにおいての利活用例
takehaya
1
440
Other Decks in Technology
See All in Technology
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
なぜCodeceptJSを選んだか
goataka
0
160
5分でわかるDuckDB
chanyou0311
10
3.2k
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
170
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.4k
kargoの魅力について伝える
magisystem0408
0
210
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
3
300
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.3k
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
150
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
240
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
150
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
40
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
What's in a price? How to price your products and services
michaelherold
243
12k
Why Our Code Smells
bkeepers
PRO
335
57k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Adopting Sorbet at Scale
ufuk
73
9.1k
Agile that works and the tools we love
rasmusluckow
328
21k
How STYLIGHT went responsive
nonsquared
95
5.2k
Into the Great Unknown - MozCon
thekraken
33
1.5k
A designer walks into a library…
pauljervisheath
204
24k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Transcript
ICTSCにおける k8s運用の話 Takeru Hayasaka(@takemioIO) 2021/03/07 ICTSC2020 LT会 https://unsplash.com/photos/SInhLTQouEk 1
自己紹介 1. 竹/TakeruHayasaka/@takemioIOと言います k8sの運用とかなんでもやってる人 2. パケット処理書きすぎてoptionなしL3までなら 目で読めるようになった.... 3. 最近の趣味はなろう小説を漁ること 4.
来年から京都に行くんですが地元が宮城で 友達と彼女がいないので募集しています。 助けてください(メソメソ) 5. #ictsc_bar_night でトラコンBAR というトークショウをやってる 2
アウトライン 1. Overview: 今年のk8sのトポロジー 2. ICTSCにおけるk8s運用とは? • プロビジョニング編 • ストレージ
編 • ネットワーク編 • 監視編 • アプリケーション編 3. まとめと一年を振り返ってみて 3
Overview https://unsplash.com/photos/ur7BDi9MpXg 4
ICTSCにおいてのk8sクラスタ ICTSCにおいてのk8sクラスタはさくらのクラウドに全て乗ってる • スコアサーバーを載せたり • 監視基盤を載せたり • VMのプロビジョニングをするためのツールを載せたり... とかの所謂出来れば落としたくないものとかを載せて動かす 運用を行っています
• 主に面倒を常に見てるのは大体4-5人ぐらい (@takemioIOが取りまとめや全体のアーキテクトをやってるが 運営がこれ欲しいとか言って雑にPRが飛んでくることもある) • 基本インフラ紹介をあまりちゃんとされないところの裏方さんです コンテスト直前によくSREみたいなことをやってると思ってもらうと イメージしやすいかも??? 5
k8sクラスタの論理構成 6
k8sクラスタを含めた全体像 7
ICTSCにおいてのk8sクラスタ • prd: 皆さんがアクセスするものを載せるやつ • dev: 壊していいやつ • wsp: 監視系やCDなどを載せるところ
• 1クラスタあたりのリソース • global v4addr /27 • master x 3 • 1node: 4vcpu, 8mem, disk 100 • worker x 3 • 1node: 8vcpu, 32mem, disk 250 • (LB + BGP Router) x 3 • 1node: 4vcpu, 8mem, disk 40 • こんなに大量のリソースのご提供はさくらインターネット様からの リソースで動いている。ありがとうございます🙇♀ 8
ICTSCにおいての運用リポジトリ 9
ICTSCにおいてのmanifestリポジトリ 10
ICTSCにおいての運用リポジトリ 11
ICTSCにおいての運用リポジトリ 12
ICTSCにおいての運用リポジトリ 13
ICTSCにおいての運用リポジトリ 14
ICTSCにおいての運用リポジトリ 15
ICTSCにおいての運用リポジトリ 😇 16
ICTSCにおいての運用リポジトリ なんとかワイワイ検証をしつつ、 SREぽい裏方さんをやっています🙇♀🙇♀🙇♀ 17
プロビジョニング編 https://unsplash.com/photos/ur7BDi9MpXg 18
k8sクラスタの論理構成 19 再掲
プロビジョニング: VMを作る • さくらのクラウドにVMを作る -> terraform 20 • sakura cloudの
tfproviderを 使ってVMをプロビジョニング • S3のバックエンドを導入して tfstateをリモートに置いた (自分たちでminioを立てた)
プロビジョニング: VMに流し込み • kubeletなどをインストール -> ansibleで流し込み 21 • dynamic inventryをやって
pythonからminioにある tfstateをfetchし、そこに ある接続情報をまとめて ansibleが接続しにいく • 同時に管理用userなどを作る
プロビジョニング: kubeapi serverのLB構築 • haproxyを構築 22 • haproxyを構築することで 複数のmaster nodeを置くこと
が可能になる • ←実際のコンフィグ例
プロビジョニング: k8sの構築 • kubeadmを利用して構築 23 • ←こんな感じのコンフィグを 用意しておいて sudo kubeadm
init --config=kubeadm-config.yaml をする感じ
ネットワーク編 https://unsplash.com/photos/ur7BDi9MpXg 24
k8sクラスタの論理構成 25 再掲
ネットワーク: アプリを外部に公開する • 外部にアプリケーションを公開 -> MetalLB 26 • ベアメタル環境で使用できる KubernetesのExternal
Load Balancerの実装 • L2 モード:リーダーノードを選出 =>負荷に偏り BGPモード:外部ルーターが ECMPでロードバランス • 複数アドレスプール: 使用したいアドレス帯をService で指定可能 metallb-config.yaml ingress-service.yaml
ネットワーク: Ingress • Ingress Controller -> Nginx Ingress Controller 27
• SSLの終端 • サービス転送 • nginxなのでhostpathとして 利用やサーバーサイドの やりとりに対する処理など • 複数台にスケールするので L7 LBとしての意味も持つ
ストレージ編 https://unsplash.com/photos/ur7BDi9MpXg 28
k8sクラスタの論理構成 29 再掲
ceph+rookについて rookというツールでceph を構築をして分散ストレージ を導入してる 我々の環境だと filestoreで per nodeごとに おいて運用している (bluestoreだとメモリをすごく
必要にするなどの理由から このようにしている) 30
cephについてのdashboard 31
監視編 https://unsplash.com/photos/ur7BDi9MpXg 32
k8sクラスタの論理構成 33 再掲
監視基盤の構成 34 今年度利用しているものたち • Zabbix (新規) ◦ Router,IPMIのデータ取得 • Grafana
◦ Zabbix, prometheusの可視化 • prometheus • AlertManager ◦ prometheusのalert • elastiflow (k8sでは新規) ◦ sflow • ELK ◦ syslog...etc.. 本戦10日前から監視基盤を頑張って一人で建てました. これから先のスライドは10日間頑張ったものを見てください! by umeda
Zabbix ZabbixでJuniper MX5のsnmpを取得し Grafanaで可視化しています。 本日15:30ごろまでのトラフィックグラフです。 35
問題VMの監視 36 問題VMの監視を行いました。 展開の際に正常にVMが立ち上がったかのチェックを行えました。
Ceph Dashboard 37 Cephよくわからん!!!
ElastiFlow 38 きれいだな~
1day 午前3時prometheusが死んでた! msg="append failed" err="write to WAL: log samples: write
/etc/prometheus-data/wal/00001007: disk quota exceeded" 39 umedaは寝ていたので、えるとさんがトラコンしてくださいました。:pray: まさか、10日で20GB食うとは知らないじゃん..! ストレージの永続化した人←umeda prometheusが死んでもalertは飛ばない!!
監視は以上です。 ありがとうございました。 by umeda 40
アプリケーション編 https://unsplash.com/photos/ur7BDi9MpXg 41
k8sクラスタの論理構成 42 再掲
ArgoCD 43
ArgoCD 44
ArgoCDの全体の構成 45
pomerium 46 ◦ Pomerium: アプリの前段 にプロキシとして存在して外 部のIDプロバイダーを用いて ユーザを識別する ◦ githubなどのorgをictsc
は使っている ◦ https://wiki.icttoracon.net/ictsc2020/infra/cluste r/Pomerium#Pomerium%E3%81%AB%E3%8 1%A4%E3%81%84%E3%81%A6
pomerium: ビフォー 47
pomerium: アフター 48
まとめと見所(盛り沢山) 1. 複数台のクラスターを用意してカナリア を入れてより本番を壊さないようになった 2. 以前はワンオペSPOF野郎(@takemioIO)だったがインフラチーム としてちゃんとわかる人が増えた 3. スコアサーバーや監視等にはargoCDが生えてアプリケーションの デプロイにアプリケーションエンジニアがkubectl
applyをしなくて も生きていけるようになった 4. 監視などの接続性についてはgithubのOrgを通じて認証することで より安全に使えるようになり、最高の監視です最高! 5. k8sでもrook+cephを導入してDisaster対策済み 6. MetalLB, nginx ingressを合わせてマルチティアLBに、vyosを入れること でBGPモードでなおかつVPNなども合わせたネットワーク を使えるようになった 49