3

我可以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 上的流量重定向到端口 80 通过iptables
  • 调整节点端口的范围,使端口 80 也可以是节点端口

我不确定这些是否是常见的方法,所以我很想听听您通常如何处理这个问题。可能还需要另一个组件?

4

2 回答 2

2

处理此问题的正常方法是使用 LoadBalancer 模式服务,该服务将云负载均衡器放在现有 NodePort 的前面,以便您可以将正常端口重新映射回它。

于 2018-12-25T22:27:02.737 回答
1

您应该为您的 nginx 服务更改 fromNodePortLoadBalancertype 。清单示例如下所示:

spec:
  ports:
  - name: nginx
    port: 80
    protocol: TCP
    targetPort: 8000 // Your nginx port
  type: LoadBalancer
于 2018-12-26T02:50:51.937 回答