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
970
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
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
360
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
31k
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
260
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
2
2.1k
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
Qiita埋め込み用スライド
naoki_0531
0
860
第3回Snowflake女子会_LT登壇資料(合成データ)_Taro_CCCMK
tarotaro0129
0
180
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
180
podman_update_2024-12
orimanabu
1
260
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
110
Storage Browser for Amazon S3
miu_crescent
1
130
Featured
See All Featured
Become a Pro
speakerdeck
PRO
26
5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Testing 201, or: Great Expectations
jmmastey
40
7.1k
Facilitating Awesome Meetings
lara
50
6.1k
We Have a Design System, Now What?
morganepeng
51
7.3k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Fireside Chat
paigeccino
34
3.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Designing for Performance
lara
604
68k
Visualization
eitanlees
146
15k
GraphQLとの向き合い方2022年版
quramy
44
13k
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