#kubernetes
Вопрос:
Я бы хотел использовать podAntiAffinity, чтобы ограничить количество модулей, которые я запускаю на хосте с одной и той же версией кода.
В частности, я хотел бы запустить 1 модуль версии A и 1 модуль версии B. Это позволяет развертывать canary без создания большого количества новых узлов.
Я попытался установить свою подантиаффинность
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
- matchExpressions:
- key: "k8s.git/commit-sha"
operator: In
values:
- valueFrom:
fieldRef:
fieldPath: "metadata.labels['k8s.git/commit-sha']"
topologyKey: kubernetes.io/hostname
weight: 100
Но, глядя на исходный код для k8s, он ожидал string
, что вместо объекта будет map
объект.
Есть ли другой способ добиться этого? Кто-нибудь реализовывал что-то подобное? Я запускаю Kubernetes 1.18.
Ответ №1:
У меня была эта мысль раньше, и я решил ее, используя метод, описанный здесь, сродство между стручками. Короче говоря, метод развертывается на узлах, на которых уже запущен модуль, соответствующий метке intend, которая в вашем случае является commit — sha.