5

我有一个 Kubernetes 设置,有 1 个主服务器和 1 个从属服务器,托管在 DigitalOcean Droplets 上。为了公开我的服务,我想使用 Ingresses。

由于我安装了裸机,我必须配置自己的入口控制器。 如何让它监听端口 443 或 80 而不是 30000-32767 范围?

为了设置入口控制器,我使用了本指南:https ://kubernetes.github.io/ingress-nginx/deploy/

我的控制器服务如下所示:

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

现在很明显,因为 NodePort 范围是 30000-32767,所以这个控制器没有映射到端口 80 或 443:

➜ kubectl get services --all-namespaces
NAMESPACE       NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   ingress-nginx          NodePort    10.103.166.230   <none>        80:30907/TCP,443:30653/TCP   21m
4

2 回答 2

6

我同意@Matthew L Daniel,如果您不考虑使用外部负载均衡器,最好的选择是通过在 Pod 规范中ingress-nginx启用hostNetwork选项来与 Pod 共享主机网络接口:

template:
  spec:
    hostNetwork: true

因此,NGINX Ingress 控制器可以将端口 80 和 443 直接绑定到 Kubernetes 节点,而无需将特殊的代理端口(30000-32767)映射到嵌套服务。在这里找到更多信息。

于 2018-12-24T12:11:53.383 回答
0

您不能将入口服务绑定到端口 80。您可以在主机上运行 HAProxy 并重定向端口 80,443 请求入口服务端口号。

于 2018-12-23T13:43:18.883 回答