Make leader-for-life leader election more integrated with controller-runtime
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- go
- Domínio
- backend, distributed-systems
Direção de pesquisa
Comece pela sequência de manager.Start() do controller-runtime e pela integração de leader-for-life descrita na issue. Rastreie como a eleição do líder, as probes de liveness e readiness e a inicialização do controller interagem. O trabalho estará concluído quando o controller-runtime oferecer suporte a uma implementação conectável de eleição de líder, para que leader-for-life possa ser usado sem o deadlock das probes durante upgrades.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Feature Request
Is your feature request related to a problem? Please describe.
Yes. It isn't possible to use leader-for-life leader election with controller-runtime's manager when also using liveness and readiness probes.
Using controller-runtime's manager out of the box, the following sequence of events happens when manager.Start() is called:
- Liveness and readiness probes are started
- Leader election is started.
- Controllers are started.
When using leader-for-life from this repo, it must be called prior to manager.Start() since controller-runtime doesn't support pluggable leader election implementations. The sequence of events in this case is:
- Leader election is started.
- Liveness and readiness probes are started
- Controllers are started.
Notice that 1) and 2) are swapped. This swap causes deadlocks when upgrading operator deployments that use leader-for-life. When the deployment is attempting to rollout a new version, the new pod starts up and first attempts to become the leader, failing indefinitely until the old pod relinquishes ownership. However the old pod will not relinquish ownership until it disappears and it won't disappear until the new pod reports that it's healthy. Unfortunately the new pod will never be able to report that it's healthy because it needs to be the leader before it starts its liveness and readiness probe servers.
Describe the solution you'd like
To work upstream to make controller-runtime support a pluggable leader election implementation such that leader-for-life can be used by the manager.
- Linguagem predominante
- Go
- Estrelas
- 40
- Forks
- 42
- Merge médio
- 1d 32min
- PRs com merge (30d)
- 1
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de operator-framework/operator-lib
-
Prune package?Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 25/100
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
-
lifecycle/frozen
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
operator-framework/operator-lib#103 · 6 comentários ·
Todas as issues de operator-framework/operator-lib
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
blinklabs-io/dingo#5636 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
JetBrains/youtrack-cli#130 ·
Mantenedores costumam responder em até 1 dia
-
kind/bug needs-triage sig/release
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 73/100
kubernetes/kubernetes#143392 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 61/100
Mantenedores costumam responder em até 1 dia
-
stage-fail
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
siyuan-note/bazaar#2405 ·
Mantenedores costumam responder em até 1 dia