Kubernetes を使用する際に注意すべき落とし穴

Kubernetes を使用する際に注意すべき落とし穴

Kubernetes を実践する過程で、ギャップを埋める経験を積んできました。簡単に要約して皆さんと共有したいと思います。

Kubernetes の準備や使用を考えている方にとって、これが役立つことを願っています。

ローリングアップグレード: 更新が遅すぎる

デフォルトでは、ローリング アップグレードは 1 つずつ実行されます。更新が必要なポッドが数十または数百あり、準備状況の検出も必要な場合、プロセス全体の速度は遅くなります。より多くの Kubernetes 技術専門家とコミュニケーションを取りたい場合は、私の WeChat liyingjiese を追加し、「グループに参加」と記入してください。当グループには、世界中の大手企業のベストプラクティスと業界の最新トレンドが毎週掲載されています。

解決:

  1. ローリングアップデート:
  2. maxSurge: 20% #ローリング更新あたりのインスタンス数
  3. maxUnavailable: 10% #更新プロセス中に利用不可にできるインスタンスの数

準備状況の検出 - ロスレス更新

通常、サービスを再起動すると、しばらくの間、通常のサービスを提供できなくなります。

このプロセス中に受信リクエスト トラフィックを回避するために、準備状況検出を使用して、サービスがリクエストを正常に受信して処理する準備ができているかどうかを検出できます。

  1. ......
  2. 準備プローブ:
  3. httpGet:
  4. ホスト: api.xxx.com
  5. パス: /
  6. ポート: 80
  7. initialDelaySeconds: 3 # 最初の検出はコンテナが起動してから3秒後に開始されます
  8. periodSeconds: 60 # 60秒ごとにチェック
  9. timeoutSeconds: 3 # http 検出リクエストのタイムアウト
  10. successThreshold: 1 # 1回の成功が検出されると、サービスは「準備完了」とみなされます
  11. failureThreshold: 1 # 1つの障害が検出された場合、サービスは「準備ができていない」とみなされます
  12. ......

準備検出: 完全な麻痺

準備状況の検出は諸刃の剣です。適切に使用しないと、サービスの完全な停止など、大きな問題に簡単につながる可能性があります。

上記の準備状況チェック構成には抜け穴がたくさんあることがわかります。

たとえば、タイムアウトの場合、同時実行性が高いと、リクエストを処理できず、個々のサービスが検出リクエストを簡単にタイムアウト (504) し、すぐに準備ができていないと見なされる可能性があります。その後、トラフィックは他のサービスに転送され、すでに高負荷になっている他のサービスでも同じ状況が発生し、悪循環が生じます。すぐに、すべてのサービスが準備ができていないとみなされ、完全な麻痺状態に陥ります。

解決策:タイムアウト期間を長くし、失敗回数を増やします。

再展開します。これは、サービスがクラッシュする原因となったエラーまたはその他の異常が原因である可能性があります。つまり、ユーザーがまだサービスをリクエストしようとしている間に再起動する必要があります。正常に起動して準備完了状態になることができず、すべてのサービスが準備完了ではないことに驚かれることでしょう。同じ理由で、サービスの起動プロセスは一度に開始されるのではなく、バッチで開始されます。その結果、各サービス バッチは起動後にトラフィックを保持できず、悪循環が形成され、完全な麻痺が発生します。

解決策:準備チェックを削除してから再デプロイします。

瞬間ピークの自動拡大

POD の自動拡張は使いやすいですが、拡張インジケータ (CPU、メモリなど) が 50% を超えるなど高く設定されすぎると、トラフィックが突然 2 倍になったときに Pod を拡張する時間がなく、サービスがすぐにタイムアウトまたはハングアップしてしまいます。

解決策:インジケーターをできるだけ小さい値に設定し、以前のトラフィックに基づいて参照評価を行い、トラフィックが 2 倍、3 倍、さらには 5 倍に増加した場合でも耐えられることを確認します。

自動スケーリング: 早期拡張

通常、ノードの自動スケーリングは、Pod が自動的に拡張されるときに十分なリソースがあるかどうかによって決まります。しかし、突然の予定されたトラフィックのピークを経験するビジネスの場合、このタイプのスケーリングは明らかに遅すぎます。ピークから10分後にマシンを拡張すると、トラフィックがすでに最低レベルに戻っており、マシンがまったく役に立たないということはよくあります。さらに、トラフィック損失は、ビジネス属性の急激な低下によるものでしょうか、それとも時期尚早な容量拡張によるものでしょうか。

解決策:自社のビジネスに合わせて、過去のトラフィック量やプロモーション時間を参考にしてパターンを見つけ、事前にまたはスケジュールに従って自動拡張をトリガーします。

コンテナ内でゾンビプロセスが実行中

これは、Docker の古いバージョン (<1.13) における既知の問題です。いくつかのコンテナが起動すると、機能していないプロセス (ps aux | grep defunct) が表示され、その数が増加します。これらのプロセスはゾンビ プロセスと呼ばれ、メモリ リークを引き起こす可能性があります。コンテナを再起動しない限り、それらを強制終了することはできません。

解決策: tini

クラスターからノードを削除する

ノードを安全に削除するにはどうすればよいですか?あなたのビジネス、さらには Kube システムのものは、このノードにデプロイされます。

解決策: kubectl dock を使用して、まずノード上の Pod を他のノードに移動してから、それらをノードから移動します。

<<:  変革の次のステップ:クラウドコンピューティングホスティングが必須

>>:  クラウドコンピューティングは変化に素早く対応する必要がある

推薦する

戴志康:O2Oは私を不安にさせ、苦痛にさせる

以下は、テンセント電子商取引持株会社およびディスカスの創設者である戴志康氏がプロダクトホームサロンで...

テンセントクラウドが東京に上陸、世界のアベイラビリティゾーンの数は49に

8月20日、テンセントクラウド東京第1ゾーンデータセンターが正式にオープンしました。これは、テンセン...

クラウド コンピューティングを使用して二酸化炭素排出量を削減する際に考慮すべき 3 つの要素

企業がより責任を持ち、持続可能性に向けて進むにつれて、テクノロジーはますます重要になります。この記事...

「プロデュース101」はどのようにしてヒットオンラインバラエティ番組になったのでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています中国のガー...

Kubernetesのサービスのパフォーマンスを継続的に分析する

開発者は、問題の原因を特定するために、運用アプリケーションのパフォーマンスのボトルネックを確認する必...

Pinduoduoの618は静か

著者 | 謝忠秀編集者 | リン・ウェンロン今年6月18日、ユーザーエクスペリエンスはさまざまな電子...

ホットな記事、PR、ネットセレブの背後にはトラフィック増加のゲームのルールがある

先週、自動車専門メディア「Slow Highway」は、BMW麗江試乗会に偽のネット有名人を招待した...

2019年中国オンライン広告市場レポート!

1. コアサマリー:市場とユーザーは共に成長します。市場環境全体は常に変化しており、「ユーザーの注目...

サンドボックスに入った Web サイトを保存するためにエネルギーを投資する価値はあるでしょうか?

月収10万元の起業の夢を実現するミニプログラム起業支援プラン理由がわからない。最近、多くの友人が S...

ワイン会社のウェブサイトにおける「区切り線」を最適化する方法(I)

インターネットの継続的な発展により、ますます多くの企業がインターネット参入に参加できるようになりまし...

5月3日のPRアップデートから、Googleが独創性にますます注意を払っていることがわかります

昨晩、PRが再び更新されました。これは2012年2回目の更新です。PRは突然、ウェブマスターの間で話...

ウェブサイトの最適化: 皆さんは一方通行のインバウンドリンクを盲目的に追求していませんか?

SEO の専門家はよくこう言います。「一方通行のインバウンド リンクが最良で、外部リンクが多すぎると...

ジャック・マーが大手Vを莱王に招待、最初のパブリックアカウントのテストを開始

モーニングポストニュース(記者 韓元佳)アリババ会長のジャック・マーは「WeChatとの別れ」を発表...