Ingress资源类型

基于HTTP暴露的每个Service资源均可发布于一个独立的FQDN主机名之上,如 “ www.ik8s.io ” ;也可发布于某主机上的URL路径之上,从而将它们整合到同一个Web站点,如 “ www.ik8s.io/garafana ” 。至于是否需要发布为HTTPS类型的应用则取决于用户的业务需求。

1. 单Service资源型Ingress

暴露单个服务的方法有很多种,如服务类型中的NodePort、LoadBalancer等,不过一样可以考虑使用Ingress来暴露服务,此时只需要为Ingress指定 “ dafault backend ” 即可。

例如下面的示例:
 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
backend:
serviceName: my-svc
servicePort: 80

Ingress控制器会为其分配一个IP地址接入请求流量,并将它们转至示例中的my-svc后端。

2. 基于URL路径进行流量分发

垂直拆分或微服务架构中,每个小的应用都有其专用的Service资源等暴露服务,但在对外开放的站点上,它们可能是财经、新闻、电商、无线端或API接口等一类的独立应用,可通用主域名的URL路径(path)分别接入,例如,www.ilinux.io/api、 www.ilinux.io/wap 等,用于发布集群内名称为API和WAP的Service资源。于是,可对应地创建一个如下地Ingress资源,它将对www.ilinux.io/api 的请求统统转发至API Service资源。将对www.linux.io/wap 的请求转发至WAP Service资源:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: www.ilinux.io
http:
paths:
- path: /wap
backend:
serviceName: wap
servicePort: 80
- path: /api
backend:
serviceName: api
servicePort: 80

注意:目前,Ingress-nginx似乎尚且不能很好地支持基于annotations进行URL映射。这就意味着,在ingress-nginx上,此项功能尚且不能使用。具体信息请参考这个链接中地讨论,github.com/istio/istio…

3. 基于主机名称地虚拟主机

上面类型2中描述的需求,也可以将每个应用分别以独立的FQDN主机名进行输出,如www.ik8s.io 和api.ik8s.io,这两个主机名解析到external LB的IP地址之上,分别用于发布集群内部的WAP和API这两个Service资源。这种实现方案其实就是Web站点部署中的“基于主机名的虚拟主机”,将多个FQDN解析至同一个IP地址,然后根据“主机头”(Host header)进行转发。

下面是以独立FQDN主机形式发布服务的Ingress资源示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
spec:
rules:
- host: api.ik8s.io
http:
paths:
- backend:
serviceName: api
servicePort: 80
- host: wap.ik8s.io
http:
paths:
- backend:
serviceName: wap
servicePort: 80

TLS类型的Ingress资源

这种类型用于以HTTPS发布Service资源,基于一个含有私钥和证书的Secret对象(不明白的可以上网查询,以后我也会做详细讲述~)即可配置TLS协议的Ingress资源,目前来说,Ingress资源仅支持单TLS端口,并且还会卸载TLS会话。在Ingress资源中引用此Secret即可让Ingress控制器加载并配置为HTTPS服务。

下面是一个简单的TLS类型的Ingress资源示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: no-rules-map
spec:
tls:
- secretName: ikubernetesSecret
backend:
serviceName: hostsite
servicePort: 80

Kubernetes--Ingress资源类型的更多相关文章

  1. (八)Kubernetes Ingress资源

    前言 Kubernetes提供了两种内建的云端负载均衡机制(cloud load balancing)用于发布公共应用,一种是工作于传输层的Service资源,它实现的是“TCP负载均衡器”,另一种是 ...

  2. [置顶] kubernetes资源类型--ingress

    Ingress在K8S1.1之前还没有. 概念 Ingress是一种HTTP方式的路由转发机制,为K8S服务配置HTTP负载均衡器,通常会将服务暴露给K8S群集外的客户端. Ingress是一个允许入 ...

  3. [置顶] kubernetes资源类型--PetSets/StatefulSet

    PetSet首次在K8S1.4版本中,在1.5更名为StatefulSet.除了改了名字之外,这一API对象并没有太大变化. 注意:以下内容的验证环境为CentOS7.K8S版本1.5.2,并部署Sk ...

  4. [置顶] kubernetes资源类型--持久化存储Persistent Volume和Persistent Volume Claim

    概念 存储管理跟计算管理是两个不同的问题.理解每个存储系统是一件复杂的事情,特别是对于普通用户来说,有时并不需要关心各种存储实现,只希望能够安全可靠地存储数据. 为了简化对存储调度,K8S对存储的供应 ...

  5. Kubernetes Ingress Controller的使用及高可用落地

    Kubernetes Ingress Controller的使用及高可用落地 看懂本文要具备一下知识点: Service实现原理和会应用 知道反向代理原理,了解nginx和apache的vhost概念 ...

  6. Kubernetes Ingress 学习

    Kubernetes 中暴露服务的方式有三种 Loadbalancer 这种方式往往需要云供应商支持,或者本地F5等设备支持 NodePort 这种方式调用方通过NodeIP:NodePort 的方式 ...

  7. Kubernetes Ingress管理

    目录 Ingress介绍 1.Pod漂移问题 2.端口管理问题 3.域名分配及动态更新问题 Nginx Ingress配置 1.部署默认后端 2.部署Ingress Controller 3.部署In ...

  8. Kubernetes 学习11 kubernetes ingress及ingress controller

    一.上集回顾 1.Service 3种模型:userspace,iptables,ipvs 2.Service类型 ClusterIP,NodePort NodePort:client -> N ...

  9. [转帖]kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较

    kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较 https://www.cnblogs.com/xuxinkun/p/11052646 ...

  10. kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较

    ingress controller在物理机上的两种部署方式 ingress controller(ingress-nginx)负责k8s中的7层负载均衡.其在物理机中有多种部署方式.本文中主要选择了 ...

随机推荐

  1. apollo源码同时兼容mysql、postgresql、oracle解决思路

    本文摘录 apollo源码采用的是jpa规范 Hibernate 进行持久化的ORM框架 解决思路: 思路一:使用jpa配置文件persistence.xml文件,根据使用的数据库动态加载实体类与数据 ...

  2. 微积分 I 笔记

    1.1 集合 这一节复习了高中关于集合的基础知识 介绍了一些新的概念 笛卡尔积 (Cartesian Product) 集合 \(X\) 与 \(Y\) 的笛卡尔积 (直积) \(X \times Y ...

  3. shell 脚本请求接口报错

    2023-01-18 22:07:07.984 WARN 11700 --- [io-9044-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver : ...

  4. nanopi SOCKS5 代理

    nanopi (SOCKS5+openvpn)  +  阿里ES(openvpn + socat) 构建内网代理. 需求: 公网 阿里ES服务器1台,内网nanopi1个(可连接公网服务器), 想从外 ...

  5. read the docs

    1. 在 GitHub 新建一个repo 2. git clone git@github.com:readthedocs/tutorial-template.git 3. 把刚刚 clone 的 re ...

  6. 关于flex

    flex 是 flex-grow.flex-shrink.flex-basis 的缩写. flex 的默认值是以上三个属性值的组合.假设以上三个属性同样取默认值,则 flex 的默认值是 0 1 au ...

  7. 关于DVWA踩坑

    部署好DVWA开始欢天喜地用起来,结果有个问题,不管怎么设置这个安全等级,都显示为Impossible 原因也很显然 其实我并不太理解为什么这里要放在cookie里面,而且还放了两条. 处理方式也很明 ...

  8. 《计算机是怎么跑起来的》第十章 XML(可扩展标记语言)

    资料来源 (1) <计算机是怎么跑起来的> 注1:XML是Extensible Markup Language(可扩展标记语言)的缩写; 1.XML是标记语言 (1) 通常把通过添加标签为 ...

  9. JSON中put、accumulate、elemate的区别

    JSONObject.put():将value映射到key下,加入在JSONObject对象之前存在一个value存在key下,当前的value会替换之前的value. JSONObject.accu ...

  10. python方法、类方法和静态方法的区别

    class A: def f1(): pass def f2(self): pass @classmethod def f3(cls): pass @staticmethod def f4(): pa ...