テクノロジー

2019.12.11

クラスタ数530以上、大規模Kubernetesを運用するエンジニア組織の作り方 #k8s

Yahoo! JAPAN Advent Calendar 2019の11日目の記事です。一覧はこちら(外部リンク)

トップ画像

みなさんこんにちは。
システム統括本部に所属し、プライベートクラウドのKaaS(Kubernetes as a Service)の担当をしている藤江です。
私は2007年にヤフーに新卒で入社し、会計システムや社内認証システムなどの業務システムの開発・運用経験を経て、2017年4月から今のKaaS運用業務をしています。 現在のプロジェクトではScrumを導入しており、プロダクトオーナーとして働いています。

さて、いきなりですが最初に質問です。Kubernetesというツールを知ってますか? 実際に業務で使っていますか? 

去年の1月に開催されたYahoo! JAPAN Tech Conferenceの登壇で、この質問をした時、会場で手を上げてくださった方はわずか数名でした。ヤフー社内でもKaaS導入時にKubernetesを知っている人は2、3割程度だったと思います。 あれからもうすぐ2年がたとうしていますが、今ではKuberntesの利用が珍しくない世の中になりました。 Kubernetesの利用が当たり前になったヤフーでは今どのようにKubernetesが利用されているのか、どのような体制でKubernetes基盤を支えているのかご紹介します。

目次

  • Kubernetesとは
  • ヤフーでのKubernetesの普及
  • ヤフーでのKubernetesエンジニア育成
  • 大規模Kubernetes環境を支える技術
  • 大規模Kubernetes環境を支えるエンジニア組織
  • これから

Kubernetesとは

Kubernetesは、コンテナのデプロイ、スケーリング、管理を自動化するオーケストレーションツールです。
Kubernetesを活用することで、従来のVMベースの環境に比べ、以下の様なメリットがあります。

  • 素早くアプリケーションをデプロイできる
  • 臨機応変にスケーリングを実施できる
  • シームレスに新しい機能をロールアウトできる
  • アプリケーションに必要なリソースのみを使用する

一般的にコンテナの管理はKubernetesの利用で、従来に比べ管理コストを下げられますが、Kubernetes自体の管理にコストがかかります。 ヤフーのKaaSはKubernetesの管理を自動化することで、大規模なKubernetes環境を支えています。

ヤフーでのKubernetesの普及

  • 2015/11 子会社のゼットラボ株式会社設立、次世代システム基盤の開発・検証を開始
  • 2017/04 ヤフーへKaaSの導入開始
  • 2017/10 KaaS上で動かすパイロットサービスとしてズバトクをプロダクションリリース
  • 2018/08 全社的で本格的にKaaSを利用できる様な環境構築
  • 2019現在 Kubernetesエンジニア育成、基盤拡大、運用効率の改善etc

そして今現在、Kubernetesの利用状況は下記のようになっています。

2019/11末現在のKubernetesの利用状況

  • 利用プロダクト数: 約140
  • Kubernetesクラスタ数: 530以上
  • コンテナ数: 70,000コンテナ以上

2020年からはヤフーの中でも最大級の規模をもつ広告関連のプラットフォームが本格的にKaaSへ移行していく予定です。 規模は今後さらに拡大していく予定です。

Kubernetesを普及するためのエンジニア育成

Kubernetesの普及にあたってKubernetesを扱えるエンジニアを増やす必要があります。しかし、独学でKubernetesを学習するにはハードルが高いと感じます。 ヤフーでは定期的にプラットフォーム利用者に改善のためのアンケートをとっていますが、アンケート結果にはKubernetesの学習コストが高いという意見が多くあります。 そこで、今年4月から新卒エンジニア、中途入社エンジニア向けにKubernetesの研修を導入しました。 Kubernetesを利用するにあたって最低限必要なDockerの知識やデプロイ方法などを入社時の研修で学ぶことができます。 これによりKubernetesの最初の学習ハードルを下げたり、興味をもってもらうことで独学を促す効果があったりします。 特に新卒エンジニアにはこの研修が好評で、研修後にはKaaSチームに配属されたいという、うれしい声ももらうことができました。新しい技術を学ぶのってエンジニアにとっては楽しいですよね!

メモをとっている人のイラスト

大規模Kubernetes環境を支える技術

Kubernetesは高機能かつ多機能なため、最初に触った時は複雑な作りに感じましたが実は一つ一つの機能はシンプルになるように設計されています。 Manifestファイルに対象リソースのSpec(要求仕様)を記載するとリソースごとに割り当てられたControllerが成果物を作成します。 成果物作成後もControllerは定期的に成果物の状態を監視し、あるべき状態と差分があれば、これをあるべき状態へ修復しようと動きます。この動きはcontrol loopと呼ばれ、KubernetesのControllerはこの考え方に沿って作られています。

control loop

Kubernetes as a Service

Kubernetesの大きな魅力の一つとして拡張性が非常に高いことがあげられます。 2019年9月にリリースされた1.16からGA(Genelal Availability)にもなったCustom Resources と Custom controllersを作成することによって、コンテナ同様に他のものもKubernetesの管理下に置くことができます。

530以上のKubernetesクラスタをどうやって管理しているのか。その答えの一つが、管理自体もさらにKubernetesの機能で実現してしまおう、というものです。

KaaSはCustom Resources と Custom controllersを利用し、Kubernetesの管理をKubernetesにより自動化したプラットフォームです。 これによりヤフーではKubernetesの管理コストを大幅に削減した状態でKubernetesを利用しています。

KaaSについて詳細な仕組みはどうなっているのか、高可用性を実現するためにどのような構成をとっているのかはJapanContainerDays v18.04KubeCon CloudNativeCon China 2019で詳細を発表していますので、興味を持ってくれた方はぜひご覧ください!

大規模Kubernetes環境を支えるエンジニア組織

最後にこのKaaSを支えるエンジニアについてです。 利用者の拡大に伴い、KaaSチームも人数が増え、今では協力会社の方も含め20人強のチームとなっています。 このメンバーで日々140のプロダクトからの問い合わせ対応や530以上のKubernetesクラスタの管理を行っています。 現在ではCREチームとSREチームという2つのグループに分けてチームを編成しています。

CRE(Customer Reliability Engineering)

CREとはCustomer Reliability Engineering(顧客信頼性エンジニアリング)の略で、Googleが提唱した専門職です。 利用者のトラブル調査や、他のプラットフォームとのつなぎ込み、勉強会の開催や社内コミュニティの運営など、利用者の生産性向上に責任をもつチームです。

SRE(Site Reliability Engineering)

SREとはSite Reliability Engineering(サイト信頼性エンジニアリング)の略で、こちらもGoogleが提唱した専門職です。 KaaSは多くのOSSを利用しています。日々進化していくOSSを最新に保つためのバージョンアップや運用作業の自動化、システムの安定化に責任をもつチームです。

もともと同じチームでやっていた時期もありましたが、利用者の問い合わせ対応とシステムのメンテナンスどちらの優先順位も甲乙つけがたく、意識のコンテキストスイッチが多く発生し、作業に集中しづらいといった課題からCREチームとSREチーム、それぞれで役割を明確に決めチームを分けました。

これから

Kubernetesの登場でここ数年でインフラ環境が飛躍的に進化、変化しています。ヤフーでもコンテナ環境への移行が進み、今では約30%が新環境で動いています。 今後は一層コンテナ化が進むとともに、Kubernetesをコンテナの実行基盤としてだけではなく、KaaSの一例のようにインフラの管理を自動化するためのソリューションとして使っていくシーンが増えていくと思います。Kubernetesをうまく活用するとともに、より良いものにするためにOSSへの貢献といったことにも力を入れていきたいと考えています。 Kubernetesについてもっといろいろ知りたいという方はAdvent Calendarも盛り上がっていますので、ぜひKubernetesゼットラボ株式会社のAdvent Calendarもご覧ください!

最後まで読んでくださって、ありがとうございました。


藤江 貴司

Kubernetesエンジニア

2007年ヤフーに新卒で入社。2017/4から日夜Kubernetesと戯れています。

Yahoo! JAPAN アドベントカレンダー2020

Qiita(外部サイト)の「購読する」ボタンを押しておくと更新通知を受け取れます

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

関連記事

このページの先頭へ