IP estático gcloud atribuído, mas recebo 404 do servidor. Como posso depurar isso?

IP estático gcloud atribuído, mas recebo 404 do servidor. Como posso depurar isso?

Estou usando o kubernet para implantar meu aplicativo: aqui está a descrição do meu serviço:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: flaskgql
  labels:
    name: flaskgql
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: flaskgql
    spec:
      containers:
      - name: flaskgql
        image: cryptodraco/flask_gql
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        volumeMounts:
          - name: secrets
            mountPath: /etc/secrets
            readOnly: true
      volumes:
      - name: secrets
        secret:
          secretName: db-passwords
---

apiVersion: v1
kind: Service
metadata:
  name: flaskgql
  labels:
    name: flaskgql
spec:
  type: LoadBalancer
  #loadBalancerIP: 35.189.238.42
  ports:
  - port: 80
    targetPort: 8080
  selector:
    name: flaskgql

Quando listo meus serviços, está tudo bem:

flaskgql  LoadBalancer   10.59.251.206   35.189.238.42   80:30677/TCP   6m

E meu arquivo docker é o seguinte:

FROM gcr.io/google_appengine/python

RUN virtualenv /env

# source venv/bin/activate
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt

# no database - SQL only
#ENV NODB 1

ADD . /app

CMD gunicorn -b :$PORT wsgi:app

Mas quando tento acessar meu ip estático atribuído, ele não funciona. Obs: Já fiz a mesma coisa antes e deu certo. Mas agora quando acesso o ip estático, recebo um erro 404. Parece que meu servidor gunicorn não é encaminhado por porta para o ip. Mesmo que do gcloud eu receba: insira a descrição da imagem aqui

Não sei se é porque deveria colocar a VM em vez da instância. Mas tudo que sei é que não está funcionando e não tenho ideia de como depurar isso. desde já, obrigado

Responder1

Para começar, 404 não encontrado implica que a solicitação está sendo feita ao servidor pretendido, mas não foi possível localizar o arquivo solicitado. Duvido que seja um problema com o IP estático.

Existem algumas coisas que você pode fazer para depurar isso. A primeira etapa é fazer SSH em um de seus nós e tentar conectar-se ao pod diretamente usando o IP do cluster:

Liste seus pods junto com o IP do CLuster

kubectl obtém pods -o largo

Faça SSH em um dos nós do cluster por meio do Console do GCP ou usando o comando gcloud

instâncias de computação gcloud ssh [node_name]

Assim que estiver conectado ao nó, execute um comando curl para ver se o seu contêiner está respondendo às solicitações corretamente

enrolar [pod_cluster_ip]

Se isso retornar uma mensagem de erro 404, significa que há um problema com a imagem do seu contêiner. Ou não há arquivos na raiz do servidor ou oa imagem do docker não expôs a porta 80.

Se esse teste funcionar, você sabe que o contêiner está servindo corretamente, portanto pode haver um problema com o serviço.

Repita o teste curl usando o IP do cluster de serviço LB.

Você também pode anexar ao pod para observar atividades

kubectl anexar [nome_do pod] -i

Por último, você pode verificar o balanceador de carga do GCP para ver se há algum erro relatado, como back-ends não íntegros.

Não sou tão bom com dockerfiles, mas o k8s yaml parece bom

informação relacionada