如何给 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
正在收听。
我已经使用 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
正在收听。