kubernetes dns resolvendo em nginx

4

Eu estava desenvolvendo localmente em docker-compose e tinha um contêiner nginx fazendo um simples proxy_pass assim:

location /app/ {
    proxy_pass http://webapp:3000/;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

    resolver 127.0.0.11;
}

Agora quero passar para kubernetes no GKE, e a última linha está me causando problemas.

Eu tentei mudar o resolvedor para:

    resolver kube-dns;

Eu também tentei vários outros IPs e nomes, mas continuo recebendo um erro nos seguintes termos:

nginx: [emerg] host not found in resolver "kube-dns"

A configuração do meu kubernetes é que eu tenho um único pod, com dois contêineres: 'webapp' e 'nginx'. Eu simplesmente quero ter um service externo apontando para o nginx que pode proxy_pass para o webapp.

Alguma idéia?

    
por sharif9876 30.09.2017 / 22:28

2 respostas

1

Se nginx estiver dentro de kubernetes, não há necessidade de definir o resolvedor, pois ele será resolvido no ponto correto. Se nginx e webapp moram no mesmo namespace, você pode simplesmente

proxy_pass http://webapp

Contanto que seu nome de serviço para o aplicativo da web seja chamado de webapp e use a porta 80.

Se o nginx estiver fora, você deverá usar um controle de entrada ou configurar o serviço para o aplicativo da web em um nó. Um nodeport abrirá a mesma porta em todos os nós para que você possa carregar o equilíbrio entre eles no lado nginx.

    
por 01.10.2017 / 03:04
1

Você precisa especificar o FQDN para o kube-dns e os serviços.
Para o padrão GKE kube-dns, por exemplo, seria: kube-dns.kube-system.svc.cluster.local
E se você estiver no namespace padrão com seu serviço webapp , ele será: webapp.default.svc.cluster.local

Eu sei que a pergunta original é antiga, mas talvez ajude alguém.

    
por 25.10.2018 / 14:34