如何给 Kubernetes 的 Ingress 分配 Public IP

How to assign Public IP to Kubernetes's Ingress

我已经使用 helm

部署了 Kong-Ingress-controller

我在 centos 7 上安装了 Kubernetes 的 Cluster v1.10

我正在使用来自 OVH 提供商的专用服务器

当我创建 Ingress 时

cat ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: jenkins 
spec:
  backend:
    serviceName: jenkins
    servicePort: 8080

kubectl get ing
NAME      HOSTS     ADDRESS   PORTS     AGE
jenkins   *                   80        3s

kubectl get svc
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
jenkins                ClusterIP   10.254.104.80   <none>        8080/TCP         1d

现在我无法从外部访问此 Ingress,因为我正在使用 OVH 服务器。

有解决办法吗?

OVH 不是 officially supported by Kubernetes。它受到支持,然后通常您会创建一个 LoadBalancer 类型的服务 jenkins,这将是您的面向外部的端点,具有 public IP。

由于不支持,下一个最好的办法是创建一个 NodePort 服务。这将创建一个服务,该服务侦听所有 Kubernetes 节点上的特定端口并将请求转发到您的 Pods(仅在它们所在的位置 运行)。因此,在这种情况下,您将必须创建一个具有 public IP 的 OVH Load Balancer,并将该负载均衡器的后端指向您的 Ingress 所在服务的 NodePort正在收听。