文章目录
- 1.部署ingress服务
- 2.更改为DaemonSet控制器利用本地端口直接访问
- 3.实现会话保持
- 4.Ingress TLS 配置
一种全局的、为了代理不同后端 Service 而设置的负载均衡服务,就是 Kubernetes 里的 Ingress 服务。• Ingress由两部分组成:Ingress controller和Ingress服务。• Ingress Controller 会根据你定义的 Ingress 对象,提供对应的代理能力。业界常用的各种 反向代理项目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已经为Kubernetes 专门维 护了对应的 Ingress Controller。
1.部署ingress服务
下载ingress-nginx文件
:
查看ingress-nginx文件需要的镜像并将其镜像名称修改为私有仓库里的名字
:
然后在私有仓库里search镜像拉取贴标签并推送即成功。
注:也可将其下载好直接导入:
直接下载好的镜像要将其镜像名和ingress-nginx文件里的镜像名一致
运行:
文件里创建了一个空间,而事实也发现多了一个ingress-nginx命名空间:
查看pod需要指定namespace
:
得出暴露的80对应的端口:
发现可以访问只是404:
创建ingress服务以便实现复制均衡
:
当 访问www1.westos.org时负载到myservice上:
得出ingress和暴露端口
:
添加解析
:
访问:
进入pod内部查看自动添加www1.westos.org域名解析:
为了进一步说明自动会添加解析,先添加www2.westos.org:
创建两个service:
添加两个控制器给myservice2添加pod:
查看是否成功创建:
添加ingress服务
:
添加www2.westos.org的解析
:
访问成功
:
同样也自动创建了www2.westos.org:
2.更改为DaemonSet控制器利用本地端口直接访问
用DaemonSet结合nodeselector来部署ingress-controller到特定的node上,然后使用 HostNetwork直接把该pod与宿主机node的网络打通,直接使用宿主机的80/433端口就能访 问服务。
• 优点是整个请求链路最简单,性能相对NodePort模式更好。
• 缺点是由于直接利用宿主机节点的网络和端口,一个node只能部署一个ingress- controller pod。
• 比较适合大并发的生产环境使用。
查看server4的标签:
修改文件:
应用更新配置
• $ kubectl -n ingress-nginx delete deployments.apps nginx-ingress-controller deployment.apps "nginx-ingress-controller" deleted
• $ kubectl apply -f deploy.yaml
发现只有server4上打开了80和443端口:
直接访问且不加暴露的端口并可以实现负载均衡:
3.实现会话保持
为了区分是否可以实现会话保持功能设置将访问www1进行轮询,访问www2保持会话:
查看是否生效:
4.Ingress TLS 配置
再次访问www1时自动加密访问: