ingress部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ingress部署相关的知识,希望对你有一定的参考价值。

参考技术A Ingress 是一种 Kubernetes 资源,也是将 Kubernetes 集群内服务暴露到外部的一种方式。如果把kubernetes集群比作一个房子的话,那ingress就是这个房子的门,是外部访问集群内资源的唯一入口。

ingress 就是一个负载均衡的应用,它和 Service 的不同之处在于,Service 只可以支持 4 层的负载均衡,而 Ingress 是支持 7 层的负载均衡,支持 http 和 https,包括通过主机名的访问已经路径访问的过滤。

那为什么不直接使用 nginx?这是因为在 K8S 集群中,如果每加入一个服务,我们都在 Nginx 中添加一个配置,其实是一个重复性的体力活,只要是重复性的体力活,我们都应该通过技术将它干掉。
Ingress 只是一个统称,其由 Ingress 和 Ingress Controller 两部分组成。

目前可用的 Ingress Controller 类型有很多,比如:Nginx、HAProxy、Traefik 等,我们将演示如何部署一个基于 Nginx 的 Ingress Controller。
部署,直接kubectl apply -f https://github.com/kubernetes/ingress-nginx/blob/master/deploy/mandatory.yaml

选择nodeport为ingress对外暴露的方式:

然后创建一个ingress来暴露集群中的一个服务,假如prometheus:

将prometheus.mine.com这个域名写到pc的hosts文件中。
然后可以成功访问:

默认情况下,ingress会把访问重定向为https, 这里官网 上说明,如果想为某一个模块关闭tls的话,可以在annotations里设置redirect为false:

[ingress-nginx] 如何优雅部署自己的ingress-nginx环境

所谓优雅部署,需要满足以下几个条件:

  • 可以自由获取需要部署的ingress-nginx版本
  • 可以不依赖别人为你创建的镜像链接
  • 可以不受网络限制,随时部署ingress-nginx环境

ingress-nginx是K8S中一个重要的负载均衡器
但是部署起来却有一个重大的障碍,那就是它的镜像拉取需要海外代理,我们平时使用的实验环境是不具备该条件的

因此创建一个私有镜像仓库就显得非常必要了

下面就详细讲解了Harbor镜像仓库的搭建方法
[Harbor] 镜像仓库Harbor v2.6.1基础部署方法
[Harbor] 镜像仓库Harbor v2.6.1基础部署方法(HTTPS方式登陆)

仅仅创建一个Harbor是无法满足ingress-nginx的优雅部署的

我们还需要将Harbor与Kubernetes做对接
[Harbor] Kubernetes对接Harbor私有镜像仓库 (运行时:containerd)

不过真的想要随时获取官方的最新镜像,我们可能也不得不付出几块钱人民币的代价
我给出的折中方案就是在各大云商平台(例如阿里云)租用一台临时的云服务器,该服务器归属地必须在大陆以外(例如香港),租用方法选择“按用量付费”,用完后就可以立即释放掉

具体方法如下:

  • 通过docker pull的方式将目标镜像拉取到云服务器上
  • 使用docker save指令将镜像打包成tar文件
  • 将tar文件传输至你本地的Harbor服务器上
  • 在本地Harbor服务器上使用docker load指令加载镜像到本地镜像库

以上是关于ingress部署的主要内容,如果未能解决你的问题,请参考以下文章

Ingress-高可靠部署架构

Ingress-高可靠部署架构

ingress-nginx部署

ingress-nginx 部署使用

helm部署公网LB ingress-nginx

部署Ingress Controller1.31 以及使用案例