Я новичок в Kubernetes и пытаюсь выполнить балансировку нагрузки HTTP в Google Container Engine с помощью TLS (используя включенный контроллер GCE Ingress). Моя ошибка повторяется даже после официального руководства Google. Для удобочитаемости я резюмирую процедуру в config.yaml
:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
name: nginx
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
name: nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: basic-ingress
spec:
backend:
serviceName: nginx
servicePort: 80
Затем:
kubectl create -f config.yaml
export NODE_PORT=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services nginx)
gcloud compute firewall-rules create allow-130-211-0-0-22 --source-ranges 130.211.0.0/22 --allow tcp:$NODE_PORT
curl <ip_of_load_balancer>
(Я удалил теги в правиле брандмауэра, чтобы оно применялось ко всем).
Но я получаю 502 Server Error
, что согласно документам означает это, вероятно, начальная загрузка (но она всегда остается такой). Я вижу в консоли, что бэкенд неисправен.
В документах, чтобы избежать этого, нужно:
- правило брандмауэра (которое сделано выше)
- Служба должна ответить 200 (но я протестировал образ
nginx
локально, и служба через общий балансировщик нагрузки работает нормально)
Итак, в чем причина этой ошибки и как я могу ее отладить?