IP estática de gcloud asignada pero obtengo 404 del servidor. ¿Cómo puedo depurarlo?

IP estática de gcloud asignada pero obtengo 404 del servidor. ¿Cómo puedo depurarlo?

Estoy usando Kubernet para implementar mi aplicación: aquí está la descripción de mi servicio:

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

Cuando enumero mis servicios, todo está bien:

flaskgql  LoadBalancer   10.59.251.206   35.189.238.42   80:30677/TCP   6m

Y mi archivo acoplable es el siguiente:

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

Pero cuando intento acceder a mi IP estática asignada, no funciona. Nota: ya hice lo mismo antes y estuvo bien. Pero ahora, cuando accedo a la IP estática, aparece un error 404. Parece que mi servidor Gunicorn no tiene el puerto reenviado a la IP. Incluso si de gcloud obtengo: ingrese la descripción de la imagen aquí

No sé si es porque debería colocar la VM en lugar de la instancia. Pero todo lo que sé es que no funciona y no tengo idea de cómo depurarlo. gracias de antemano

Respuesta1

Para empezar, 404 no encontrado implica que la solicitud se realiza al servidor deseado pero no puede localizar el archivo solicitado; dudo que esto sea un problema con la IP estática.

Hay algunas cosas que puedes hacer para depurar esto. El primer paso es utilizar SSH en uno de sus nodos e intentar conectarse al pod directamente usando la IP del clúster:

Enumere sus pods junto con su IP CLuster

kubectl obtiene vainas -o anchas

SSH en uno de los nodos de tu clúster, ya sea a través de GCP Console o usando el comando gcloud

Instancias informáticas de gcloud ssh [nombre_nodo]

Una vez que esté conectado al nodo, ejecute un comando curl para ver si su contenedor responde a las solicitudes correctamente

rizo [pod_cluster_ip]

Si esto devuelve un mensaje de error 404, significa que hay un problema con la imagen de su contenedor. O no hay archivos en la raíz del servidor o ella imagen de la ventana acoplable no ha expuesto el puerto 80.

Si esta prueba funciona, sabrá que el contenedor está funcionando correctamente, por lo que podría haber un problema con el servicio.

Repita la prueba de curl utilizando la IP del clúster del servicio LB.

También puedes conectarlo al pod para observar la actividad.

kubectl adjuntar [nombre_pod] -i

Por último, puede consultar el balanceador de carga de GCP para ver si se han reportado errores allí, como backends en mal estado.

No soy tan bueno con los dockerfiles, pero el yaml k8s se ve bien

información relacionada