如何配置kubernetes裸机入口控制器以监听端口80?

时间:2018-12-22 16:43:15

标签: kubernetes kubernetes-ingress cloud-bare-metal

我有一个带有1个主机和1个从机的kubernetes设置,托管在DigitalOcean Droplet上。 为了公开我的服务,我想使用Ingress。

安装裸机后,必须配置自己的入口控制器。 如何让它监听端口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

2 个答案:

答案 0 :(得分:3)

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

template:
  spec:
    hostNetwork: true

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

答案 1 :(得分:0)

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