无法创建入口

我创建了两个服务,然后尝试在GKE中创建Ingress。我的意图是使用loadbalancer http / https负载均衡器创建入口,从我读到的入口创建负载均衡器的过程开始。我为loadbalancer创建了一个静态ip,它是注释的一部分。

两个服务都成功创建,并且也创建了入口,但是入口没有任何主机或“地址”。

以下是集群服务...

服务定义..与服务2相同,除了服务名称更改...

apiVersion: v1
kind: Service
metadata:
  name: dns-demo
spec:
  selector:
    name: dns-demo
  clusterIP: None
  ports:
  - name: dns-demo
    port: 1234
    targetPort: 1234
---
apiVersion: v1
kind: pod
metadata:
  name: dns-demo-1
  labels:
    name: dns-demo
spec:
  hostname: dns-demo-1
  subdomain: dns-demo
  containers:
  - name: nginx
    image: nginx
---
apiVersion: v1
kind: pod
metadata:
  name: dns-demo-2
  labels:
    name: dns-demo
spec:
  hostname: dns-demo-2
  subdomain: dns-demo
  containers:
  - name: nginx
    image: nginx

入口定义...

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.global-static-ip-name: "global-ingress"
spec:
  rules:
  - http:
      paths:
      - path: /v1
        backend:
          serviceName: hello-svc
          servicePort: 80
      - path: /v2
        backend:
          serviceName: hello-lb-svc
          servicePort: 80

您能告诉我我在做什么错吗?

谢谢

iCMS 回答:无法创建入口

这里有一个简单而又好的教程,解释了如何实现这一目标。

在您的设置中,我看到一些需要纠正的问题。首先也是最重要的一点是您使用了选项clusterIP: None,它使Ingress无法访问您的服务。

这是一张图片,说明进入的工作方式。

Ingress FlowSource

Ingress会将所有流量重定向到您的服务,并且您的服务必须为NodePort或LoadBalancer类型,才能接收此流量。

第二个问题是您的服务指向端口1234,但您的pod正在运行NGINX,并且正在侦听端口80。

您的服务应如下所示(经过测试):

apiVersion: v1
kind: Service
metadata:
  name: dns-demo
spec:
  type: NodePort
  selector:
    name: dns-demo
  ports:
  - name: dns-demo
    port: 80
    targetPort: 80     

我们现在可以进入您的入口了,在这里我看到了更多的问题。

第一个问题是您设置了backend: serviceName: hello-svchello-lb-svc,但是服务名称是dns-demo。因此,当对您的入口进行请求时,由于后端不存在,它不知道将流量发送到哪里。

您还使用了一些此时不需要的注释。针对您的案例的简单入口规则可能看起来像这样(经过测试):

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dns-demo
spec:
  backend:
    serviceName: dns-demo
    servicePort: 80

最后,您的完整清单可能看起来像这样:

apiVersion: v1
kind: Pod
metadata:
  name: dns-demo-1
  labels:
    name: dns-demo
spec:
  hostname: dns-demo-1
  subdomain: dns-demo
  containers:
  - name: nginx
    image: nginx
---
apiVersion: v1
kind: Pod
metadata:
  name: dns-demo-2
  labels:
    name: dns-demo
spec:
  hostname: dns-demo-2
  subdomain: dns-demo
  containers:
  - name: nginx
    image: nginx    
---
apiVersion: v1
kind: Service
metadata:
  name: dns-demo
spec:
  type: NodePort
  selector:
    name: dns-demo
  ports:
  - name: dns-demo
    port: 80
    targetPort: 80      
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dns-demo
spec:
  backend:
    serviceName: dns-demo
    servicePort: 80
本文链接:https://www.f2er.com/2149524.html

大家都在问