16.5.3. ノードセレクターの使用による Pod 配置の制約
ノードセレクター を使用して、Pod が特定のラベルを持つノードにのみ配置されるようにすることができます。クラスター管理者は、Pod ノード制約の受付コントローラーを使用して、pods/binding パーミッションのないユーザーがノードセレクターを使用して Pod をスケジュールできないようにするポリシーを設定できます。
マスター設定ファイルの nodeSelectorLabelBlacklist
フィールドを使用して、一部のロールが Pod 設定の nodeSelector
フィールドで指定できるラベルを制御できます。pods/binding パーミッション ロール を持つユーザー、サービスアカウントおよびグループは任意のノードセレクターを指定できます。pods/binding パーミッションがない場合は、nodeSelectorLabelBlacklist
に表示されるすべてのラベルに nodeSelector
を設定することは禁止されます。
たとえば、OpenShift Container Platform クラスターは、2 つの地域にまたがる 5 つのデータセンターで設定される場合があります。米国の us-east、us-central、および us-west、およびアジア太平洋 (APAC) の apac-east および apac-west です。それぞれの地理的地域の各ノードには、それらに応じたラベルが付けられます。たとえば、region: us-east
のようになります。
ラベルの割り当ての詳細は、ノードでのラベルの更新 を参照してください。
クラスター管理者は、アプリケーション開発者が地理的に最も近い場所にあるノードにのみ Pod をデプロイできるインフラストラクチャーを作成できます。ノードセレクターを作成し、米国のデータセンターを superregion: us
に、APAC のデータセンターを superregion: apac
に分類できます。
データセンターごとのリソースの均等なロードを維持するには、必要な region
をマスター設定の nodeSelectorLabelBlacklist
セクションに追加できます。その後は、米国の開発者が Pod を作成するたびに、Pod は superregion: us
ラベルの付いた地域のいずれかにあるノードにデプロイされます。開発者が Pod に特定の region (地域) をターゲットに設定しようとすると (例: region: us-east
)、エラーが出されます。これを Pod にノードセレクターを設定せずに試行すると、ターゲットとした region (地域) にデプロイすることができます。 それは superregion: us
がプロジェクトレベルのノードセレクターとして設定されており、region: us-east
というラベルが付けられたノードには superregion: us
というラベルも付けられているためです。
必要なラベル (詳細は、ノードでのラベルの更新 を参照) および ノードセレクター が環境にセットアップされていることを確認します。
たとえば、Pod 設定が必要なラベルを示す
nodeSelector
値を持つことを確認します。apiVersion: v1 kind: Pod spec: nodeSelector: <key>: <value> ...
マスター設定ファイル /etc/origin/master/master-config.yaml を変更し、
nodeSelectorLabelBlacklist
を、Pod の配置を拒否する必要のあるノードホストに割り当てられるラベルと共にadmissionConfig
セクションに追加します。... admissionConfig: pluginConfig: PodNodeConstraints: configuration: apiversion: v1 kind: PodNodeConstraintsConfig nodeSelectorLabelBlacklist: - kubernetes.io/hostname - <label> ...
変更を有効にするために OpenShift Container Platform を再起動します。
# master-restart api # master-restart controllers