Selectors and Affinity

Node Selectors

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊ node ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

kubectl label nodes <node-name> <label-key>=<label-value>

kubectl label nodes node-01 size=Large # ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ПослС этого Π² описании Pod ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Node Selector:

apiVersion: v1
kind: Pod
metadata: 
  name: myapp
spec:
  containers:
  - name: data-processor
    image:: data-processor
  nodeSelector:
    size: Large

Node Selectors Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ 1:1 совпадСния ΠΌΠ΅Ρ‚ΠΊΠΈ Node ΠΈ Pod. Для Π±ΠΎΠ»Π΅Π΅ слоТных сцСнариСв ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Node Affinity.

Node Affinity

Для созданиС свойств Node Affinity Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ свойства Π² манифСстС Pod:

apiVersion: v1
kind: Pod
metadata: 
  name: myapp
spec:
  containers:
  - name: data-processor
    image:: data-processor
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: size
            operator: In # условиС, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ NotIn, ΠΈΠ»ΠΈ Exists - Π΅ΡΡ‚ΡŒ Π»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠΉ label, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?
            values:
            - Large # условиС дСйствуСт Π½Π° любоС ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ списка
            - Medium

Π’ случаС, Ссли Π½ΡƒΠΆΠ½Ρ‹Π΅ labels ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° Nodes кластСра, Π΅ΡΡ‚ΡŒ 2 Ρ‚ΠΈΠΏΠ° повСдСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ задаётся свойством Pod:

  • requiredDuringSchedulingIgnoredDuringExecution - Ссли Nodes с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ labels Π½Π΅Ρ‚, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Pod Π½Π° кластСрС;
  • preferredDuringSchedulingIgnoredDuringExecution - Ссли Nodes с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ labels Π½Π΅Ρ‚, всё Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Pod Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° кластСрС.

Если Pod ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½Π° Node Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ label, Ρ‚ΠΎ Π² вСрсии 1.27 Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ Π² ΠΎΠ±ΠΎΠΈΡ… случаях. Π’ ΠΏΠ»Π°Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚ΠΈΠΏ повСдСния:

  • requiredDuringSchedulingRequiredDuringExecution - Ссли Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Pod ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ affinity - ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Pod с Node.