Kubernetes が開発され、そのテクノロジーが成熟するにつれて、ますます多くの企業がアプリケーションを Kubernetes にデプロイすることを選択するようになっています。しかし、アプリケーションを Kubernetes にデプロイするだけで十分でしょうか?明らかにそうではありません。アプリケーションのコンテナ化は、長い道のりの最初の一歩にすぎません。アプリケーションをいかに安全かつ安定して実行させるかが、その後の作業のすべてです。 ここでは主に以下の側面から整理しますが、ほとんどの企業にとってこれで十分です。 ノードノードは物理ホストまたはクラウドホストであり、Kubernetes のキャリアとなります。ほとんどの場合、異常がない限り、Node に何が起こってもあまり気にしません。しかし、運用および保守担当者として、私たちが最も望まないのは例外であり、Node についても同じことが言えます。 ノードは、主に次のような複雑な操作をあまり実行する必要はありません。 > カーネルのアップグレードほとんどの企業にとって、CentOS システムは依然として第一の選択肢です。デフォルトでは、7 シリーズ システムのデフォルト バージョンは 3.10 です。このバージョンのカーネルには、Kubernetes コミュニティで既知のバグが多数あるため、ノードのカーネルをアップグレードする必要があります。または、企業は基盤となるオペレーティング システムとして Ubuntu を選択できます。 カーネルをアップグレードする手順は次のとおりです (簡単なアップグレード方法)。
>ソフトウェアアップデートほとんどの人にとって、互換性の問題を恐れてソフトウェアのアップデートは行われないケースがほとんどです。しかし、実際の運用においては、リスクの高い脆弱性があることが分かっているソフトウェアについては、個別に対処して更新する必要があります。 >Docker構成ファイルの最適化Docker 構成ファイルの場合、主な最適化はログ ドライバー、ログ サイズ、およびイメージの高速化です。その他の構成は、次のように状況によって異なります。
>kubeletパラメータを最適化するK8S の場合、kubelet は各ノードのチームリーダーであり、ノードの「食料、衣料、住居、日常生活」を担当します。主なパラメータ設定は次のとおりです。
その主な機能は、各ノードのリソース予約を増やし、ノードのダウンタイムをある程度防ぐことです。 >ログ構成管理ここでのログ構成管理は、独自に開発したアプリケーション ログではなく、システム ログを対象としています。デフォルトでは、システム ログに特別な構成は必要ありません。私がこれを取り上げるのは、主にログの追跡可能性を確保するためです。何らかの理由でシステムがハッキングされ、システムが削除された場合、分析用にログが提供されます。 したがって、条件が許せば、ノードのシステム ログをリモートでバックアップする必要があります。 rsyslog は構成管理に使用でき、ログはリモート ログ センターまたは OSS に保存できます。 > セキュリティ構成ここではセキュリティ構成はあまり関係なく、主に既知のセキュリティ問題の強化に重点を置いています。主に 5 つのタイプがあります (もちろん、状況に応じてさらに種類があります)。
ポッドPod は K8S の最小のスケジューリング単位であり、アプリケーションのキャリアです。その安定性はアプリケーション自体に直接関係します。アプリケーションを展開するときは、次の点を考慮する必要があります。 リソースの制限ポッドはホストのリソースを使用します。適切なリソース制限により、リソースの過剰販売やリソースの優先使用の問題を効果的に回避できます。リソース制限を構成するときは、実際のアプリケーション状況に基づいて Pod の QoS を決定する必要があります。 QoS 構成はそれぞれ異なります。 アプリケーション レベルが比較的高い場合は、保証レベル構成を次のように構成することをお勧めします。
アプリケーション レベルが通常の場合は、次のように Burstable レベルを構成することをお勧めします。
BestEffort Pod タイプを使用しないことを強くお勧めします。 > スケジュール戦略スケジュール戦略も状況に応じて決定されます。アプリケーションを特定のノードにスケジュールする必要がある場合は、次のようにアフィニティ スケジューリングを使用できます。
ノードが 1 つのアプリケーションのみをスケジュールすることを許可する場合は、テイント スケジューリングが必要です。つまり、最初にノードが汚染され、次にノードにスケジュールされる必要があるポッドが汚染を許容する必要があります。最も安全な方法は、ラベル付けと染色を組み合わせることです。次のように:
もちろん、Pod と Node 間の関連に加えて、Pod と Pod 間の関連もあります。一般的に、真の高可用性を実現するために、同じアプリケーションのすべての Pod を同じノードにスケジュールすることは推奨されないため、次のように Pod に対してアンチアフィニティ スケジューリングを実行する必要があります。
アプリケーションが他のアプリケーションの近くにある場合は、次のようにアフィニティを使用して、ネットワーク遅延をある程度まで削減できます。
>エレガントなアップグレードデフォルトでは、Pod はローリング アップデート戦略を使用します。私たちの焦点は、新しい Pod が起動した後、外部に気付かれることなく、古い Pod がトラフィックを適切に処理できる方法にあります。 最も簡単な方法は「数秒間スリープする」ことですが、これではトラフィックの 100% の適切な処理が保証されるわけではありません。方法は次のとおりです。
登録センターがある場合は、終了する前にまず登録センターから元のサービスからログオフすることができます。たとえば、nacos は次のように登録センターとして使用されます。
>プローブ構成プローブは重要ですか?はい!これは、kubelet が Pod が正常かどうかを判断するための重要な基礎となります。 Pod の主なプローブは次のとおりです。
このうち、startupProbe はバージョン v1.16 以降に新しく追加されたプローブです。主に起動時間の長いアプリケーションに使用されます。ほとんどの場合、livenessProbe と readinessProbe のみを構成する必要があります。 通常、Pod はアプリケーションを表すため、プローブを構成する際には、アプリケーションが正常かどうかを直接反映するのが最適です。多くのフレームワークにはヘルス検出機能があります。プローブを構成するときに、これらのヘルス検出機能の使用を検討できます。フレームワークにそれらがない場合、標準化されたヘルス検出を容易にするために、開発者に統一されたヘルス検出インターフェースの開発を依頼することも検討できます。次のように:
startupProbe を設定する必要がある場合は、次のように設定できます。
>保護戦略ここでの保護戦略とは、主に、ポッドを積極的に破棄するときに、保護戦略を通じて実行中のポッドの数を制御することを指します。 K8S では、この機能は PodDisruptionBudget (PDB) を通じて実装されます。いくつかの重要なアプリケーションについては、次のように PDB を構成する必要があります。
PDB では、Pod の数は主に次の 2 つのパラメータによって制御されます。
注: minAvailable と maxUnavailable は相互に排他的であるため、同時に表示できるのはそのうちの 1 つだけです。 ログログはアプリケーションのライフサイクル全体にわたって実行され、問題のトラブルシューティングやデータの分析に不可欠です。ログについては、主に以下の観点から分析が行われます。 >ログ標準ログは一般的にビジネスログと例外ログに分けられます。ログが複雑になりすぎたり、単純になりすぎたりすることは望ましくありません。ログを通じて以下の目標を達成したいと考えています。
ログ標準をどのように定義するのでしょうか?ここにいくつかの簡単なポイントがあります:
この規定の主な目的は、ログの収集と表示を容易にすることです。 >コレクションログ出力ごとに異なるログ収集ソリューションがあり、主に次の 2 つがあります。
収集のためにノードにロギングエージェントをデプロイするこのログ収集ソリューションは、主に標準的な方法で出力されたログを対象としています。アーキテクチャは次のとおりです。 非標準の出力ログを収集する方法はありません。 サイドカーとしてポッドで収集この収集ソリューションは、主に非標準の出力ログを対象としています。ログ センターにログを収集するためのサイドカーとして、Pod 内でログ収集クライアントを実行できます。アーキテクチャは次のとおりです。 ただし、この方法はリソースの無駄なので、すべてのアプリケーション ログを標準出力に出力して収集しやすくするのが理想的です。 >分析業務が通常通りのときは、ログの内容を確認することはほとんどありません。問題が発生した場合にのみログを使用して問題を分析します (ほとんどの場合はこれが当てはまります)。では、なぜここで分析を持ち出したいのでしょうか? ログには実際多くの情報が含まれています。ログを効果的に分析できれば、多くの問題を特定してトラブルシューティングするのに役立ちます。たとえば、Alibaba Cloud のログ センターはログ分析に優れています。 >アラームログアラートを使用すると、問題を迅速に特定し、トラブルシューティングの範囲を絞り込むことができます。ただし、ログアラートを実行するには、ログの「キーワード」管理を適切に行う必要があります。つまり、特定のキーワードが問題を正確に表すことができるようにする必要があります。また、一般的な用語を使用しないことが最善です。これを行う利点は、時間の経過とともに麻痺してしまうようなアラートの嵐や無効なアラートが発生するのではなく、アラートをより準備できる点です。 モニタークラスターとアプリケーションのライフサイクルは、監視システムと切り離せません。効果的な監視システムは、より高い可観測性を提供し、線形分析、トラブルシューティング、問題の特定を容易にします。また、効果的なアラーム通知と組み合わせることで、問題を迅速に特定するのにも便利です。 モニタリングに関しては、主に以下の側面から紹介します。 >クラスター監視K8S クラスターと K8S 上で実行されるアプリケーションの場合、監視には Prometheus がよく使用されます。クラスター全体の安定性はアプリケーションの安定性に関係するため、クラスターの監視は非常に重要です。以下は、実際の業務で適宜対応できる監視項目の一部を簡単にまとめたものです。 >アプリケーション監視多くの企業では、アプリケーション監視が接続されていません。主な原因は、監視インジケーターがアプリケーションに統合されていないため、監視ができないことです。したがって、アプリケーションを開発する際には、開発者がアプリケーション監視を追加し、インジケーターを Prometheus 標準形式で公開することを強くお勧めします。 開発者が積極的にインジケーターを公開することに加えて、Java エージェントを介して一部のエクスポーターを構成して、JVM 監視インジケーターなどの一部のインジケーターをキャプチャすることもできます。 アプリケーション レベルで監視すると、監視の粒度を細かく調整できるため、問題を検出しやすくなります。ここでは、アプリケーション監視項目をいくつか簡単に整理しました。 これらの監視項目は、対応するエクスポーターによって完了します。たとえば、redis ミドルウェアには redis-exporter があり、api 監視には blcakbox-exporter などがあります。 >イベント監視Kubernetes には 2 種類のイベントがあります。1 つは警告イベントで、このイベントを生成する状態遷移が予期しない状態間で発生したことを示します。もう 1 つは、予想される状態が現在の状態と一致していることを示す通常イベントです。 ほとんどの場合、イベントは現在起こっていること、または起こったことを表します。実際の作業では、このような情報を無視することは簡単なので、このような問題を回避するためにイベント監視を使用する必要があります。 K8S では、一般的に使用されるイベント モニタリングは kube-eventer です。これは、pod/node/kubelet などのリソース オブジェクトのイベントや、カスタム リソース オブジェクトのイベントを収集し、この情報を関係者に送信できます。 イベントを通じて、主に注力している監視項目は以下の通りです。 >リンク監視通常の状況では、K8S 内のアプリケーションは、明示的な接続のない個別のエンティティとして存在します。このとき、リンク全体の問題を追跡・分析できるように、アプリケーション間の関係性を示す方法が必要です。 現在、人気のあるリンク監視ツールは数多くあります。リンク監視には主にスカイウォーキングを使用します。主剤末端は比較的豊富で、高い自己拡張能力を備えています。興味のある友達はそれについて学ぶことができます。 リンク監視により、次の目標を達成できます。 >アラーム通知多くの人は警告だけで十分だと考えて、警告通知を無視します。ただし、アラーム通知を行う際には、慎重に検討する必要があります。 以下は焦点の簡単な要約です。 個人的には、どの指標を警告する必要があるかが難しいところにあると思います。指標を選択するときは、次のルールに従う必要があります。
これらすべてのルールを考慮すると、必要な指標を選択しやすくなります。 2 つ目は緊急度の分類です。これは主に、アラーム インジケータによって明らかにされた問題を適時に解決する必要があるかどうかと、影響の範囲に基づいています。 障害エスカレーションは、解決する必要があるが解決されていない問題に対処するために使用される戦略です。障害レベルを上げるということは、緊急度を上げるということと同じです。通知チャネルの分類は、主にさまざまなアラームを区別し、アラーム情報をすばやく受信するのに役立ちます。 最後に上記は基本的な操作の一部です。 YAML エンジニアにとって、それらは必須のスキルの予備軍です。このセットはほとんどの企業に適用可能です。 この記事はWeChat公開アカウント「運営保守開発ストーリー」から転載したものです。以下のQRコードからフォローできます。この記事を転載する場合は、Operation and Maintenance Development Story のパブリック アカウントにお問い合わせください。 |
<<: 3分レビュー! 2021 年 6 月のクラウド コンピューティング分野の重要な動向を簡単に紹介します
>>: 企業が直面するエッジコンピューティングの 5 つの課題とその克服方法
産業部門の組織にとって、最前線の労働者は生産性、効率性、安全性の目標を達成する上で重要な役割を果たし...
収益性の高いウェブサイト運営は、ウェブサイトを構築するすべてのウェブマスターの最終的な目標です。しか...
21世紀のインターネットの急速な発展は、インターネットユーザーの数の劇的な増加と一致しています。より...
ダンストレーニングウェブサイトの概要:毎日2〜4件のオリジナルまたは擬似オリジナルの更新を維持し、3...
現在、Kuroit は米国西海岸のロサンゼルスとフェニックスでプロモーションを実施しています。いくつ...
シングルページは、マーケティング戦略やSEO最適化効果を表現する最良の方法として、人々に常に利用され...
ウェブサイトの最適化には、マクロ最適化戦略とミクロ最適化戦略の両方が含まれます。この記事では、最適化...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン多くのウェブサイトは含まれていますが、ラ...
エンタープライズレベルのフルスタッククラウドICTサービスプロバイダーであるQingCloud(qi...
11月1日、雲旗大会において、アントグループはSOFAStack 5.0のアップグレード版を正式にリ...
今日はとても不思議な日です。Baiduのスタッフのミスなのか、コンピューターの不具合なのかは分かりま...
ウェブサイトの全体的なトラフィックは、ウェブサイトのページの全体的なインクルード、ウェブサイトのペー...
NetEase Youdao Search は本日改訂されました。社内コード名「Tanggula」の...
コンテンツの再パッケージ化は、最も強力なコンテンツ マーケティング戦略の 1 つです。この用語はあま...
今朝、Baidu Webmaster PlatformのWebマスターツールにログインして、ウェブサ...