4.11. カタログソース Pod のスケジューリング
ソースタイプ grpc
の Operator Lifecycle Manager (OLM) カタログソースが spec.image
を定義すると、Catalog Operator は、定義されたイメージコンテンツを提供する Pod を作成します。デフォルトでは、この Pod は、その仕様で以下を定義します。
-
kubernetes.io/os=linux
ノードセレクターのみ -
デフォルトの優先クラス名:
system-cluster-critical
。 - toleration なし
管理者は、CatalogSource
オブジェクトのオプションの spec.grpcPodConfig
セクションのフィールドを変更すると、これらの値をオーバーライドできます。
Marketplace Operator の openshift-marketplace
は、デフォルトの OperatorHub
カスタムリソース (CR) を管理します。この CR は CatalogSource
オブジェクトを管理します。CatalogSource
オブジェクトの spec.grpcPodConfig
セクションのフィールドを変更しようとすると、Marketplace Operator はこれらの変更を自動的に元に戻します。デフォルトでは、CatalogSource
オブジェクトの spec.grpcPodConfig
セクションのフィールドを変更すると、Marketplace Operator はこれらの変更を自動的に元に戻します。
CatalogSource
オブジェクトに永続的な変更を適用するには、まずデフォルトの CatalogSource
オブジェクトを無効にする必要があります。
4.11.1. ローカルレベルでのデフォルト CatalogSource オブジェクトの無効化
デフォルトの CatalogSource
オブジェクトを無効にすることで、カタログソース Pod などの永続的な変更をローカルレベルで CatalogSource
オブジェクトに適用できます。デフォルトの CatalogSource
オブジェクトの設定が組織のニーズを満たさない場合は、デフォルト設定を検討してください。デフォルトでは、CatalogSource
オブジェクトの spec.grpcPodConfig
セクションのフィールドを変更すると、Marketplace Operator はこれらの変更を自動的に元に戻します。
Marketplace Operator の openshift-marketplace
は、OperatorHub
のデフォルトのカスタムリソース (CR) を管理します。OperatorHub
は CatalogSource
オブジェクトを管理します。
CatalogSource
オブジェクトに永続的な変更を適用するには、まずデフォルトの CatalogSource
オブジェクトを無効にする必要があります。
手順
すべてのデフォルトの
CatalogSource
オブジェクトをローカルレベルで無効にするには、次のコマンドを入力します。$ oc patch operatorhub cluster -p '{"spec": {"disableAllDefaultSources": true}}' --type=merge
注記また、デフォルトの
OperatorHub
CR を設定して、すべてのCatalogSource
オブジェクトを無効にするか、または特定のオブジェクトを無効にすることもできます。
4.11.2. カタログソース Pod のノードセレクターのオーバーライド
前提条件
-
spec.image
を持つソースタイプgrpc
のCatalogSource
オブジェクトが定義されている。
手順
CatalogSource
オブジェクトを編集し、spec.grpcPodConfig
セクションを追加または変更して、以下を含めます。grpcPodConfig: nodeSelector: custom_label: <label>
<label>
は、カタログソース Pod がスケジュールに使用するノードセレクターのラベルです。
4.11.3. カタログソース Pod の優先度クラス名のオーバーライド
前提条件
-
spec.image
を持つソースタイプgrpc
のCatalogSource
オブジェクトが定義されている。
手順
CatalogSource
オブジェクトを編集し、spec.grpcPodConfig
セクションを追加または変更して、以下を含めます。grpcPodConfig: priorityClassName: <priority_class>
<priority_class>
は次のいずれかです。-
Kubernetes によって提供されるデフォルトの優先度クラスの 1 つ:
system-cluster-critical
またはsystem-node-critical
-
デフォルトの優先度を割り当てる空のセット (
""
) - 既存およびカスタム定義の優先度クラス
-
Kubernetes によって提供されるデフォルトの優先度クラスの 1 つ:
以前は、オーバーライドできる唯一の Pod スケジューリングパラメーターは priorityClassName
でした。これは、operatorframework.io/priorityclass
アノテーションを CatalogSource
オブジェクトに追加することによって行われました。以下に例を示します。
apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: example-catalog namespace: openshift-marketplace annotations: operatorframework.io/priorityclass: system-cluster-critical
CatalogSource
オブジェクトがアノテーションと spec.grpcPodConfig.priorityClassName
の両方を定義する場合、アノテーションは設定パラメーターよりも優先されます。
関連情報
4.11.4. カタログソース Pod の Toleration のオーバーライド
前提条件
-
spec.image
を持つソースタイプgrpc
のCatalogSource
オブジェクトが定義されている。
手順
CatalogSource
オブジェクトを編集し、spec.grpcPodConfig
セクションを追加または変更して、以下を含めます。grpcPodConfig: tolerations: - key: "<key_name>" operator: "<operator_type>" value: "<value>" effect: "<effect>"