在端口80上访问Nginx入口控制器

时间:2018-12-25 22:09:34

标签: kubernetes nginx-ingress

我能够访问nginx ingress controller上的NodePort。我的目标是访问port 80上的控制器。

  

kubectl -n ingress-nginx describe service/ingress-nginx的输出

Name:                     ingress-nginx
Namespace:                ingress-nginx
Labels:                   app.kubernetes.io/name=ingress-nginx
                          app.kubernetes.io/part-of=ingress-nginx
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"ingress-nginx","app.kubernetes.io/par...
Selector:                 app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/part-of=ingress-nginx
Type:                     NodePort
IP:                       10.100.48.223
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  30734/TCP
Endpoints:                192.168.0.8:80
Port:                     https  443/TCP
TargetPort:               443/TCP
NodePort:                 https  32609/TCP
Endpoints:                192.168.0.8:443
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

我几乎没有解决这个问题的想法:

  • 将通过端口30734传入的流量通过iptables重定向到端口80
  • 调整节点端口的范围,以便端口80也可以是节点端口

我不确定这些方法是否通用,所以我很想听听您通常如何处理此问题。可能还需要其他组件吗?

2 个答案:

答案 0 :(得分:2)

处理此问题的常规方法是使用LoadBalancer模式服务,该服务将云负载平衡器置于现有NodePort的前面,以便您可以将常规端口重新映射到其上。

答案 1 :(得分:1)

您应将nginx服务的类型从NodePort更改为LoadBalancer。 清单清单示例如下:

spec:
  ports:
  - name: nginx
    port: 80
    protocol: TCP
    targetPort: 8000 // Your nginx port
  type: LoadBalancer