-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
再度サンプルソースのフィードバックお願いします。 #4
Comments
HPAについてとりあえず、オートスケールできるように設定を追加してみたような感じですかねー。 また、ご存知かもですがk8sのスケールには Podのスケール を Nodeのスケール があり、Podに比べてNodeの方はスケールに時間がかかってしまうため、以前お話にあったバースト系の負荷増加に対応にはさらに考慮が必要ですねー。 これは僕の個人的な意見なのですが、基本的にはk8sのスケールアウトはおまけ程度で考えておいて、最初から想定される負荷(今回で言うと分間数百アクセスでしたっけ?)が耐えられる構成にしておくのが良いかもです。。。! deploy.shのJobの完了待ち処理Lines 13 to 39 in d09b58a
僕も実際にプロダクトとしては使ったことが無いのですが、1.11から refs: https://stackoverflow.com/questions/44686568/tell-when-job-is-complete Podのレプリカ数Line 41 in d09b58a
sample-k8s/k8s/gke/podscaler.yaml Lines 10 to 11 in d09b58a
こんな感じで、Deploymentで指定しているレプリカ数をHPAで指定している最低レプリカ数が違う風に設定てしたことが無いので、どんな挙動をするかイメージ湧いて無いんですけど、こんな感じで設定するとデプロイ直後は2Pod立ち上がって、その後場合によってはPod1までダウンスケールする感じなんです?? 🤔 Deploymentで指定しているレプリカ数を下回らないようにPodがスケジュールされるとので、1Podまでダウンスケールせずに実質2Podが最低Pod数になるのかな?と思ったんですが、HPA設定のほうが優先されるんですかね? Containerのresourceについてどういうふうに計測して割当を行ったのかわからないので、もしかしたらこれが適正って可能性もあるのですが全体的に割当量が少ない気がしましたー 🙌 知ってるかもですが、 Cloud SQL ProxyLines 87 to 89 in d09b58a
Deprecateになっているリポジトリなので本当に参考値なのですが、↓のhelmチャートだとデフォルトのリソース割り当てが
https://github.com/helm/charts/tree/master/stable/gcloud-sqlproxy となってますので、とりあえず同じ程度か、DBアクセスが多い場合は少し多めにlimitを取っても良いかもです 👍 nginx, railsLines 119 to 121 in d09b58a
Lines 142 to 144 in d09b58a
メインの処理をやらせるコンテナなので、もう少し割り当てて挙げて良いような気がするんですけど、大丈夫です?? 🤔
などがあると思います! 各コンテナのpreStopについてCloud SQL ProxyLine 96 in d09b58a
Lines 129 to 132 in d09b58a
Lines 157 to 160 in d09b58a
停止シグナル送ってるだけなら、わざわざpreStopを定義してあげる必要は無いような? |
ここもう少し聞きたいと思いました。 |
ここの部分をまずは重要視しておりますが、 負荷系の回答がメインとなっており、状況を聞きたいと思っています。 負荷系は今後実行していく予定ではあるのですが、 |
@ryutah
まさにHPA / resources.requests(limits) に関しては負荷をかけながら実際に見ていくしか適切な値は得られないと思ったので、現状はとりあえずの意味のない数値となっています。 replicasとminReplicasは特に考えずだったので、普通はminより下に設定しないということであればそうします!
ありがとうございます!知らなかったので確認してみます!
https://qiita.com/superbrothers/items/3ac78daba3560ea406b2 停止シグナルというよりsleepが大事(25秒は長すぎるのは承知です)だと思ってまして、、、 ですが、先日maxSurgeとかアップデート戦略をお伺いする前の設定そのままだったので、仰っていただいた通りに設定できていればこちらは不要でもダウンタイムゼロが実現できるという認識でよろしいですかね??:smile: |
特別なことと言えるかわかりませんが、TGではWebでの開発はGAEを主に利用してます ✋ その他、なるべくマネージドでスケール可能なサービスを使ってインフラの構築や運用をしないような構成を意識します。
設定ファイルなどの確認をした上で気になったことを回答しているのでこれやってるイメージだったんですけど、イメージされてた回答とちょっと違いましたかね?? 結局設定ファイルとスクリプトしか見てないため、 「どういう判断でそうしたのか」みたいな文脈があまりわかっておらず、課題になってそうなところを勝手に想像してるのが原因かもですね 🤔 ちょっと手間かもしれませんが、 各設定ファイルとかスクリプトの中に あえてそうしている 、のか よくわからないけどとりあえずこうしてる なのかわかるようにコメントをつけてもらえたりするともう少しいい感じの回答ができるかもです! 🙏 🙏 |
今の設定だと1CPU割り当てられてるノードの場合で最大5つのPod立ち上がる計算になりますからねー。ちょっと厳しそう! 参考程度ですが、僕は1Podで1CPUの割当するくらいからスタートすることが多いので、そのあたりを基準に割当考えてもいいかもですー ✋
あーそうんなんですね!これは地味に知らなかったです!
あーーー、なるほどなるほどGraceful Shutdown用ですね!理解しておらずごめんなさい 💦 そうですね!確かにアップデート時のエラーを極力減らすように考えると、今やってる感じでpreStopでsleep箚せといた方が良さそうです! |
@ryom0624 あ、ちなみにCloud SQL Proxyの方はSIGTERMでのGraceful Shutdownに対応してますので、そいつはpreStopのsleep いらないかもですねー |
ありがとうございます!そうします!
そうなんですねー。
そうします!ありがとうございます! |
そうなのですね。。。。 ・GAEをTGでチョイスしている理由を知りたいです。 ・弊社はrubyで組んでいるのですが、App Engine フレキシブルで構築してく必要があるのかなと思っております ・そもそもブランドサイト等はGAE向きかなとも思っておりますが、ご意見ほしく
村上からも同じような質問ありましたが、あらためて
これ入れてみます! |
月末駆け込みすみません、
こちらやってみたのですが、 これも最初の段階ではスペックあげて2CPUとかにして負荷検証とかのフェーズで調整していく。みたいな認識であっていますでしょうか? |
運用、開発の楽さとスケーラビリティの高く、コストが優れている点ですね! また、ゼロスケールしますので開発環境やステージング環境などを分けている場合でも余計な費用がかからずに済むなどもメリット大きいですね ✋
App Engine フレキシブルだとそんなにメリット享受できませんよーとかありますでしょか? そうですねー、、、Standard Environmentに比べるとちょっと見劣りするなー点が多いですね その分、コンテナでシステムを構築できる汎用性の高さが強みでもありますし、ローカルストレージやCPU割当などもSEより自由に設定可能、VPCの設定が可能であることなどSEには無いメリットも存在するため、一概にはSEのほうが良いとは言い切れないと思います! また、SSL証明書の自動更新などはFlexible Environmentでもやってくれますので、どちらにしろ運用や環境構築はかなり楽になるとは思いますー。
リプレイスではなく新規開発なら間違いなくGAEを選んでたかなーという感じですねー。 GAEは運用や開発が楽ではありますが、特有の制限事項も結構ありますので、最悪アプリケーションの機能自体に手を入れなければならないという可能性がなくも無い点が少し悩ましいポイントですねー。 バッチ処理や非同期処理などをやりたい場合は、専用のやり方を覚える必要がありますし、単純に「今動いているのをそっくりそのまま移行したい」という場合は少し選択をためらうプラットフォームでもあるりますねー。 ただ、GAEに載せられたときのメリットはかなりでかいですので、検証してみる価値はあるかと思います!
あーーなるほど!了解です! |
ごめんなさい、、、僕の返信見直しましたが、requestsとlimitsをごちゃまぜにして回答しているような感じですし、その後の説明もちょっといろいろ説明が足りてない感じがあるので、ちょっと説明し直します。。。 🙏 🙏 resources.requestsとresources.limitsresources.requests概要
適切な割当数の調査方法
Pod起動時に、ノードに必要なリソースが足りない場合の挙動
設定すべきかどうか設定推奨。 resources.limits概要
適切な割当数の調査方法
設定すべきかどうか特に必要性を感じなければ不要。 という感じです。。。! 改めて質問にお答えすると、requestsの適切な割当数が不明なようなら、とりあえず未設定の状態で構築してみて負荷をかけ、どの程度リソースを使っているのか確認してみると良いです!(なのでとりあえず1CPUのノードでOKかと) リソース使用量の検証のために負荷をかける際は、オートスケールをオフ(HPAの設定を外す)に、ノード数とレプリカ数も1にしてから計測したほうがやりやすいと思います 🙌 |
全体を再度確認しましたー! 致命的な問題や不足している設定は無いと思いますので、後はデプロイ -> 検証を繰り返して細かいパラメータの調整をしていく方向にすすめていくほうが良いのかなーと ✋ また、再確認していて気になった細かい点も書いて置きます。。! Lines 107 to 110 in d09b58a
この設定はもう不要になったと思ったんですが、どこかのサンプルに書いてました?? refs
sample-k8s/k8s/gke/ingress.yaml Lines 13 to 21 in d09b58a
バックエンドサービスが一つだけなら、 spec:
tls:
- secretName: "[SECRET_NAME]"
backend:
serviceName: "[SERVICE_NAME]"
servicePort: "[SERVICE_PORT]" みたいにするかな?と思いましたー。(複数のサービスにルーティングする想定ならこの方式で合ってます) Lines 46 to 48 in d09b58a
僕はJobでresourcesを指定したことがないのでちょっと気になりました。軽く調べましたが、Jobにresourcesを指定しているサンプルとかどうするのが良いかと紹介しているようなサイトも見つからず。 別に指定するのが悪いということではなく、あまりやる人いないかも?と思っただけです! |
@ryutah
ありがとうございます:smile: resourcesの解説ありがとうございます!助かります。。。
また負荷検証の方法をご教示いただく際のご依頼のときに設定しておきます!
どこかの設定を見て書いたんですが、情報が古かったですね、、、ありがとうございます。 ingressのここの部分ですか!知らなかったです。。 https://kubernetes.io/docs/concepts/services-networking/ingress/#single-service-ingress 確かGKEのデフォルトnamesepaceのresourcesが0.1でノードがパンパンになって入らなくなっちゃったときに適当につけた値だったかもしれません。。。消しておきます! |
@ryutah
ローリングアップデートの件ありがとうございました。
サンプルの方に strategy3 の記述して更新しているので、一旦プルリクの方はクローズさせていただきます。
続いての回答依頼をさせていただきます。
現状残り必要な部分としては、
このあたりかなと思っていますが、
現状の課題をあぶり出すことが現時点では一番実施したいこととなります。
自分たちの知見の中でなんとかたどり着いておりますが、
これで正しいのか、プロから見て、???な箇所の記述はないのか?
というところが気になっております。
お時間使って頂いて構いませんので
もう一度サンプルのソースをじっくりと見ていただいて、ご指摘いただくことは可能でしょうか?
もし上記以外に特に問題がなければそれはそれで一言いただきたい次第です。
一応HPAとかrequestsとかの記述もしていますが、実際の負荷を検証していない根拠のない数字なのでじっくり見ていただいた後に改めて検証方法とかのご回答の依頼をさせていただこうと思っております。
よろしくお願い致します。
The text was updated successfully, but these errors were encountered: