Kubernetes API の優先度およびフェアネスの設定

IBM Cloud Kubernetes Service クラスターには、API サーバーに対する同時要求を処理してトラフィックの過負荷を防ぐためのデフォルトの設定が適用されています。 クラスターの API サーバーに対して実行される要求について、独自のフロー・スキーマと優先度レベルを構成することができます。 詳細については、『 Kubernetes 』のドキュメントにある「 APIの優先順位と公平性 」を参照してください。

例えば、あるユーザーまたは名前空間で、実稼働環境の重要なアプリを実行するとします。 フロー・スキーマと優先度を作成することで、重要なアプリの要求がクラスターの他のアプリよりも優先して API サーバーで満たされるようにすることができます。

デフォルトのフロー・スキーマおよび優先度レベルの確認

Kubernetes のデフォルト設定に加えて、IBM Cloud Kubernetes Service によって特定のデフォルトのフロー・スキーマと優先順位レベルが設定されます。

デフォルトのフロー・スキーマと優先順位
フロー・スキーマ 要求元のリソース 優先順位
apiserver-health Kubernetes API サーバーの正常性に関するリソース これらのリソースではカスタム優先順位です。
calico-apiserver-service-accounts 名前空間内のサービス・アカウントを使用する calico-apiserver 名前空間内のリソース kube-system のネームスペースのサービスアカウントと同じ優先度です。 このスキーマは、 IBM Cloud Kubernetes Service のバージョン 1.31 以降で利用可能です。
calico-system-service-accounts 名前空間内のサービス・アカウントを使用する calico-system 名前空間内のリソース kube-system のネームスペースのサービスアカウントと同じ優先度です。 このスキーマは、 IBM Cloud Kubernetes Service のバージョン 1.29 以降で利用可能です。
ibm-admin IBM クラスター管理者のリソース クラスター管理者による要求を優先順位の制限から除外します。
ibm-system-service-accounts 名前空間内のサービス・アカウントを使用する ibm-system 名前空間内のリソース kube-system 名前空間サービス・アカウントと同じ優先順位
ibm-operators-service-accounts 名前空間内のサービス・アカウントを使用する ibm-operators 名前空間内のリソース kube-system のネームスペースのサービスアカウントと同じ優先度です。
system-node-proxiers kube-proxy kubelet と同じ優先順位
tigera-operator-service-accounts 名前空間内のサービス・アカウントを使用する tigera-operator 名前空間内のリソース kube-system のネームスペースのサービスアカウントと同じ優先度です。 このスキーマは、 IBM Cloud Kubernetes Service のバージョン 1.29 以降で利用可能です。

独自のフロー・スキーマと優先度を作成することはできますが、デフォルトの設定は変更しないでください。 API 要求の優先度を変更すると、予期しない結果がクラスターに生じる可能性があります。

IBM Cloud Kubernetes Service によって設定されたフロー・スキーマと優先順位レベルを確認するには、以下の手順に従います。

  1. クラスター内のすべてのフロースキーマ( IBM Cloud Kubernetes Service で設定されたものを含む)と、それに対応する優先度レベルを一覧表示します。
    kubectl get flowschemas
    
  2. 特定のフロー・スキーマの詳細を確認します。例えば、優先される API 要求を行えるリソース、行える API 要求のタイプ、要求で変更できるオブジェクトなどを確認します。
    kubectl describe flowschema <flow-schema-name>
    

IBM Cloud Kubernetes Service 作成の優先順位構成の表示

IBM Cloud Kubernetes Service は、 apiserver-health リソースのカスタム優先順位構成を設定します。

以下のコマンドを使用して、構成に関する詳細を表示します。

kubectl get prioritylevelconfiguration apiserver-health
kubectl describe prioritylevelconfiguration apiserver-health