
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:
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