内核缺陷触发的NodePort服务63秒延迟问题
我们有一个新创建的TKE 1.3.0集群,使用基于Galaxy + Flannel(VXLAN模式)的容器网络,集群由三个二层互通的Master节点 10.0.0.11、 10.0.0.12、 10.0.0.13组成。在访问宿主机端口为 30153的NodePort类型的Service时,出现了很有趣的现象:
- 在节点 10.0.0.11、 10.0.0.13节点上 curl http://localhost:30153,有50%几率卡住
- 在节点,100%几率卡住
- 从集群内部,访问非本节点的30153端口,畅通
- 从集群外部,访问任意节点的30153端口,畅通
三个节点本身并无差异,卡住几率不同,可能和服务的端点(Endpoint,即Pod)的分布情况有关。
NodePort服务的定义如下:
该服务的端点有两个:
可以看到,端点在10.0.0.11、10.0.0.13上分别有一个。假设容器网络存在问题,只能访问本机的Pod,则能解释前面的卡住现象 —— 10.0.0.12上没有端点,因此一直卡住。10.0.0.11、10.0.0.13分别占有50%端点,因此50%几…
阅读全文Galaxy学习笔记
Galaxy是TKEStack的一个网络组件,支持为TKE集群提供Overlay/Underlay容器网络。Galaxy的一个特性是能够提供浮动IP(弹性IP) —— 即使Pod因为节点宕机而漂移到其它节点,其IP地址也能够保持不变。
Galax…
阅读全文Istio中的透明代理问题
Istio的Sidecar作为一个网络代理,它拦截入站、出站的网络流量。拦截入站流量后,会使用127.0.0.1作为源地址,将流量转发给本地服务进程。本地服务进程看不到真实源IP地址。
很多应用场景下,真实源IP地址是必须的,可能原因包括:
- I…
Cilium学习笔记
Cilium是在Docker/K8S之类的容器管理平台下,透明的为应用程序服务提供安全网络连接的开源软件。Cilium的底层技术是eBPF,eBPF完全在内核中运行,因此改变Cilium的安全策略时不需要程序代码、容器配置的任何变更。
TypeScript学习笔记
执行下面的命令安装TypeScript:
1 |
npm install -g typescript |
TypeScript支持类型提示,类型提示让代码自动完成更加准确:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 布尔 let isDone: boolean = false; // 数字 let decLiteral: number = 6; let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744; // 字符串 let name: string = "bob"; // 模板字符串 let name: string = `Gene`; let age: number = 37; let sentence: string = `Hello, my name is ${ name }. I'll be ${ age + 1 } years old next month.`; |
默认情况下标记,则只能赋值给void或者各自的类型 —— null赋值给null,undefined赋值给undefined。
表示非基本类型:即非number…
阅读全文