Kubernetes (соединение) - сливной узел с локальным постоянным хранилищем

Мы используем локальное постоянное хранилище в качестве внутреннего хранилища для модулей SOLR. Поды с избыточностью запланированы для нескольких узлов Kubernetes. Если один из узлов выходит из строя, на других узлах всегда будет достаточно экземпляров.

Как мы можем истощить эти узлы (без «переноса» модулей SOLR на другие узлы), если мы хотим провести обслуживание узла? Самым важным для нас было бы то, что kube-proxy больше не будет отправлять новые запросы к модулям на соответствующем узле, чтобы через некоторое время мы могли выполнять обслуживание, не прерывая обслуживание для выполнения запросов.

Мы попробовали кордон, но кордон только гарантирует, что на узел не запланированы новые поды. Drain не работает с модулями с локальными постоянными томами.


person MDK    schedule 28.07.2018    source источник


Ответы (1)


Вы можете проверить анти-сродство стручка.

https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity

Эти конструкции позволяют отталкивать или привлекать стручки при соблюдении определенных условий.

В вашем случае анти-сродство стручка 'requiredDuringSchedulingIgnoredDuringExecution' может быть вашим лучшим выбором. Я лично еще не использовал его, надеюсь, он поможет вам в правильном направлении.

person Bal Chua    schedule 29.07.2018
comment
К сожалению, это не помогает, если модуль уже запущен на узле и имеет локальные диски. Я не хочу, чтобы он переносился, я хочу, чтобы он аккуратно выходил на время обслуживания и, особенно, выходил только после обработки всех запросов. - person MDK; 29.07.2018
comment
Вы запускаете его как DaemonSet? Потому что, если вы это сделаете, Kubernetes сделает это автоматически. - person Bal Chua; 30.07.2018
comment
Действительно? С постоянными локальными томами? Если да, то мы попробуем - person MDK; 30.07.2018