k8s每日三问(4)
1.calico和flannel的区别是什么?
calico: 一个功能强大的开源工具,提供了两个核心的功能:网络连接和网络策略。
先说一些网络连接,它有两种模式。一个是Overlay模式,一个是Non-Overlay模式。这两者的区别在于判断是否要跨大网段,如果像云环境或者跨子网这种的就要选择OverLay模式,这种模式下默认是VXLAN,其连接原理就是封装Pod数据包在节点隧道之间传输,优点是配置简单不需要底层网络的支持,而缺点就是在封装过程有开销。后者Non-Overlay模式用于无需跨大网段,比如在同一个机房或者同一个子网这种情况。他的连接原理是BGP模式,他直接通过底层网络进行传输数据。
而这也是其最大的限制,要求所有节点都在同一个子网中。不过由于不需要VXLAN的封装打包以及范围小,优点就是高性能和易排查。
这里的子网指的是L2层子网,而节点层属于L3层子网。在同一个L2层的子网下有很多不同的L3层子网。所以本质上两种模式都是为了解决跨节点之间pod的通信问题,而overlay是“远亲”,节点和节点之间“距离比较远”,而Non-overlay则是”近邻“,节点”距离比较近“。
而另一个核心功能网络策略也是很重要的知识。networkpliocy允许你定义pod之间或者pod与外部世界的规则,实现微服务级别的安全隔离。
flannel: 看起来就像是calico的基础版,他的功能仅有让所有的pod都有ip并且可以跨节点通信。就像是calico的overlay模式的简化版,而区别在于calico的overlay模式提供了更多的配置和优化并且可以和网络策略引擎无缝衔接。而flannel则是追求简洁一步到位,仅仅通隧道传输数据即可。
二者的差异主要体现在网络策略这一块,flannel由于其简洁应用于测试开发和对网络要求不高的情况下,而calico则是用于需要高性能和安全策略的情况下。
2.gateway api和ingress的区别是什么?
gateway属于gateway api项目,而他正是k8s推荐的ingress的下一代替代品。
而其功能也和ingress差不多,都是来管理入口流量。但是gateway api是ingress的全面升级。

这张图片形象的展现了gateway api的强大之处,接下来我们来看看区别在哪:
首先是协议支持,ingress主要支持HTTP和HTTPS流量,而gateway在此基础上原生支持HTTP、HTTPS、TLS、TCP、UDP 等。并且为不同的协议有清楚的资源定义,比如httproute等。
然后是路由表达能力,ingress的路由基础非常基础,只能基于主机名和路径进行匹配,对于头信息匹配或者重定向这些高级功能严重依赖控制器annotation,没有统一标准。
而gateway api的路由规则十分强大,基于头信息、查询参数、方法的匹配。流量加权分流(金丝雀发布)。请求/响应头修改以及流量镜像和重定向。所有这些功能都有标准化的定义,在不同控制器间行为一致。
其次就是架构和角色分离,这也是二者最根本的区别。
ingress的资源配置太复杂,混合了基础设施配置以及路由规则。这就导致了权限不清楚,应用开发者需要基础设施的权限才能暴露服务。而gateway api不同,他实现了角色分离:比如gatewayclass只是管理基础设施配置,gateway则是由集群管理员创建,管理入口点,而httproute则是由应用开发者创建,管理到其服务的路由规则。
gatewayclass:定义一类可用的网关类型。比如公司用的nginx网关类型,部门用的envoy网关类型。它是由基础设施开发商提供。就像是电话机的不同品牌。
gateway:在特定命名空间创建的网关实例,配置监听器证书等设施。由集群管理员关注。就像公司负责购买和安装物理电话机。
httproute:将网关接收到的路由到流量集群内的特定service,应用开发者只需要关注这个。就好像部门经理只需要负责自己部门的转接规则。
举个例子:(ingress)当你想要在你家安装一台电话机(暴露服务),但是电信公司直接把整个电话交换机的配置权限给你,你既要知道怎么拉线(基础设施),又要负责设计自己家的号码转接规则(路由规则)。
(gateway api)现在你(开发者)同样需要安装一台电话机,但是电信公司(管理员)已经在你们家的小区里建好了机房(gateway),并且公布了标准(gatewayClass),而你只需要写一个申请单(httproute),上面写好”把打给我的电话转接到客厅和卧室,我的号码是###“,完全不用在担心其他的事情,及其方便。
接下来是扩展性,ingress通过annotation扩展,这就导致了不同控制器的注解也各不相同,因此配置也无法移植,生态系统也是七零八落。
而gateway api通过标准化的扩展字段以及新的CRD进行扩展,这鼓励了一个更一致更健康的生态系统。就好比是ios系统,有着几乎所有设备兼容的优点。
最后就是性能和高级特性,ingress仅仅是基础的设计缺乏现代高级特性的原生支持。但是gateway api设计时考虑到现代边缘代理问题,如负载均衡算法,断路器,健康系统检查等,为实现更复杂更可靠的流量管理提供了基础。
3.http和https的区别是什么?
这也是问的比较多的面试基础考点。
首先我们打个比方,http传输协议就像是寄一张信封,期间你只是将内容放在信函里,而在你寄出这封信由多方经手传送,期间不能保证其安全性因为所有人都可以打开信封查看内容。
而https则是把信封换为保险箱,密码仅仅有你自己和接收方知道,即使中间有再多的人也无法直接打开。
二者的在技术层面的区别:
端口:http:80 https:443
工作层:http在应用层,而https在应用层和传输层之间增加了一个安全层。
认证: http:无认证 https:通过CA证书验证网络网站身份防止钓鱼。
那么https是如何工作的?
https的核心就是SSL/TSL握手协议
首先客户端与服务器见面打招呼,商量用哪种暗语进行通信。服务器首先出示他的身份证(SSL证书),由客户端验证真伪。这个证书是由受信任的第三方CA颁发。证明了服务器的身份。客户端生成一个临时的会话密钥,并用服务器证书的公钥加密后发送给服务器,只有对应私钥的服务器才能打开他。后续他们俩之间都会使用密钥进行通信。
而这也是现代互联网为什么必须使用HTTPS的原因。
ok本章内容到此结束如有错误欢迎指出。
更多推荐
所有评论(0)