Slide 1

Slide 1 text

Yahoo! JAPAN Tech Conference 2019 in Shibuya (2019/12/13) SUDA Kazuki , @superbrothers INAZU Kazuma , @ina_ani ヤフーで使われる500以上の Kubernetesクラスタの運⽤を⽀える技術

Slide 2

Slide 2 text

SUDA Kazuki / @superbrothers ▶ ヤフー株式会社 黒帯「Kubernetes」 ▶ Kubernetes Meetup Tokyo 共同主催者 ▶ 「Kubernetes実践⼊⾨」、「みんなのDocker/Kubernetes」共著書 ▶ 「⼊⾨ Prometheus」監訳書 INAZU Kazuma / @inajob ▶ 趣味は電⼦⼯作で⾃宅に3Dプリンタを持っている ▶ 「Kubernetes実践⼊⾨」、「みんなのDocker/Kubernetes」共著書

Slide 3

Slide 3 text

ゼットラボ株式会社 / Z Lab Corporation ▶ 2015年に設⽴されたヤフー株式会社の100%⼦会社 ▶ インフラ基盤技術の調査・研究開発 ▶ ヤフー株式会社向けのマネージド Kubernetes サービスの開発 ▶ https://zlab.co.jp/

Slide 4

Slide 4 text

Kubernetes ▶ コンテナオーケストレーションツール + 複数のマシン(ノード)で構成されるクラスタに対して コンテナ(アプリケーション)の配備、設定、管理を⾏う ▶ Google の社内システムからインスパイアされた “Kubernetes is open source—a contrast to Borg and Omega,
 which were developed as purely Google-internal systems. “ Borg, Omega, and Kubernetes

Slide 5

Slide 5 text

ロードバランサ 永続ストレージ ホスト コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ ホスト ナ コンテナ ナ コンテナ ナ コンテナ ホスト コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ ホスト コンテナ コ コンテナ コ コンテナ コ Kubernetes デプロイ戦略 ネットワーク

Slide 6

Slide 6 text

BARE METAL

Slide 7

Slide 7 text

Kubernetes のアーキテクチャ Node Networking kubelet Container Runtime OS Master component etcd apiserver controller-manager scheduler kubectl REST

Slide 8

Slide 8 text

Kubernetes クラスタのオペレーション ▶ 開発者からのクラスタの作成、削除、設定変更に即座に対応しないければならない ▶ 開発者からのノード (VM) の追加・削除の要望に即座に対応しなければならない ▶ 3ヶ⽉に1度マイナーバージョンリリースがあり積極的にアップグレードしないといけない + サポートバージョンは3マイナーバージョン(9ヶ⽉) ▶ ノードは毎⽇どこかで壊れるので復旧しなければならない ▶ データストア (etcd) が壊れたときに備えてバックアップ、リストアできないといけない ▶ ノードのカーネルに脆弱性が報告されたら即⽇ですべてのカーネルを更新しないといけない Kubernetes はコンテナ化されたアプリケーションの運⽤に⼤きなメリットがある⼀⽅で クラスタの運⽤には多くのオペレーションが必要になる。 1, 2つのクラスタなら温かみのある⼿運⽤も可能だけど、500+ クラスタ、8000+ ノードでは無理

Slide 9

Slide 9 text

煩雑な Kubernetes クラスタのオペレーション ▶ 多くの煩雑なオペレーションも⼿順としてはシンプル ▶ Yahoo! JAPAN は国内外に複数のデータセンタを持ち、数万台規模のサーバの オペレーションが必要になる ⼈間のやる仕事じゃない。ソフトウェアにやらせる。 AUTOMATE ALL THE THINGS

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Kubernetes Operator ▶ Kubernetes のユーザに変わって複雑なステートフルアプリケーションのインスタンスを作成、 スケール、アップグレード、設定変更などを⾏うコントローラ ▶ 基本的な Kubernetes のリソースとコントローラの概念をもとにして、Kubernetes の拡張機能を 活⽤しアプリケーション固有の運⽤ナレッジをソフトウェアとしてプログラムする An Operator represents human operational knowledge in software to reliably manage an application. Introducing Operators: Putting Operational Knowledge into Software | CoreOS (2016/11/6)

Slide 12

Slide 12 text

Kubernetes の⼤きな特徴の1つが拡張性 ▶ CustomResourceDefinitions (CRD) + Kubernetes に任意のリソースタイプを追加する ▶ カスタムコントローラ + Kubernetes に任意のビジネスロジックを追加する

Slide 13

Slide 13 text

Site Reliability Engineering: ソフトウェアを書くことでアプリケーションを運⽤に⾃動化をもたらすロール “したがってSREは、これまで運⽤チームが⾏ってきたことを ソフトウェアの専⾨性を持つエンジニアが⾏い、エンジニア が⼈⼿による管理を⾃動化するソフトウェアを設計し実装す る能⼒を持ち、それをいとわないということから成り⽴って います。” https://www.oreilly.co.jp/books/9784873117911/

Slide 14

Slide 14 text

Kubernetes Operators in the Wild ▶ coreos/etcd-operator + Create/configure/manage etcd clusters atop Kubernetes ▶ coreos/prometheus-operator + Create/configure/manage Prometheus clusters atop Kubernetes ▶ rook/rook + Storage Orchestration for Kubernetes / Ceph / CockroachDB ▶ oracle/mysql-operator + Create, operate and scale self-healing MySQL clusters in Kubernetes ▶ kubeflow/tf-operator + Tools for ML/Tensorflow on Kubernetes https://github.com/operator-framework/awesome-operators

Slide 15

Slide 15 text

Kubernetes の拡張機能を⽤いて Kubernetes クラスタを管理 Kubernetes-as-a-Service on Kubernetes

Slide 16

Slide 16 text

Kubernetes-as-a-Service クラスタ master ノード kube-apiserver Custom Resources ノード X カスタムコントローラ ウォッチ 作成と管理 kubectl CLI クラスタの作成と管理 クラスタの操作

Slide 17

Slide 17 text

Kubernetes-as-a-Service の主な機能 ▶ セルフサービスでのクラスタの作成、削除、設定変更 ▶ クラスタのセルフヒーリング + 障害の発⽣したノードを⾃動的に切り離し、新しいノードを追加する ▶ クラスタのスケールアウト・スケールイン + ノード数の1コマンドでの変更 ▶ クラスタの⾃動アップグレード + ノーダウンタイム、ローリングアップデート ▶ etcd クラスタの⾃動バックアップ・リストア + ディザスタリカバリ

Slide 18

Slide 18 text

クラスタのセルフヒーリング 障害の発⽣したノードをクラスタから⾃動的に削除し、新たに必要なノードを クラスタに追加する。 ノード 1 ノード 2 ノード 3 KaaS 追加 削除

Slide 19

Slide 19 text

クラスタのローリングアップデート ⼀定数のノードを順々にアップグレードしていくことで、 クラスタの無停⽌アップグレードを実現している。 v1.15.0 v1.15.0 v1.16.2 KaaS 追加 v1.15.0 v1.15.0 v1.16.2 KaaS 削除

Slide 20

Slide 20 text

https://speakerdeck.com/superbrothers/the-technology-behind-managed-kubernetes-service-of-yahoo-japan https://speakerdeck.com/shmurata/how-we-accomplish-noops-by-kubernetes-operator

Slide 21

Slide 21 text

Thanks