クラスターでの Kubernetes のベスト プラクティスを確認するChecking for Kubernetes best practices in your cluster

お使いのアプリケーションで最適なパフォーマンスと回復力を確保するには、Kubernetes のデプロイで従うべきベスト プラクティスがいくつかあります。There are several best practices that you should follow on your Kubernetes deployments to ensure the best performance and resilience for your applications. kube-advisor ツールを使用すると、これらの推奨事項に従っていないデプロイを探すことができます。You can use the kube-advisor tool to look for deployments that aren't following those suggestions.

kube-advisor についてAbout kube-advisor

kube-advisor ツールは、お使いのクラスターで動作するように設計された単一のコンテナーです。The kube-advisor tool is a single container designed to be run on your cluster. このツールを使用すると、ご自身のデプロイに関する情報を Kubernetes API サーバーに照会し、推奨される一連の改善点を取得できます。It queries the Kubernetes API server for information about your deployments and returns a set of suggested improvements.

kube-advisor ツールは、PodSpecs for Windows アプリケーションおよび Linux アプリケーションに欠けているリソース要求と制限を報告することができますが、kube-advisor ツール自体は Linux ポッドでスケジュールする必要があります。The kube-advisor tool can report on resource request and limits missing in PodSpecs for Windows applications as well as Linux applications, but the kube-advisor tool itself must be scheduled on a Linux pod. ポッドの構成でノード セレクターを使用して、特定の OS のノード プールで実行するようにポッドをスケジュールすることができます。You can schedule a pod to run on a node pool with a specific OS using a node selector in the pod's configuration.

注意

kube-advisor ツールは、ベストエフォート方式で Microsoft によってサポートされます。The kube-advisor tool is supported by Microsoft on a best-effort basis. 問題と提案は GitHub で提出する必要があります。Issues and suggestions should be filed on GitHub.

kube-advisor の実行Running kube-advisor

ロールベースのアクセス制御 (RBAC) 用に構成されたクラスターでこのツールを実行するには、次のコマンドを使用します。To run the tool on a cluster that is configured for role-based access control (RBAC), using the following commands. 最初のコマンドにより、Kubernetes サービス アカウントが作成されます。The first command creates a Kubernetes service account. 2 番目のコマンドでは、そのサービス アカウントを使用して、ツールがポッドで実行されます。また、そのポッドは、終了後に削除されるように構成されます。The second command runs the tool in a pod using that service account and configures the pod for deletion after it exits.

kubectl apply -f https://raw.githubusercontent.com/Azure/kube-advisor/master/sa.yaml

kubectl run --rm -i -t kubeadvisor --image=mcr.microsoft.com/aks/kubeadvisor --restart=Never --overrides="{ \"apiVersion\": \"v1\", \"spec\": { \"serviceAccountName\": \"kube-advisor\" } }"

RBAC を使用していない場合は、次のようにコマンドを実行できます。If you aren't using RBAC, you can run the command as follows:

kubectl run --rm -i -t kubeadvisor --image=mcr.microsoft.com/aks/kubeadvisor --restart=Never

数秒すると、ご自身のデプロイで改善の可能性がある点を示す表が示されます。Within a few seconds, you should see a table describing potential improvements to your deployments.

kube-advisor の出力

実行されるチェックChecks performed

このツールでは、Kubernetes のいくつかのベスト プラクティスについて検証が行われ、それぞれに固有の修正方法が推奨されます。The tool validates several Kubernetes best practices, each with their own suggested remediation.

リソースの要求と制限Resource requests and limits

Kubernetes では、ポッド仕様でのリソースの要求と制限の定義がサポートされます。Kubernetes supports defining resource requests and limits on pod specifications. 要求で定義されるのは、コンテナーの実行に必要な最小 CPU とメモリです。The request defines the minimum CPU and memory required to run the container. 制限で定義されるのは、許可する必要がある最大 CPU とメモリです。The limit defines the maximum CPU and memory that should be allowed.

既定では、ポッド仕様について要求も制限も設定されていません。By default, no requests or limits are set on pod specifications. これにより負荷の割り当てがノードに集中し、コンテナーの不足が発生する可能性があります。This can lead to nodes being overscheduled and containers being starved. kube-advisor ツールにより、要求と制限が設定されていないポッドが強調表示されます。The kube-advisor tool highlights pods without requests and limits set.

クリーンアップしていますCleaning up

お使いのクラスターで RBAC が有効になっている場合は、ツールを実行した後に次のコマンドを使用して、ClusterRoleBinding をクリーンアップできます。If your cluster has RBAC enabled, you can clean up the ClusterRoleBinding after you've run the tool using the following command:

kubectl delete -f https://raw.githubusercontent.com/Azure/kube-advisor/master/sa.yaml

RBAC が有効になっていないクラスターに対してツールを実行している場合、クリーンアップは不要です。If you are running the tool against a cluster that is not RBAC-enabled, no cleanup is required.

次の手順Next steps