Erro ao criar o balanceador de carga do GCE: o endereço solicitado ip não é estático nem é atribuído ao LB

3

Eu tenho uma situação em que o Kubernetes aparentemente não pode mais atribuir um endereço IP externo a um serviço em kubectl create -f Deployment.yaml . kubectl describe service <my-service> reporta o seguinte erro :

CreatingLoadBalancerFailed    
Error creating load balancer (will retry): Failed to create load balancer 
for service default/<my-service>: requested ip <my-address> is 
neither static nor assigned to LB <id>(default/<my-service>): <nil>

Mas gcloud compute addresses list indica que my-address é um endereço IP estático:

NAME          REGION        ADDRESS       STATUS
<my-address>  europe-west1  <ip-address>  RESERVED

E Deployment.yaml contém uma especificação para <my-service> que atribui <my-address> a um balanceador de carga:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: my-app
ports:
  - protocol: UDP
    port: <my-port>
type: LoadBalancer
loadBalancerIP: <my-address>

O que é especialmente estranho: a (quase) mesma implantação funcionou antes. Eu já tentei recriar recriar meu cluster, mas isso também não ajudou. O que mais poderia estar errado e como posso superar o erro para tornar meu serviço acessível de fora novamente?

UPDATE Reservei um novo endereço IP estático (desta vez também global) com gcloud compute addresses create test-address --global e alterei a atribuição para LB de acordo: loadBalancerIP: test-address . Mas o mesmo erro permanece parado.

UPDATE Se eu não especificar loadBalancerIP em Deployment.yaml , a implantação será bem-sucedida sem erros e um novo endereço IP externo será atribuído a my-service . O serviço pode ser pingado de fora neste endereço.

UPDATE Se eu excluir meu endereço anterior com gcloud compute addresses delete my-address --region europe-west1 , promova o novo endereço externo com gcloud compute addresses create --addresses <ip-address> --region europe-west1 e reimplante com a linha original loadBalancerIP: my-address restaurada em Deployment.yaml , o mesmo superfícies de erro novamente.

    
por Drux 15.08.2016 / 14:29

2 respostas

3

O problema estava em Deployment.yaml em que eu estava me referindo ao endereço em loadBalancerIp por seu nome simbólico em vez do endereço IP numérico ( NAME e ADDRESS conforme revelado por gcloud compute addresses list , respectivamente). Se eu usar o endereço IP numérico, o balanceador de carga acessará meu serviço para ser acessado externamente nesse endereço (por meio do balanceador de carga). ( Esta resposta anterior me trouxe no caminho certo. Eu estava sob a impressão talvez errada de que usar o nome simbólico já havia funcionado .)

Histórico Desde que eu era alternando para uma instância de VM própria (em vez do Google Cloud shell) para o desenvolvimento de imagens de contêiner, estou recebendo "Insufficient Permission" de erros de gcloud compute addressess list nessa instância de VM. Entendo que eu poderia melhorar isso recriando a instância da VM com o escopo https://www.googleapis.com/auth/compute.readonly . De qualquer forma, essa restrição aparentemente não tinha nada a ver com o problema em questão.

    
por 20.08.2016 / 20:57
4

Eu tive um problema semelhante. Acontece que, se o endereço IP for reservado como global, não funcionará. Excluí minha reserva e a alterei para a mesma região do meu cluster do Kubernetes. --global Eu tive que usar --region europe-west2 - a mesma região do meu cluster k8s.

antes: falhar gcloud compute addresses create my-secure-sftp --global

depois de: sucesso gcloud compute addresses create my-secure-sftp --region europe-west2

@verifique link para obter mais detalhes

    
por 15.02.2018 / 11:27