k8s ingress

一、浅谈ingress (ingress 是与service配合使用的)

Ingress能把Service(Kubernetes的服务)配置成外网能够访问的URL,流量负载均衡,及SSL,并提供域名访问的虚拟主机等,客户通过访问URL(API资源服务的形式,例如:caas.one/kibana)进入和请求Service,一个Ingress控制器负责处理所有Ingress的请求流量,它通常是一个负载均衡器,它也可以设置在边界路由器上,或者由额外的前端来帮助处理HA方式的流量。如图所示:

1. k8s 的访问方式

一般来说k8s对外服务的方式有三种**:**

  1. LoadBlancer Service
  2. NodePort Service
  3. Ingress

1.1 LoadBlancer Service

LoadBancer Service 是Kubernetes深度结合云平台的一个组件;当使用LoadBlancer Service 暴露服务时,实际上是通过向底层云平台申请创建一个负载均衡器来向外暴露服务;目前LoadBlancer Service支持的云平台已经相对完善,比如公有云阿里云,华为云及私有云(Openstack)等等,由于LoadBlancer Service深度结合了云平台,所以只能在一些云平台上使用.

1.2. NodePort Service

NodePort Service顾名思义,实质上就是通过在集群的每个Node上暴露一个端口,然后将这个端口映射到某个具体的Service来实现的,虽然每个Node的端口有很多(0~65535),但是由于安全性和易用性(服务多了就乱了,端口冲突问题)实际使用可能并不多。

1.3 ingress

Ingress 是在Kubernetes 1.2后出现的,通过Ingress用户可以实现使用Nginx等开源的反向代理负载均衡实现对外暴露服务,除Ingress之外,traefik用的也是相同的技术。

. ingress 组件

  1. 反向代理负载均衡器
  2. Ingress Controller
  3. Ingress

2.1 反向代理负载均衡器

反向代理负载均衡器很简单,说白了就是nginx、apche等;在集群中反向代理负载均衡器可以自由部署,可以使用Replication Controller、Deployment、DaemonSet等等。

2.2 Ingress Controller

Ingress Controller实质上可以理解为是个监视器,Ingress Controller通过不断地跟Kubernetes API打交道,实时的感知后端Service、Pod等变化,比如新增和减少Pod,Service增加与减少等;当得到这些变化信息后,Ingress Controller在结合下文的Ingress生成配置,然后更新反向代理负载均衡器,并刷新其配置,达到服务发现的作用。

2.3 Ingress

Ingress简单理解就是个规则定义,比如某个域名对应某个Serivce,即当某个域名的请求进来时转发给某个Service;这个规则将与Ingress Controller结合,然后Ingress Controller将其动态写入到负载均衡器中,从而实现整体的服务发现和负载均衡。Ingress解决的是新的服务加入后,域名和服务的对应问题,基本上是一个ingress的对象,通过yaml进行创建和更新进行加载。

相关推荐
wusam2 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器
一直在进步的派大星2 小时前
Docker 从安装到实战
java·运维·docker·微服务·容器
Zl1597531597536 小时前
k8s基础环境部署
云原生·容器·kubernetes
花酒锄作田6 小时前
[kubernetes]二进制方式部署单机k8s-v1.30.5
kubernetes
陌殇殇殇8 小时前
使用GitLab CI构建持续集成案例
运维·ci/cd·云原生·容器·kubernetes·gitlab
技术钱8 小时前
docker简介
运维·docker·容器
roman_日积跬步-终至千里8 小时前
【docker】docker常见命令
运维·docker·容器
Gogeof9 小时前
云原生化 - 基础镜像(简约版)
微服务·云原生·基础镜像
daxian_am46110 小时前
k8s image error
java·数据库·kubernetes
Gogeof11 小时前
云原生化 - 旅程(简约版)
微服务·云原生