このトピックでは、Container Service for Kubernetes (ACK) Proクラスターで制御プレーンコンポーネントダッシュボードを表示する方法について説明します。 このトピックでは、制御プレーンコンポーネントへのアクセスに関するベストプラクティスも提供します。
前提条件
制御プレーンコンポーネントの監視機能は、バージョンが1.16以降のACK Proクラスターに適用されます。
アプリケーションリアルタイム監視サービス (ARMS) が起動されます。 詳しくは、「ARMS の有効化」をご参照ください。
ack-arms-prometheusコンポーネントがインストールされています。 詳細については、「コンポーネントの管理」をご参照ください。
コンポーネント平面コンポーネントダッシュボードの表示
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
On thePrometheusモニタリングページをクリックし、主要コンポーネントのモニタリングタブをクリックします。
このページでは、ACK Pro API server、ACK Pro ETCD、ACK Pro Scheduler、ACK Pro Cloud Controller Manager、およびACK Pro Kube Controller Managerのダッシュボードを表示できます。
説明最新のPrometheusダッシュボードを使用するには、コンソールの [アドオン] ページからack-arms-prometheusを最新バージョンに更新します。 詳細については、「コンポーネントの管理」をご参照ください。
制御プレーンコンポーネントへのアクセスのベストプラクティス
100を超えるノードと大量のKubernetesリソースを含むACK Proクラスターの制御プレーンコンポーネントにアクセスする場合は、ベストプラクティスのルールに従うことをお勧めします。 これにより、クラスターの安定性が向上します。
InformerまたはListerを使用してAPIサーバーからデータを取得します。 これにより、APIサーバーとetcdの負荷を軽減できます。
すべてのデータを一覧表示する場合は、
resourceVersion=0
をリクエストに追加して、etcdがオーバーロードされた場合にAPIサーバーキャッシュからデータを取得することを推奨します。 etcdからデータを取得する場合は、ページごとに返されるエントリ数を制限するlimitオプションを追加することをお勧めします。Protobuf
をAPIシリアル化プロトコルとして使用すると、JSONと比較してメモリリソースとデータ転送が少なくて済みます。 詳細については、「リソースの代替表現」をご参照ください。 次のコードブロックに例を示します。kubeConfig, err := clientcmd.BuildConfigFromFlags(s.Master, s.Kubeconfig) if err != nil { return nil, err } kubeConfig.AcceptContentTypes = strings.Join([]string{runtime.ContentTypeProtobuf, runtime.ContentTypeJSON}, ",") kubeConfig.ContentType = runtime.ContentTypeProtobuf client, err := clientset.NewForConfig(restclient.AddUserAgent(kubeConfig, "content-type-example")) ...
できるだけ早い機会に、ConfigMaps、Secrets、永続ボリュームクレーム (PVC) などのアイドルKubernetesリソースを削除します。 これらのアイドルリソースは、保留中のポッドを作成できます。 クラスター内の保留中のポッドの数が1000を超えると、kube-apsierver、kube-controller-manager、およびkube-schedulerの安定性が影響を受けます。
制御プレーンコンポーネントのリソース使用量、特にCPUとメモリ使用率のメトリックに細心の注意を払って、継続的な高リソース使用量によるメモリ不足エラーを防ぎます。 リソース使用率が高いままの場合は、無効なリソースを削除し、クライアントのアクションを最適化し、クラスター内のワークロードを分離することを推奨します。
一部のオープンソースコンポーネントは、制御プレーンの負荷を大幅に増加させる可能性があります。 これらのコンポーネントの公式Webサイトで最適化ソリューションを見つけることができます。 たとえば、Argoワークフローは、Argoがビジー状態のときに圧倒されたKubernetes APIの問題を解決するソリューションを提供します。 詳細については、「大規模な実行」をご参照ください。
関連ドキュメント
制御プレーンコンポーネント | ダッシュボード | リファレンス紹介 | リンク |
Kube-apiserver | ACK Pro APIServer | kube-apiserverでサポートされているメトリックについて説明し、kube-apiserverのダッシュボードの使用に関する注意事項を示し、一般的なメトリック異常のトラブルシューティング方法を提案します。 | |
cloud-controller-manager | ACK Pro Cloudコントローラマネージャ | cloud-controller-manangerでサポートされているメトリックについて説明し、cloud-controller-managerのダッシュボードの使用に関する注意事項を示し、一般的なメトリック異常のトラブルシューティング方法を提案します。 | cloud-controller-managerのメトリック |
etcd | ACKプロETCD | etcdでサポートされているメトリックについて説明し、etcdのダッシュボードの使用状況に関するメモを提供し、一般的なメトリック異常のトラブルシューティング方法を提案します。 | |
kube-controller-manager | ACK Pro Kubeコントローラマネージャ | kube-controller-managerでサポートされているメトリックについて説明し、kube-controller-managerのダッシュボードの使用状況に関する注意事項を示します。 | kube-controller-managerのメトリック |
kube-scheduler | ACK Proスケジューラ | kube-schedulerでサポートされているメトリックについて説明し、kube-schedulerのダッシュボードの使用に関する注意事項を示し、一般的なメトリックの異常をトラブルシューティングする方法を提案します。 | kube-schedulerのメトリック |
カスタムPrometheusモニタリングとアラート | カスタムダッシュボード名 | ACK Proクラスター内のkube-apiserver、etcd、kube-scheduler、cloud-controller-manager、kube-controller-managerから自己管理されたPrometheusシステムにメトリックを収集し、推奨されるアラート設定を提供する方法について説明します。 |