Размещение подов
Допустим мы хотим разместить ингрессы на машинах, которые мы (в своей голове) выделили под ингрессы. Одного желания тут недостаточно, один из способов - лейблы на нодах, nodeSelector в манифесте, taint'ы, Toleration'ы.
Маркируем ноды
Мы можем пометить ноду, чтобы на ней размещались только определенные поды. Делается это так:
kubectl label nodes k8s-ingress-1 nodeType=ingress
Теперь если мы посмотрим конфиг ноды, увидим там этот лейбл:
kubectl get no -o yaml k8s-ingress-1
apiVersion: v1
kind: Node
metadata:
annotations:
...
creationTimestamp: "2023-10-04T14:44:13Z"
finalizers:
- wrangler.cattle.io/node
- wrangler.cattle.io/managed-etcd-controller
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/instance-type: rke2
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: k8s-ingress-1
kubernetes.io/os: linux
node.kubernetes.io/instance-type: rke2
nodeType: ingress # <--- Вот наш лейбл
Мы сделали так, чтобы наши поды попадали на эту ноду и только на нее, но на нее будут попадать также другие поды.
Чтобы этого избежать нам нужны taint'ы. Теинты указывают, где размещать поды нельзя. Чтобы сказать шедулеру, чтоб он убрал все поды кроме уже запущенных, повесим теинт NoSchedule
kubectl taint nodes k8s-ingress-1 ingress-taint=true:NoSchedule
kubectl get no -o yaml k8s-ingress-1
apiVersion: v1
kind: Node
metadata:
annotations:
...
creationTimestamp: "2023-10-04T14:44:13Z"
finalizers:
- wrangler.cattle.io/node
- wrangler.cattle.io/managed-etcd-controller
labels:
beta.kubernetes.io/arch: amd64
beta.kubernetes.io/instance-type: rke2
beta.kubernetes.io/os: linux
kubernetes.io/arch: amd64
kubernetes.io/hostname: k8s-ingress-1
kubernetes.io/os: linux
node.kubernetes.io/instance-type: rke2
nodeType: ingress
name: k8s-ingress-1
resourceVersion: "1765082"
uid: XXX
spec:
podCIDR: X.X.X.X/24
podCIDRs:
- X.X.X.X/24
providerID: rke2://k8s-ingress-1
taints:
- effect: NoSchedule # <----
key: ingress-taint
value: "true"
Правим манифест подов
Указываем в манифесте пода/хельм чарта следующее:
...
nodeSelector:
nodeType: ingress
...
tolerations:
- key: "ingress-taint"
operator: "Exists"
effect: "NoSchedule"
...
Src:
https://prudnitskiy.pro/post/2021-01-15-k8s-pod-distribution/
No Comments