如何配置 kubernetes 裸机入口控制器以侦听端口 80?
How to configure a kubernetes bare-metal ingress controller to listen to port 80?
我有一个 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
不能绑定ingress服务到80端口,可以运行主机上的HAProxy,重定向80443端口请求Ingress服务端口号。
我同意@Matthew L Daniel 的观点,如果您不考虑使用外部负载均衡器,最好的选择是通过启用 hostNetwork
选项与 ingress-nginx
Pod 共享主机网络接口Pods' 规范:
template:
spec:
hostNetwork: true
因此,NGINX Ingress 控制器可以将端口 80 和 443 直接绑定到 Kubernetes 节点,而无需将特殊代理端口(30000-32767)映射到嵌套服务。查找更多信息 here。
我有一个 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
不能绑定ingress服务到80端口,可以运行主机上的HAProxy,重定向80443端口请求Ingress服务端口号。
我同意@Matthew L Daniel 的观点,如果您不考虑使用外部负载均衡器,最好的选择是通过启用 hostNetwork
选项与 ingress-nginx
Pod 共享主机网络接口Pods' 规范:
template:
spec:
hostNetwork: true
因此,NGINX Ingress 控制器可以将端口 80 和 443 直接绑定到 Kubernetes 节点,而无需将特殊代理端口(30000-32767)映射到嵌套服务。查找更多信息 here。