Eu tenho um controlador de replicação que cria mais de um PODs.
Dentro de cada POD, há um contêiner executando um aplicativo.
Agora, dentro do contêiner, ele pode chamar a API do kubernetes como abaixo.
KUBE_TOKEN=$(</var/run/secrets/kubernetes.io/serviceaccount/token)
curl --silent --insecure --header "Authorization: Bearer $KUBE_TOKEN" \
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/$POD_NAMESPACE/pods/$POD_NAME
POD_NAME
é o nome do POD;
POD_NAMESPACE
é o namespace do POD
As instâncias do aplicativo em contém um cluster. E eles elegem uma das instâncias do aplicativo como mestre, os outros são escravos que replicam os dados do mestre em tempo real. Quando a instância do mestre falhar, outra instância do escravo será promovida para o mestre.
Quando o aplicativo no container é promovido para master, quero que a instância do aplicativo mestre chame a API do kubernetes para que todo o tráfego vá para esse POD / container.
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "my-cluster"
},
"spec": {
"ports": [{
"port": 33379,
"targetPort": 33379
}],
"type" : "None",
"selector": {
"name": "<POD_NAME>"
}
}
}
Eu especifiquei o POD_NAME
como o seletor, mas o serviço não pode encontrar nenhum do POD.
Como posso configurar o serviço para que todo o tráfego seja direcionado a esse POD?