Я понял это
StatefulSet
- управляет / поддерживает стабильное имя хоста, сетевой идентификатор и постоянное хранилище.HeadlessService
- стабильный сетевой идентификатор, необходимый для определения автономной службы для приложений с отслеживанием состояния.
ИЗ K8s Docs -> Иногда вам не нужна или не нужна балансировка нагрузки и единый IP-адрес службы. В этом случае вы можете создать «автономные» службы, указав «Нет» для IP-адреса кластера (.spec.clusterIP).
Мои мысли о приложениях и компонентах "Statefull vs Stateless"
UI
относится к приложению / компоненту без сохранения состояния, потому что он не поддерживает никаких данных. Но он получает из БД и отображаетDB
,Cache
(Redis) - это приложение / компоненты с сохранением состояния, потому что они должны поддерживать данные
Мои вопросы.
Persistence storage in Apps
- Почему я должен рассмотреть возможность развертывания postgress (например) какStatefulSet
? Я могу определитьPV
s иPVC
вDeployement
для хранения данных в PV. Даже при перезапуске подов он получит PV, поэтому данные не будут потеряны.Network
- Redis (например) должен быть развернут какStatefulSet
, чтобы мы могли каждый раз получать уникальный «Сетевой идентификатор» / имя даже после перезапуска модулей. Например;Redis-0
,Redis-1
находятся вStatefulSet
, я могу определитьRedis-0
как мастер, поэтому мастерname
никогда не меняется. Теперь почему я должен рассматриватьHeadless Service
дляStatefulSet
приложений? Я могу напрямую получить доступ к POD или подключить его, не так ли? Какая польза отHeadless Service
?Я слышал о
Operators
, лучшем способе управленияStatefulSet
приложениями. Я нашел пример ниже. Почему эти (или некоторые другие) важны для развертывания какStatefulSet
. Например,Prometheus
илиElasticSearch
; Я могу определитьPVs
иPVC
для хранения данных без потерь.
Почему / когда мне следует заботиться о StatefulSet
и Headless Serivice
?