Google Cloud Next ’24 振り返り勉強会でCloud RunとGKEのコスト最適化のRecapを話しました #GoogleCloudNext

2024.04.25

ども、 もこ@札幌オフィスです。

少し遅くなってしまいましたが、4月17日に Google Cloud Next '24 の振り返り勉強会である【4/17(水)ハイブリッド】クラスメソッドGoogle Cloud Next ’24ふり返り勉強会 に登壇してきたので、その内容をブログにまとめます。

資料

Cloud RunのアップデートRecap

Cloud RunのProduct Ownerの方が喋るセッション、 Cloud Run: What's new に参加したところ、たくさんのアップデート情報を知ることが出来たため、本登壇ではCloud Runの最新情報をRecapしました。本記事でも口頭で話した内容を記載していきます。

Volume Mounts(Preview)

Cloud RunにNFSまたはCloud Storage Fuseをマウントできるようになりました。Sidecarで実装され、カーネルレベルのファイルマウントが提供されているとの事です。

余談ですが、Cloud SQLとCloud Runを合わせて使用する際、Unix Socketを生やすことができ、アプリケーションからはそのUnix Socketを参照するような形にすれば良いので、Cloud Runすげー!となった記憶がよみがえります。

Automatic Security Updates(Private Preview)

言語のランタイム、言語の依存関係、OSパッケージ、カーネルなど、ダウンタイム無しで更新が可能になったとのことです。セキュリティインシデントから48時間以内にパッチを当てることを目標としており、ゼロダウンタイム、ゼロリビルドでベースイメージを更新するとの事です。 --base-image でベースとなるイメージを指定するような形でデプロイすると使用が出来るとのことですので、GAに期待です!

Deterministic URL(Private Preview)

Cloud Runは実際にデプロイをしないとURLが生成されない仕様ですが、推測できるURLを発行できるようになったアップデートです。たとえばCloud RunはCLI上でデプロイしているが、DNSの管理はIaCで行っている場合などにおいて、先行してCloud RunをデプロイしてURLを確定させないといけませんでしたが、このアップデートにより、作成されるURLを推測することが出来るため、先行してDNSだけ登録する といった事もできるようになります。

Gemini in Cloud Run Reccomendations(Private Preview)

Googleが提供している生成AIサービスであるGeminiが、Cloud Run上のQ&Aやレコメンデーションを提供してくれるようになりました。

Private Previewなので私は触っていないのですが、基調講演などを見ている限りだと、実際にデプロイされているリソースを元にして「ここをこうすれば良い」といった事を提示してくれるため、単なる Q&A Bot的な形では無く、実態に即した内容を元に教えてくれるため、しっかり考えられて実装されているなという印象です。

Direct VPC Egress GA

来ました!Direct VPC EgressがGAです!

これまでCloud RunがVPC上のリソースにアクセスする場合Serverless VPC Access Connectorなどを使用して、経路を確保してあげる必要がありました。これらのサービスはスケーリングの運用上の注意点が多少あったり、Compute Engine VMの料金も掛かりましたが、Direct VPC Egressにより直接VPC内のリソースにアクセスできるようになり、Serverless VPC Access Connectorが不要となりました。個人的にはGAになってくれて嬉しいアップデートです!

Cloud RunのVPC接続の詳細については、下記記事にてとても分かりやすくまとめられておりますため、合わせて参考にしてみていただけると良いかと思います!

Multi-region services(Private Preview)

Cloud Runをコマンド一発で複数のリージョンにデプロイ出来るようになりました。Global External Load Balancerもセットでデプロイされるため、ユーザーから一番近いリージョンに自動的にルーティングしてくれます。

Application canvas(Private Preview)

「Cloud RunとCloud SQL」といった、よくある構成を取る場合、Terraformで書くにしてもある程度の量があり、さくっと作りたいときに若干大変だなー。と感じられた方はいらっしゃるのではないでしょうか?

Application canvasでは、GUI上でCloud Runと連携するCloud SQLやVertex AIなど数クリックで作成して、デプロイすることが出来るサービスです。また、Geminiを使ってPromptで自然言語で「こういったアーキテクチャ欲しい」と言うと作成してくれるサービスとなっています。

Cloud Service Mesh With Cloud Run(Private Preview)

Next '24で公開された Cloud Service Mesh に Cloud Run としても対応して、Full-managed な Envoy sidecar が自動的に挿入してCloud Runもサービスメッシュ内として使用することが出来るようになるそうです。

Kubernetesのコスト最適化・信頼性に関するセッション

続いて、Kubernetesのコスト最適化・信頼性に関するセッション、DEV306 Why Google Kubernetes Engine uniquely supports the reliability-first approachを紹介します

Kubernetes費用最適化のためのゴールデンシグナル

Kubernetesの費用最適化の前提として、Workload rightsizing, Demand based downscaling, Cluster bin packing, Discount coverageの4つの観点を示したゴールデンシグナルが紹介されていました。

QoSにおける注意点

こちらのセッション、ざっくりまとめると「Kubernetesで信頼性を下げずにコストを下げるために、まずはじめにPodに対して適切なリソースをリクエストして、QoSの取り扱いには注意しよう」といった内容で、前提知識として、Podを定義時の resourceslimitrequest でBestEffort、Bustableか Guaranteedになるかが決まり、 request を指定していないBestEffortのPodがNode内に入り込んでいると、メモリが溢れた場合OOM Killerが動き信頼性が落ちる といったQoSに関しての解説をされていました。

これらのベストエフォートのリスクを飲んだ上で本当に実行しているワークロードにBestEffortが必要かを慎重に判断して、BestEffortである必要がなければ適切な request を設定した上でサイジングを調整するのが、信頼性を損なわずにコストを抑える第一歩と紹介されていました。

また、GKEではLog ExplorerからKubernetesのEviction PodやOOM Killerのログを観測する事ができるため、どのPodがどのような挙動をして落とされたのかのデバッグを行う例と、現在GKE上で実行されている request が指定されていなく、リスクになり得るWorkloadを一覧できるダッシュボードがあることを紹介されていました。

まとめ

Cloud Runのアップデートセッションは、Product Ownerが直接喋っていただけるセッションで、大量のアップデートを紹介されていてテンションがあがりました。

Kubernetesの信頼性とコストに関するセッションでは、普段何気なく「う〜んこれは2vCPU!w」みたいな形で指定してた request/limitを見直す良い機会になりました。また、QoSに関しては深く調べているとcgroupの話にもなってくるため、大変興味深かったです!