ポッドノードのアフィニティをk8sに書き込む

Kubernetes では、ポッド アフィニティ (ポッド アフィニティ) を使用して、ポッドと他のポッドの間の関連付けルールを定義し、同じノードまたは異なるノードでのスケジューリングを制御できます。

  1. ポッド アフィニティ タイプ:

    • requiredDuringSchedulingIgnoredDuringExecution: ポッドはアフィニティ ルールを満たす必要があり、満たさない場合はスケジュールできません。
    • preferredDuringSchedulingIgnoredDuringExecution: ポッドはアフィニティ ルールを満たす傾向がありますが、そうする必要はありません。
  2. ポッドの YAML ファイルでポッド アフィニティを使用します。

    • ポッドの YAML ファイルで、affinityフィールドを使用してポッド アフィニティ ルールを指定します。
    • affinityフィールドでは、podAffinityまたはpodAntiAffinityサブフィールドを使用してポッド アフィニティ ルールを定義します。

ポッドの YAML ファイルでポッド アフィニティを使用する方法を示す例を次に示します。

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx:latest
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - frontend
        topologyKey: kubernetes.io/hostname

上記の例では、podAffinityフィールドは必須のポッド アフィニティ ルールを定義します。つまり、ポッドはapp=frontendラベルを持つ他のポッドと同じノード上でスケジュールされる必要があり、kubernetes.io/hostnameトポロジ ラベルは照合に使用されます。

ポッド アフィニティ ルールでは、他の演算子 ( NotInなど) および複数の一致式を使用して、より複雑なルールを定義できることExistsに注意してください。DoesNotExist

ポッド アフィニティを使用すると、デプロイメント戦略、データの局所性、ロード バランシングなどの要件を満たすようにポッドをスケジュールするときに、ポッドと他のポッドの間の関連付けを制御できます。

おすすめ

転載: blog.csdn.net/qq_44370158/article/details/132170600