Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ヤフーで使われる500以上の
Kubernetesクラスタの運用を支える技術 / How we...

Kazuki Suda
December 13, 2019

ヤフーで使われる500以上の
Kubernetesクラスタの運用を支える技術 / How we manage over 500 Kubernetes clusters in Yahoo! JAPAN

Mini talk at Yahoo! JAPAN Tech Conference 2019 in Shibuya - https://techconference.yahoo.co.jp/2019_shibuya/

Kazuki Suda

December 13, 2019
Tweet

More Decks by Kazuki Suda

Other Decks in Technology

Transcript

  1. Yahoo! JAPAN Tech Conference 2019 in Shibuya (2019/12/13) SUDA Kazuki

    <[email protected]>, @superbrothers INAZU Kazuma <[email protected]>, @ina_ani ヤフーで使われる500以上の Kubernetesクラスタの運⽤を⽀える技術
  2. SUDA Kazuki / @superbrothers ▶ ヤフー株式会社 黒帯「Kubernetes」 ▶ Kubernetes Meetup

    Tokyo 共同主催者 ▶ 「Kubernetes実践⼊⾨」、「みんなのDocker/Kubernetes」共著書 ▶ 「⼊⾨ Prometheus」監訳書 INAZU Kazuma / @inajob ▶ 趣味は電⼦⼯作で⾃宅に3Dプリンタを持っている ▶ 「Kubernetes実践⼊⾨」、「みんなのDocker/Kubernetes」共著書
  3. ロードバランサ 永続ストレージ ホスト コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ ホスト

    ナ コンテナ ナ コンテナ ナ コンテナ ホスト コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ ホスト コンテナ コ コンテナ コ コンテナ コ Kubernetes デプロイ戦略 ネットワーク
  4. Kubernetes クラスタのオペレーション ▶ 開発者からのクラスタの作成、削除、設定変更に即座に対応しないければならない ▶ 開発者からのノード (VM) の追加・削除の要望に即座に対応しなければならない ▶ 3ヶ⽉に1度マイナーバージョンリリースがあり積極的にアップグレードしないといけない

    + サポートバージョンは3マイナーバージョン(9ヶ⽉) ▶ ノードは毎⽇どこかで壊れるので復旧しなければならない ▶ データストア (etcd) が壊れたときに備えてバックアップ、リストアできないといけない ▶ ノードのカーネルに脆弱性が報告されたら即⽇ですべてのカーネルを更新しないといけない Kubernetes はコンテナ化されたアプリケーションの運⽤に⼤きなメリットがある⼀⽅で クラスタの運⽤には多くのオペレーションが必要になる。 1, 2つのクラスタなら温かみのある⼿運⽤も可能だけど、500+ クラスタ、8000+ ノードでは無理
  5. 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)
  6. 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
  7. Kubernetes-as-a-Service クラスタ master ノード kube-apiserver Custom Resources ノード X カスタムコントローラ

    ウォッチ 作成と管理 kubectl CLI クラスタの作成と管理 クラスタの操作
  8. Kubernetes-as-a-Service の主な機能 ▶ セルフサービスでのクラスタの作成、削除、設定変更 ▶ クラスタのセルフヒーリング + 障害の発⽣したノードを⾃動的に切り離し、新しいノードを追加する ▶ クラスタのスケールアウト・スケールイン

    + ノード数の1コマンドでの変更 ▶ クラスタの⾃動アップグレード + ノーダウンタイム、ローリングアップデート ▶ etcd クラスタの⾃動バックアップ・リストア + ディザスタリカバリ