当前位置: 首页 > 知识库问答 >
问题:

Ingress是否与ClusterIP服务合作?

米子轩
2023-03-14

我已经设置了一些服务和入口来尝试SSL终止。我对作为后端的负载平衡器和节点端口服务没有任何问题,但它与ClusterIP服务完全不起作用。

尽管入口的后端被描述为正常,但我得到的HTTP错误不是来自我的应用程序。

$ kubectl describe ing nginx-cluster-ssl-ingress
Name:           nginx-cluster-ssl-ingress
Namespace:      default
Address:        X.X.X.X
Default backend:    nginx-cluster-svc:80 (...)
TLS:
  ssl-certificate terminates
Rules:
  Host  Path    Backends
  ----  ----    --------
Annotations:
  https-target-proxy:       k8s-tps-default-nginx-cluster-ssl-ingress
  static-ip:            k8s-fw-default-nginx-cluster-ssl-ingress
  target-proxy:         k8s-tp-default-nginx-cluster-ssl-ingress
  url-map:          k8s-um-default-nginx-cluster-ssl-ingress
  backends:         {"k8s-be-30825":"HEALTHY"}
  forwarding-rule:      k8s-fw-default-nginx-cluster-ssl-ingress
  https-forwarding-rule:    k8s-fws-default-nginx-cluster-ssl-ingress
Events:
  FirstSeen LastSeen    Count   From                SubobjectPath   Type        Reason  Message
  --------- --------    -----   ----                -------------   --------    ------  -------
  28m       28m     1   {loadbalancer-controller }          Normal      ADD default/nginx-cluster-ssl-ingress
  27m       27m     1   {loadbalancer-controller }          Normal      CREATE  ip: X.X.X.X

HTTP错误如下:

$ curl http://X.X.X.X/
default backend - 404%

我的问题很简单:它应该与ClusterIP服务一起工作吗?如果它应该或多或少地写在文档中,我应该在哪里解决这个问题?

非常感谢。

共有3个答案

山阳辉
2023-03-14

如果您使用的是GKE集群,并且您使用的是容器本机负载平衡(通过在ClusterIP服务中添加cloud.google.com/neg:{“ingres”:true}注释来启用),那么您的GKE/GCE ingres可以直接与ClusterIP服务对话,而不需要它是NodePort服务。

参考:https://cloud.google.com/kubernetes-engine/docs/concepts/ingress#:~: text=除非您使用容器本机负载平衡

如果一组条件为真,GKE会自动添加cloud.google.com/neg:'{"ingress": true}'注释。然后您不需要手动添加此注释来获得容器本机负载平衡。否则,您将需要添加此注释来获得容器本机负载平衡;这使您的入口能够直接与ClusterIP服务通信。

参考号:https://cloud.google.com/kubernetes-engine/docs/concepts/ingress#:~:text=在这些情况下,服务将被自动注释

东方震博
2023-03-14

GKE上的Nginx入口控制器与ClusterIp一起工作。但是本机GKE入口控制器并不像@samuel-roze提到的那样

所以只需像这样使用Nginx入口:

kubernetes.io/ingress.class: nginx

万俟光临
2023-03-14

本机GKE入口控制器不支持群集,只有节点端口工作。

nginx one等非本机入口控制器可与ClusterIP服务配合使用。

 类似资料:
  • 类型:LoadBalancer IP: 25.0.162.225 LoadBalancer Ingress:internal-a9716e.....us-west-2.elb.amazonaws.com 据我所知,我使用的发布类型是“LoadBalancer”,它帮助我将服务公开给外部IP地址(参见https://kubernetes.io/docs/concepts/services-netwo

  • 来自服务器的错误(InternalError):创建“stdin”时出错:出现内部错误:调用webhook“validate.nginx.ingress.kubernetes.io”失败:Post https://Ingress-nginx-controller-accemsion.Ingress-nginx.controller.svc:443/extensions/v1beta1/Ingres

  • 我们在AWS EKS上运行两种类型的服务: null

  • 我正在尝试使用三个虚拟机(Master–10.x.x.4、Node1–10.x.x.150、Node2–10.x.x.160)创建Kubernetes集群。 我能够通过此链接成功创建留言簿应用程序:http://kubernetes.io/v1.0/examples/guestbook/.我只对frontend-service.yaml做了一个更改:使用NodePort。我可以使用节点IP和端口号

  • 我正在寻求帮助,以解决这个基本方案无法正常工作的问题: 在运行在MacBook上的VirtualBox VM上安装了kubeadm的三个节点: Virtualbox VM有2个适配器:1)主机专用2)NAT。来自客户计算机的节点IP是: 我将它们公开为ClusterIP服务: 现在问题来了: 我ssh到kubernetes-node1并使用集群IP卷曲服务: 如果我ssh到kubernetes-n

  • 作为将微服务连接在一起并使其工作的机制,通常建议使用API和服务发现。但它们通常作为自己的微服务工作,但这些微服务显然应该“硬编码”到其他微服务中,因为每个微服务都应该向它们注册并查询其他微服务的位置。这是否打破了松耦合的思想,因为发现服务的丢失意味着其他服务无法通信?