关于容器技术:用这个开源项目网络小白也能搞定容器网络问题排查
Kubernetes 自身比较复杂,应用门槛较高,用户在开始容器化迁徙时常常遇到各种各样的问题,因为不足故障定位的技能和工具,用户经常产生挫败感,甚至放弃业务容器化。其中网络问题体现尤为突出,Kubernetes 网络虚拟化导致网络问题排查的难度微小。 KubeSkoop 是阿里云容器服务团队开源的 Kubernetes 容器网络诊断工具,反对支流的网络插件和云厂商的 Kubernetes 集群诊断。它正是为了升高网络问题排查难度,让没有网络常识的人也能够自动化地定位网络问题。 Kubernetes 容器网络诊断工具:https://github.com/alibaba/kubeskoopKubeSkoop 可能主动构建出给定源和目标地址在容器网络中的拜访门路,自动化地采集和剖析链路上每一个网络节点的配置,联合 eBPF 内核监控以及 IaaS 层的网络配置查看,定位出导致网络不通的根因,极大地升高了网络问题定位的工夫,即便没有任何网络技能的用户也能够应用。目前在阿里云容器服务的环境中,作为自运维工具解决了大量客户在大规模 Kubernetes 集群场景下遇到的网络问题。 本文将会对容器网络和传统定位伎俩带来的问题进行简略的介绍,以及对 KubeSkoop 的功能设计等方面进行总体讲解。 容器网络网络连通性-CNI容器网络是 Kubernetes 集群中及其重要的一部分,包含了形成集群网络连通性的 CNI 插件、Service 服务发现机制、NetworkPolicy 网络策略等。Kubernetes 集群网络保障了每个 Pod 领有本人独立的网络空间,并且可能与集群中的 Pod 和 Node 相互通信。 CNI 插件是形成集群容器网络中的外围,实现集群级别惟一的地址调配,将集群维度的网络买通。 不同的 CNI 插件,如 Flannel、Calico、Cilium、Terway 等,有其不同的网络实现,包含地址调配,网络虚拟化实现,网络连通性实现等。服务发现和网络策略除 CNI 插件外,Kubernetes 还提供了 Service 作为服务发现,以及 NetworkPolicy 作为网络策略能力。这些能力也是通过可替换的组件来实现的。 复杂性和网络问题定位因为概念繁多,以及插件实现抉择的丰富性,导致 Kubernetes 网络问题存在着相当的复杂性,包含: 逻辑概念的复杂性Ingress/Service/NetworkPolicy 配置灵便,可能导致配置谬误/规定抵触等问题。应用 ServiceMesh 或第三方 CNI 插件,带来更简单的网络策略和扩大能力。数据面实现的复杂性数据立体通过不同组件的多层解决,且存在多种实现。协定栈链路简单,波及到网卡驱动 /netfilter/route/bridge 等配置。不同云厂商的底层配置不同,平安组、路由表等配置简单。传统的容器网络问题定位伎俩,次要是通过抓包定位丢包点、压测复现、人工查配置等形式。存在着定位流程长、大量工夫开销、人员教训要求低等问题。 在日常的工作中,排查容器网络问题占用了相当大部分的精力。因而,咱们开发了 KubeSkoop 我的项目,来实现针对容器网络场景下问题的主动诊断系统。 KubeSkoop 性能在咱们的剖析中,常见的 Kubernetes 网络问题能够分为以下两类: ...