Estou obtendo resultados que realmente me surpreendem e os documentos não estão me ajudando a entender.
Tenho uma implantação configurada via kustomize.
Atualmente há 1 pod na implantação.
Estou obtendo resultados diferentes para os dois comandos a seguir, o que não esperaria.
kubectl exec deployment/name -- sha256sum <file>
contra
kubectl exec <podname> -- sha256sum <file>
Eu verifiquei os ReplicaSet
s para a implantação. Existem vários ReplicaSet
s, mas há apenas um com um número diferente de zero de pods.
Suspeito que o Kubernetes esteja de alguma forma encontrando um contêiner não gced que, de certa forma, ainda pertence à implantação. Isso é incrivelmente não intuitivo, pois o contêiner não aparece em nenhum lugar que eu possa ver. Só posso raciocinar sobre a sua existência por causa desta estranha ação à distância.
Fico feliz em compartilhar mais detalhes se você achar que eles serão relevantes, mas parece que destilei tudo até sua essência.
kubectl - kubectl controla o gerenciador de cluster Kubernetes
kubectl exec – Executa um comando em um contêiner
A diferença entre dois comandos: se você usar
kubectl exec deployment/name
o kubernetes, selecionará um pod associado a essa implantação e o kubernetes não terá certeza sobre qual pod será selecionado se houver vários pods em implantação. Se o pod antigo ainda estiver em processo de encerramento, ele também será selecionado.Ou se você usá
kubectl exec <podname\>
-lo executa exatamente o que você especifica, ele interage diretamente com um pod específico.Você mencionou que tem vários ReplicaSets, mas apenas um número diferente de zero de pods, o que significa que ainda existem ReplicaSets mais antigos da revisão anterior. Para verificar ReplicaSets usando o comentário abaixo,
kubectl get rs
ele mostrará as réplicas atuais implantadas.Você tem certeza de que não há necessidade de Replicasets antigos. Para removê-los usando o comando
kubectl delete rs <replicaset-name\>
. Você pode testá-lo após excluir o ReplicaSet e digitar o comandokubectl get pods
no terminal.Acontece que eu tinha errado no seletor
matchLabels
Isso levou a quatro implantações, todas pensando que tinham quatro pods.
O prefixo do nome
deployment1-<random>
estava me confundindo, porque não era muito preciso. Todos os quatro pods pertenciam a todas as quatro implantações.Parece que deveria ser um caso excepcional e talvez um aviso devesse ser incluído no arquivo
kubectl describe deployment <foo>
.Posso imaginar que existam casos de uso para implantações sobrepostas, mas devo pensar que são excepcionais e não a regra. Ou até mesmo uma implantação correspondente a pods que não fazem parte da hierarquia de propriedade Deployment->ReplicaSet->Pod.