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进行创建和更新进行加载。

相关推荐
Bellafu66634 分钟前
zookeeper是什么
分布式·zookeeper·云原生
JavaLearnerZGQ1 小时前
配置Docker镜像源
运维·docker·容器
老友@1 小时前
Docker 化 Node.js 项目完整部署流程
docker·容器·node.js
cc20229283 小时前
ingress概念和实际运用
容器·kubernetes·k8s
九皇叔叔4 小时前
从零了解 Dockerfile:构建属于你的 Docker 镜像
运维·docker·容器
susu10830189115 小时前
windows系统下docker desktop创建容器指定ip
运维·docker·容器
芝麻开门-新起点7 小时前
微服务高并发设计考虑要点
微服务·云原生·架构
The god of big data7 小时前
Metrics Server 完整配置安装手册
云原生·云计算·k8s
斯普信专业组8 小时前
rabbitmq-k8s下双架构镜像+手动sts部署完全文档(上)
架构·kubernetes·rabbitmq
昙鱼9 小时前
Linux上使用Docker安装MinIO指南
云原生·eureka