1. 前言
《K8S中安装使用Ingress》一文中,我们安装配置了Ingress。
安装Ingress后,默认的服务端口是NodePort,范围 30000-32767 。因为端口不是80和443,所以我们无法直接把域名解析到节点IP上,上层还需要增加一个LB或者Nginx进行转发。而增加了上层,整个链路就变长了,增加了响应耗时和出现问题的概率。
本文中,我们学习一种Ingress配置方法,能够使Ingress直接使用宿主机的80和443端口。
2. 安装配置思路
K8S中有一个机制是 hostNetwork,允许Pod使用宿主机网络,也就是说可以直接将Pod的80和443直接绑定到K8S宿主机网络上。
基于此,可以使用 DaemonSet+hostNetwork 部署Ingress。
参考文档:
3. 安装配置实践
1、添加chart仓库
1 | helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx |
2、下载chart(chart4.1.4 对应 app1.2.1)
1 | helm search repo ingress-nginx/ingress-nginx -l |
3、修改 values.yaml 配置
- controller.image.registry:改为
k8s.dockerproxy.com
- controller.image.tag:保持不变
v1.2.1
- controller.image.digest:注释掉
- controller.image.digestChroot:注释掉
- controller.admissionWebhooks.enabled:保持 true,避免创建的错误 Ingress 等资源对象影响控制器重新加载
- defaultBackend.enabled:按需修改
- controller.hostNetwork:改为 true
- controller.publishService.enabled:改为 false
- controller.dnsPolicy:改为 ClusterFirstWithHostNet
- controller.kind:改为 DaemonSet
- controller.nodeSeletor:按需修改
- controller.tolerations:按需修改
- controller.service.enabled:改为 false
4、安装ingress nginx controller
1 | helm install ingress-nginx ingress-nginx -n ingress-nginx --create-namespace --dry-run --debug |
5、查看安装
1 | kubectl get all -n ingress-nginx |