《Kubernetes网络权威指南》读书笔记 | 找到你并不容易:从集群外访问服务

Posted COCOgsta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Kubernetes网络权威指南》读书笔记 | 找到你并不容易:从集群外访问服务相关的知识,希望对你有一定的参考价值。

书籍来源:《Kubernetes网络权威指南:基础、原理与实践》

一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:《Kubernetes网络权威指南》读书笔记 | 汇总_COCOgsta的博客-CSDN博客


在Kubernets中,L7的转发功能、集群外访问Service,都是专门交给Ingress的。

Ingress可能是暴露服务的最强大方式,也是最复杂的。Kubernetes Ingress提供了负载平衡器的典型特性:HTTP路由、黏性会话、SSL终止、SSL直通、TCP和UDP负载平衡等。

3.6.1 Kubernetes Ingress

Kubernetes的Ingress资源对象是指授权入站连接到达集群内服务的规则集合。

图3-18 没有Ingress时访问集群内服务

图3-19所示为引入Ingress后访问集群内服务的状态。

图3-19 引入Ingress后访问集群内服务的状态

Ingress的作用就是在边界路由处开个口子,放外部流量进来。因此,Ingress是建立在Service之上的L7访问入口,它支持通过URL的方式将Service暴露到k8s集群外;支持自定义Service的访问策略;提供按域名访问的虚拟主机功能;支持TLS通信。Ingress的作用如图3-20所示。

图3-20 Ingress的作用

在上面这个例子中,Ingress可以基于客户端请求的URL做流量分发,转发给不同的Service后端。

我们来看Ingress资源对象的API定义:

把上面这个Ingress对象创建起来后,通过kubectl get我们可以看到:

其中,ADDRESS即Ingress的访问入口地址,ACKEND是Ingress对接的后端Kubernetes Service IP+Port,ULE是自定义的访问策略,主要基于URL的转发策略,若为空,则访问ADDRESS的所有流量都转发给BACKEND。

下面给出一个Ingress的rules不为空的例子:

这个例子和前一个的最明显区别是,rules定义了path分别为/foo和/bar的分发规则,分别转发给s1:80和s2:80:

Kubernetes只负责提供一个API定义,具体的Ingress Controller需要用户自己实现!官方提供了nginx和GCE的Ingress Controller示例供开发者参考。

如果想要通过域名访问Ingress,则需要用户自己配置域名和Ingress IP的映射关系,例如host文件、自己的DNS(不是Kube-dns)。

以上是关于《Kubernetes网络权威指南》读书笔记 | 找到你并不容易:从集群外访问服务的主要内容,如果未能解决你的问题,请参考以下文章

《Kubernetes网络权威指南》读书笔记 | iptables

《Kubernetes网络权威指南》读书笔记 | 打通CNI与Kubernetes:Kubernetes网络驱动

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航

《Kubernetes网络权威指南》读书笔记 | 最常用的Docker网络技巧

《Kubernetes网络权威指南》读书笔记 | Linux隧道网络的代表:VXLAN

《Kubernetes网络权威指南》读书笔记 | 主角登场:Linux容器