kubernetes(GKE)nginxingress看起来不错,但不起作用



我按照本指南在GKE中安装了nginx入口控制器。

之后,我按照本指南为我的服务创建入口资源。

我已经成功地设置了我的测试应用程序和服务。通过端口转发到容器对此进行了测试。

设置入口似乎很好,但我无法访问它。当打开外部ip时,打印出以下502错误:

错误:服务器错误

服务器遇到临时错误,可以未完成您的请求。

请在30秒内重试。

请参阅入口的describe

│Name:         teamcity                                                                                                                           │
│Namespace:    default                                                                                                                            │
│Labels:       <none>                                                                                                                             │
│Annotations:  ingress.kubernetes.io/backends: {"k8s-be-31984--b5c10175cf4f125b":"UNHEALTHY"}                                                     │
│              ingress.kubernetes.io/forwarding-rule: k8s-fw-default-teamcity--b5c10175cf4f125b                                                   │
│              ingress.kubernetes.io/target-proxy: k8s-tp-default-teamcity--b5c10175cf4f125b                                                      │
│              ingress.kubernetes.io/url-map: k8s-um-default-teamcity--b5c10175cf4f125b                                                           │
│              kubectl.kubernetes.io/last-applied-configuration:                                                                                  │
│                {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"teamcity","namespace":"default"},"spec":│
│{"backend...                                                                                                                                     │
│API Version:  extensions/v1beta1                                                                                                                 │
│Kind:         Ingress                                                                                                                            │
│Metadata:                                                                                                                                        │
│  Creation Timestamp:  2019-11-02T12:49:21Z                                                                                                      │
│  Generation:          1                                                                                                                         │
│  Resource Version:    553521                                                                                                                    │
│  Self Link:           /apis/extensions/v1beta1/namespaces/default/ingresses/teamcity                                                            │
│  UID:                 312aa230-fd6f-11e9-ad91-42010a84009d                                                                                      │
│Spec:                                                                                                                                            │
│  Backend:                                                                                                                                       │
│    Service Name:  teamcity                                                                                                                      │
│    Service Port:  8111                                                                                                                          │
│Status:                                                                                                                                          │
│  Load Balancer:                                                                                                                                 │
│    Ingress:                                                                                                                                     │
│      Ip:  35.190.86.15                                                                                                                          │
│Events:                                                                                                                                          │
│  Type    Reason  Age   From                     Message                                                                                         │
│  ----    ------  ----  ----                     -------                                                                                         │
│  Normal  ADD     18m   loadbalancer-controller  default/teamcity                                                                                │
│  Normal  CREATE  17m   loadbalancer-controller  ip: 35.190.86.15   

此外,这里还有我的整个mashup的yaml文件:

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: teamcity
labels:
app: teamcity
spec:
replicas: 1
selector:
matchLabels:
app: teamcity
template:
metadata:
labels:
app: teamcity
spec:
containers:
- name: teamcity-server
image: jetbrains/teamcity-server:latest
ports:
- containerPort: 8111
---
apiVersion: v1
kind: Service
metadata:
name: teamcity
labels:
app: teamcity
spec:
type: NodePort
ports:
- port: 8111
targetPort: 8111
protocol: TCP
selector:
app: teamcity
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: teamcity
spec:
backend:
serviceName: teamcity
servicePort: 8111

我想知道我在这里做错了什么。

您使用的是带有ingress资源的GKE入口控制器,而不是Nginx。事实证明,它正在创建所有的资源来创建HTTP负载均衡器;转发规则,目标代理,url映射,后端服务。

您需要将注释kubernetes.io/ingress.class: "nginx"传递给Ingress资源,让它知道应该使用Nginx Ingress Controller。

现在,由于GCP负载均衡器不能立即开始工作,您将暂时获得503。大概3-4分钟后你会得到200。

当您使用ingress时,nginx服务将暴露给LoadBalancer,而其他服务只能保留在clusterIP上。

您可以在这里将服务更改为ClusterIP类型而不是Nodeport,并尝试以这种方式构建入口规则-

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: rule-name
namespace: default
spec:
rules:
- host: hostname
http:
paths:
- backend:
serviceName: teamcity
servicePort: 8111

在当前的场景中,您没有将任何主机名映射到您的ingress规则,如果您没有特定的主机名,您可以使用映射到nginx的publicIP/ExternalIP的DNS名称。

相关内容

最新更新