探索knative里根据路径转发和header转发解决方案
目前knative v1.1.0版本还是基于域名进行转发流量到服务。
而大多数使用场景是:
- 服务对外域名一般都是固定的,而且可能有多个。
- 服务一般都是在域名的某一路径下面,即一个域名由多个服务组成。
- 灰度基于多个header头之间
and
or
关系。
下面讨论如何实现这些需求
目前knative v1.1.0版本还是基于域名进行转发流量到服务。
而大多数使用场景是:
and
or
关系。下面讨论如何实现这些需求
kubelet中的podConfig是用来汇聚多个pod来源,对多个pod源中的pod信息进行聚合处理(去重、分析出pod发生的变化)。如果源里的pod发生变化,podConfig会将变化更新聚合,生成各类型的PodUpdate消息发送到PodUpdate通道。
当要排查集群中某个问题时候,一般通过两种方式来排查问题。一种是查看各个组件日志,确定问题;另一个是通过apiserver获取event事件,根据event事件分析出,某个组件做了什么动作。
前面已经分析了kubelet启动命令行初始化,接下来介绍kubelet的cobra Command执行。cobra的Excute()–简单理解就是先进行命令行解析(如果设置了DisableFlagParsing: true
则不解析),再将命令解析完剩下参数传给Command.Run进行执行。
最近在升级docker版本之后,出现了一些pod一直处于pending状态,查看pod pending的原因是无法获得ip。最后排查发现升级docker版本的操作方式不对, 导致了kubenet ip泄漏,进而导致没有ip可以分配。
kubernetes有很多的功能特性,这些特性一般都有关联的KEP。特性的成熟度有alpha、beta、GA、Deprecated,alpha代表不稳定,beta代表相对稳定有可能有bug,GA代表已经可用。 特性的生命阶段有KEP提出、alpha阶段、beta阶段、GA阶段、废弃。alpha阶段默认不启用,beta阶段默认启用 。更多feature gate相关知识请访问–Feature Gates和KEP。
feature gate用来控制某项特性打开或关闭,当然GA的特性不能关闭。本文以kubelet源码为例,分析feature gate如何工作的。