TL; DR O Google Container Engine executando o Kubernetes v1.1 suporta loadBalancerIP
apenas marcar o IP atribuído automaticamente como estático primeiro.
O Kubernetes v1.1 suporta externalIPs :
apiVersion: v1
kind: Service
spec:
type: LoadBalancer
loadBalancerIP: 10.10.10.10
...
Até o momento, não há documentação consistente realmente boa sobre como usá-lo no GCE. O que é certo é que este IP deve primeiro ser um dos seus IPs static pré-alocados.
A documentação sobre balanceamento de carga entre regiões é principalmente para o Compute Engine e não Kubernetes / Container Engine, mas ainda é útil especialmente a parte "Configure o serviço de balanceamento de carga".
Se você acabou de criar um Kubernetes LoadBalancer no GCE, ele criará um Compute Engine de rede > Rede > Balanceamento de carga de rede > Regra de Encaminhamento apontando para um pool de destino feito de suas máquinas em seu cluster (normalmente apenas aqueles executando os Pods que correspondem ao seletor de serviço). Parece que excluir um namespace não limpa bem as regras criadas.
Atualizar
Na verdade, é agora suportado (mesmo que documentado):
- Verifique se você está executando o Kubernetes 1.1 ou posterior (no GKE edite seu cluster e verifique "Versão do nó")
- Abaixo de Rede > Endereços IP externos você já deve ter alguns Ephemeral marcados como apontando para a instância da VM do seu cluster (se não tiver certeza, implante uma vez sem
loadBalancerIP
, aguarde até receber um IP externo quando você executarkubectl get svc
e procurar esse IP na lista nessa página). Marque um deles como estático , digamos que Endereço externo seja10.10.10.10
. - Edite seu LoadBalancer para ter
loadBalancerIP=10.10.10.10
como acima (adapte-se ao IP que foi dado a você pelo Google).
Agora, se você excluir seu LoadBalancer ou até mesmo seu namespace, ele deverá preservar esse endereço IP ao reimplementar esse cluster. Se você precisar alterar o cluster, alguns ajustes manuais devem ser possíveis:
- Na seção "Balanceamento de carga de rede", na guia "Segmentar pools" , clique no botão "Criar pool de destino":
- Nome:
cluster-pool
(ou qualquer outro nome) - Região: selecione a região de um dos seus clusters
- Exame de saúde: opcional, se você desejar
- Selecionar grupos de instâncias existentes: seu cluster do Kubernetes
- Nome:
- Na seção "Balanceamento de carga de rede", na guia "Regras de encaminhamento" , clique no botão "Criar regra de encaminhamento":
- Nome:
http-cross-region-gfr
(ou qualquer outro nome) - Região: selecione a região de um dos seus clusters
- IP externo: selecione
loadbalancer-ip-crossregion
que você acabou de reservar - Pool de segmentação: selecione
cluster-pool
que você acabou de criar
- Nome: