Interrupções do Kubernetes potencialmente causadas por kube-dns

Interrupções do Kubernetes potencialmente causadas por kube-dns

Temos um cluster de produção do Kubernetes que tem sofrido várias interrupções de aproximadamente 1 a 5 minutos semirregularmente. Estamos tentando solucionar o problema, mas nos deparamos com várias lacunas de informação/conhecimento e gostaríamos de receber ajuda.

Todos os nossos códigos e softwares personalizados estão altamente disponíveis e implantados em pelo menos duas réplicas, e sua alta disponibilidade foi testada sob carga.

O cluster Kuberneteséexecutando instâncias spot, e quando as instâncias spot contêm apenas nossos pods, as coisas continuam funcionando perfeitamente, sem interrupções. No entanto, o que notamos é que quando os nós que contêm eles são desativados kube-dns, tendemos a sofrer - mas nem sempre - essas interrupções.

Estamos executando a versão 1.25 no GKE e, portanto, estamos restritos ao uso do kube-dns. Estamos executando 1 kube-dnsréplica para cada 3 nós (normalmente temos 9 nós em execução),eespecificou um mínimo de 3 kube-dnsnós por meio do kube-dns-autoscalerconfigmap. Também estamos executando o Istio 1.17.1 por vários motivos, masnãopara mTLS. Também temos um PDB kube-dnsque permite apenas 1 interrupção.

O que vemos é que a maioria dos nossos serviços começará a expirar em suas solicitações entre si (os istio-proxylogs de acesso tendem a registrar um 504 UTerro), e alguns dos serviços realmente registrarão um EAI_AGAINerro, o que implica que o tempo limite do DNS expirou. Também temos um aplicativo separado em execução que executa ping em uma combinação de nomes de serviços, bem como no endereço IP do serviço diretamente (começando a fazer isso para fins de solução de problemas), e podemos ver que durante os momentos em que os EAI_AGAINerros estão acontecendo, o Os pings de endereço IP foram bem-sucedidos, mas as solicitações de nome de serviço não - apontando ainda que kube-dnsestão relacionadas ao problema.

Também verificamos esses pings de serviço versus IP em pods que têm ou não um istio-proxysidecar e podemos ver o mesmo comportamento, o que implica que o problema énãodevido a istio.

A única coisa que estamos começando a pensar em fazer é implementar o NodeLocal DNSCachepara que todos os nós tenham um cache DNS e - possam - resolver quaisquer kube-dnsproblemas intermitentes. No entanto, não temos certeza se isso vai ajudar e tememos que isso esteja mascarando um problema maior.

Também podemos ver esse mesmo problema em execução em nosso ambiente de não produção, mas ainda não conseguimos reproduzi-lo em qualquer lugar. Simplesmente acontece. Mesmo reiniciar/excluir nós não parece fazer com que isso aconteça.

Também não consigo aumentar o nível de registro kube-dnsporque o GKE bloqueou o recurso de implantação e reverteu os níveis de registro...

Esperamos alguns conselhos sobre como solucionar problemas e resolver isso. Obrigado

informação relacionada