Kubernetes/GCE 入口控制器失败
Kubernetes/GCE Ingress controller fails
我是 Kubernetes 的新手,我正在尝试使用 TLS 在 Google 容器引擎上进行 HTTP 负载平衡(使用包含的 GCE 入口控制器)。即使在 Google's official tutorial 之后,我的错误也是可重复的。为了便于阅读,我在 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
,according to the docs 意味着它可能是引导程序(但它总是保持这样)。我可以在控制台上看到后端不健康。
在文档中,为了避免这一需要:
- 防火墙规则(在上面完成)
- 服务必须以 200 响应(但我在本地测试了
nginx
图像,并且通过通用负载均衡器测试了服务,工作正常)
那么这个错误的原因是什么,我该如何进一步调试呢?
我在一夜之间离开了集群,它现在可以正常工作了。 bootstrap 似乎需要相当多的时间,或者 Google 云端已修复某些问题。
我是 Kubernetes 的新手,我正在尝试使用 TLS 在 Google 容器引擎上进行 HTTP 负载平衡(使用包含的 GCE 入口控制器)。即使在 Google's official tutorial 之后,我的错误也是可重复的。为了便于阅读,我在 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
,according to the docs 意味着它可能是引导程序(但它总是保持这样)。我可以在控制台上看到后端不健康。
在文档中,为了避免这一需要:
- 防火墙规则(在上面完成)
- 服务必须以 200 响应(但我在本地测试了
nginx
图像,并且通过通用负载均衡器测试了服务,工作正常)
那么这个错误的原因是什么,我该如何进一步调试呢?
我在一夜之间离开了集群,它现在可以正常工作了。 bootstrap 似乎需要相当多的时间,或者 Google 云端已修复某些问题。