スケジュール:
- ノード選択:nodeSelector、nodeNameの
- ノードの親和スケジュール:nodeAffinity
- ポッドプロとスケジューリング:podAffinity
--show-ラベル♦kubectl取得するノードがノードを表示することができ、どのラベルが存在します
ノードセレクタ
ノードで必要♦nodeSelector選択されたラベルは、ノードがノードポッドを作成するために選択され、存在します
図面は= 9527タグノードGUPを含むポッドをフィルタ処理し、その後、ポッド作成KS-NODE2にするnodeSelectorオプションを使用しました:
第二に、親和スケジュールノード
♦pod.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecutionソフト親和性のニーズを満たすために探してみてください
apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド -node- preferaffinityの #namespace:開発 :ラベル アプリ:NGX - デモ REL:安定した スペック: コンテナを: - 画像:nginxの imagePullPolicy:IfNotPresentの 名前:nginxの -node- preferaffinity 親和性: nodeAffinity : preferredDuringSchedulingIgnoredDuringExecution: - 嗜好: のMatchExpressions: - キー:GPUの 演算子:で 値: - " 952" 重量:10
♦pod.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecutionハード親和性は、要件を満たす必要があります。
/ホーム/ Ubuntuの/マニフェスト/ K8S /スケジューラ#1:K8S-マスター@ルート猫nodeaffinity_require.yaml apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド -node- requiredaffinityの #namespace:開発 :ラベル アプリ:NGX - デモ REL:安定を 仕様: コンテナ: - イメージ:nginxの imagePullPolicy:IfNotPresentの 名前:nginxの -node- requiredaffinity 親和性: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - のMatchExpressions: -キー:GPUの 演算子:では 値: - " 952 "
ラベルと一致するように同じのMatchExpressionsを使用して、必要なラベリング要件が満たされなければならない、そうでない場合は保留状態にされているだろう。
三、ポッドアフィニティスケジューリング
♦使用podAffinity我々は親和性が属するノードを決定するための標準を持っている必要があります。同じ位置に属しtopologyKeyの判断を使用します
♦ポッドノード親和性を有する親和性とれる好ましいの二種類が存在するとして必要
♦pod.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution
マスター@はルートを-K8S:/ホーム/ Ubuntuの/マニフェスト/ K8S /スケジューラ#CATのpod_affinity_require.yamlの apiVersion:V1 種類:ポッド メタデータ: 名前:POD - まず #namespace:開発 ラベル: アプリケーション:NGX - デモ REL:安定した スペックを: コンテナ: - 画像:nginxの imagePullPolicy:IfNotPresentの 名前:nginxの - 1 --- apiVersion:v1の 種類:ポッド メタデータ: 名前:ポッド -podrequiredaffinity- 秒、#ポッドは、ポッドラベルの最初の展開に応じて親和性の機械を見つけるだろう展開PODの #namespace:開発 ラベル: アプリケーション:NGX - デモ REL:安定した スペック: コンテナ: - 画像:Tomcatの imagePullPolicy:IfNotPresentの 名:Tomcatの - podrequiredaffinityの アフィニティ: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - LabelSelector: のMatchExpressions:ここで#はラベルのポッドの最初の試合なので、キー/一緒に展開する必要がラベルの値は、ポッドをしたい - キー:アプリケーション 演算子を:で 値: - 「NGX-デモ」 topologyKey:kubernetes.io / ホスト名 ホスト名の#は、同じ位置が、他のカスタムタグを使用できるかどうかを決定するために使用しました
♦pod.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution
K8S-マスター@ルート:/ホーム/ Ubuntuの/マニフェスト/ K8S /スケジューラ#の猫pod_affinity_prefer.yamlの apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド - 最初 #namespace:開発 :ラベル のアプリを:NGX - デモ REL:安定した スペックを: コンテナ: - イメージ:nginxの imagePullPolicy:IfNotPresentの 名前:nginxの - 1 --- apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド -podrequiredaffinity- 二 #namespace:開発 :ラベル のアプリを:NGX -デモ REL:安定した スペック: コンテナ: - イメージ:Tomcatの imagePullPolicy:IfNotPresentの 名:tomcatに - podrequiredaffinityの 親和性: podAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: のMatchExpressions: - キー:アプリ オペレーター:中 値: - " NGX-デモ" topologyKey: kubernetes.io / ホスト名 #可以使用自定义ラベルの 重量:60
♦pod.spec.affinity.podAntiAffinity 抗親和性、ポッドは一緒に作成していないだろう、と抗親和性が必要な2つのタイプが好まれています
apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド - 最初 #namespace:開発 :ラベル アプリ:NGX - デモ REL:安定した スペック: コンテナを: - 画像:nginxの imagePullPolicy:IfNotPresentの 名前:nginxの - 1 --- apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド -podrequired_anti_affinity- 二 #namespace:開発 ラベル: アプリ:NGX - デモ REL:安定した スペック: コンテナ: -画像:Tomcatの imagePullPolicy:IfNotPresentの 名:tomcatに - podrequired_anti_affinity 親和性:podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: のMatchExpressions: - キー:アプリ オペレーター:中 値: - " NGX-デモ" topologyKey:kubernetes.io / ホスト名
第四に、汚れのスケジューリング
汚染---汚れは、ノード上のキー属性を定義することです
taintToleration ---公差は、ポッドに定義されたキー属性であるのリストです。
- タグは、すべてのリソースに定義することができます
- 注釈は、すべてのリソースに定義することができます
- 汚れは唯一のノードで定義することができます
ポッド上の除外効果の汚染の影響の定義:
- NoSchedule:のみスケジューリングプロセスに影響を与え、それが既存のポッドには影響を与えません。
- NOEXECUTE:スケジュールに影響するだけでなく、既存のポッドに影響を与えるだけでなく、ポッドが許容ターゲットは追放されます満たしていません
- PreferNoSchedule:それは実行する場所もないかもしれない、スケジュールしないようにしよう
ノードが汚れ、ポッドな楽曲まで定義されている場合は、私たちは汚れや寛容と一致することを確認するために行く♦;残留汚れが許容できない汚れの検査を行うために行ってきました、
PreferNoSchedule場合、またはスケジュールすることができます。
NoSchedule場合は、スケジュールではないが終了に影響を及ぼさなかっすでにスケジュール、スケジュールすることはできません。
NOEXECUTE場合は、絶対にあなたが以前にポッドを実行した場合、後から汚れを変更し、スケジュールすることができない、ポッドは追放されます
♦kubectlの汚れが染みタグを戦う--help
ノード型= PRODノードK8S-ノード2 kubectl汚染:NoSchedule K8S-node2でマークされprod環境ラベルに、効果があるNoSchedule
K8Sは、ノードノード2 kubectlを汚染チェックノードは、タイプ- ノードタイプの染色のためにすべてのキーを削除します
K8Sは、ノードNODE2 kubectlの汚染チェックノード型:NoSchedule- 全てのノード型キーがNoSchedule染色に有効な除去します
例:私たちは、抗親和性の機能の最初の使用は、ポッドnginxのを作り、Tomcatが単一ノード上で作成することができず、その後、Tomcatの許容範囲を設定します(デフォルトで染色K8S-マスターノードを満たし、マスターノードを作成することができません通常のポッド)
K8S-マスター@ルート:/ホーム/ Ubuntuの/マニフェスト/ K8S /スケジューラ#の猫pod_toleration_master_taint.yamlの apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド - 最初 #namespace:開発 :ラベル のアプリを:NGX - デモ REL:安定した スペックを: コンテナ: - イメージ:nginxの imagePullPolicy:IfNotPresentの 名前:nginxの - 1 --- apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッド -toleration-マスターtaint- 秒 #namespace:開発 ラベル: アプリ:NGX- デモ REL:安定した スペック: コンテナ: - 画像:Tomcatの imagePullPolicy:IfNotPresentの 名:Tomcatのマスター-の-toleration 汚染の tolerations:#設定する公差は、マスタノードNoScheduleに耐えることができます - 効果:効果がnullの場合NoScheduleは#、その後、すべての容認 キー:ノード -role.kubernetes.io/ マスター
演算子:存在 親和性を: podAntiAffinity:などポッドtomatのnginxのものではなく、同じPOD上の#反親和性 requiredDuringSchedulingIgnoredDuringExecution: - LabelSelector: のMatchExpressions: - キー:アプリケーション オペレーター:中 値: - " NGX-デモ" topologyKey:kubernetes.io / ホスト名
最終結果は、ポッドTomcatがノードをマスターする予定のことがあってもよいです。