头图

K8S 生态周报| Cilium v1.10.0 带来 Egress Gateway 等特性

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」

KIND v0.11.0 正式发布

KIND (Kubernetes In Docker) 关注我的小伙伴想必已经都很熟悉了,这是我一直都在参与也用的非常多的一个项目,它可以很方便的使用 Docker 容器作为 Kubernetes 的 Node ,快速的启动一个/或多个测试集群。自上个版本发布以来已经过了 4 个月,我们一起来看看这个版本中有哪些值得注意的变更吧!

破坏性变更

  • 在这个版本中默认的 k8s 版本为 v1.21.1;
  • 移除掉了使用 bazel 构建镜像的方式,kind build node-image--type 参数已废弃;
  • kind build node-image--kube-root 参数已废弃,将会按照标准模式寻找 k8s 的代码目录的位置;

新特性

  • kind build node-image 新增了一个 --arch 的参数,可支持构建多架构的镜像了;
  • KIND 当前发布的预构建镜像,已经都是 multi-arch 的了,可运行在 amd64 和 arm64 架构上;
  • 当前 KIND 已经可以运行在 rootless 模式下的 Docker 和 rootless 模式下的 Podman 中了,详细指南请参考 KIND 运行在 rootless 模式 ;
  • KIND 默认的 CNI kindnetd 已经支持了双栈网络, 并在 v1.21 版本的 k8s 中默认启用 ;

你可以通过以下任意方式安装最新版的 KIND :

  • GO111MODULE="on" go get sigs.k8s.io/kind@v0.11.0;
  • wget -O kind https://kind.sigs.k8s.io/dl/v0.11.0/kind-linux-amd64;
  • clone KIND 的代码仓库后,执行 make build ;

更多关于 KIND 的使用及说明请参考官方文档:https://kind.sigs.k8s.io/ 欢迎下载使用。

apisix-ingress-controller v0.6.0 发布

Apache APISIX Ingress controller 是 Apache APISIX 的控制面组件,可以将其自定义资源(CR)及 Kubernetes 中原生的 Ingress 资源发布至 APISIX 中,进而利用 APISIX 作为入口网关管理南北向的流量。 我们一起来看看本次发布的 v0.6.0 版本中带来了哪些值得注意的变更吧:

  • #115 支持了 TCP 代理;
  • #242 为已经被 ingress controller 推送的资源增加了 label;
  • ApisixUpstreamApisixTls 增加了 jsonschema 校验;
  • #394 记录了资源处理时的 Kubernetes events;
  • #395 支持上报资源的 status;
  • #402 为 cluster 级别的插件增加 global_rules 配置;

Cilium v1.10.0 正式发布

Cilium 我在之前的文章中已经介绍过很多次了,它基于 eBPF 技术,可以为 Kubernetes 中应用程序服务间网络和 API 连接提供透明代理和保护。 想快速了解 Cilium 可以参考我之前写的 《Cilium 快速上手》 想快速了解 eBPF 也可以看看我在 PyCon China 2020 上做的分享。

Cilium v1.10 版本是一个比较大的特性版本,在这个版本中带来了众多值得关注的特性,我们一起来看看吧!

Egress IP Gateway

在几乎所有网络组件都在做入口网关的时候, Cilium 发现当把云原生应用和传统应用集成时,传统应用大多通过 IP 白名单的方式进行授权, 加上 Pod IP 的动态性,对 IP 地址的管理就成为了一个痛点。

现在 Cilium 新版本中,通过新的 Kubernetes CRD ,可以在数据包离开 Kubernetes 集群时将静态 IP 与流量相关联,这使得外部防火墙会使用此一致的静态 IP 去识别 Pod 流量。

其实就是 Cilium 帮忙做了 NAT ,使用起来也很简单:

apiVersion: cilium.io/v2alpha1
kind: CiliumEgressNATPolicy
metadata:
  name: egress-sample
spec:
  egress:
  - podSelector:
      matchLabels:
        # The following label selects default namespace
        io.kubernetes.pod.namespace: default
  destinationCIDRs:
  - 192.168.33.13/32
  egressSourceIP: "192.168.33.100"

上述的配置就是说:使用 egressSourceIP 中配置的 IP 来处理来自于 default 命名空间中 Pod 的出口流量了。

BGP 集成的支持

很多小伙伴放弃 Cilium 的一大原因可能是因为 BGP 的支持,但从这个版本开始就不用担心了!

Cilium 通过集成 MetalLB 来进行的,以此来达到 BGP L3 协议支持,这样 Cilium 可以为 LoadBalancer 类型的服务分配 IP ,并通过 BGP 将其通告的路由器,这样外部的流量就可以正常的访问到服务了。

配置 BGP 支持的方式也很简单:

apiVersion: v1
kind: ConfigMap
metadata:
  name: bgp-config
  namespace: kube-system
data:
  config.yaml: |
    peers:
    - peer-address: 10.0.0.1
      peer-asn: 64512
      my-asn: 64512
    address-pools:
    - name: default
      protocol: bgp
      addresses:
      - 192.0.2.0/24

主要就是 peers 用于和网络中现有的 BGP 路由器互联,address-pools 则是 Cilium 为 LoadBalancer 分配的 IP 池。

基于 XDP 的独立负载均衡

Cilium 基于 eBPF 的负载均衡器最近增加了对 Maglev 一致性哈希的支持,以及 eXpress(XDP) 层上转发平面的加速,这些特性使得它也可以作为独立的 4 层负载均衡存在。

Cilium XDP L4LB 具有完整的 IPv4/IPv6 双栈支持,可以独立于 Kubernetes 集群独立部署,作为一个可编程的 L4 LB 存在。

其他

另外就是增加了对 Wireguard 的支持,进行 Pod 间流量的加密;增加了一个新的 Cilium CLI ,用于管理 Cilium 集群;以及 比以往更加优异的性能!

更多关于 Cilium 项目的变更,请参考其 ReleaseNote

上游进展

  • runc 发布了 v1.0-rc95 版本,大概是 v1.0 前的最后一个版本了;
  • CNCF 网络小组定义了一套 Service Mesh Performance 的规范,通过此规范来达成一个统一的标准,用来衡量 Service Mesh 的性能情况;
  • CNCF 网络小组定义了一套 Service Mesh Performance 的规范,通过此规范来达成一个统一的标准,用来衡量 Service Mesh 的性能情况;

欢迎订阅我的文章公众号【MoeLove】

TheMoeLove


K8S生态
Container, Docker, Go, Kubernetes, Python, Vim; 微信公众号: MoeLove
1.5k 声望
19.7k 粉丝
0 条评论
推荐阅读
K8S 生态周报| Podman 开始废弃 CNI plugins, 推进自己的网络堆栈
BuildKit 我以前有很多篇文章中都有介绍过了。它是 Docker 的下一代构建引擎,目前在 Docker Desktop 中已经默认启用,在 Docker 的下一个版本 v23.0 中也会默认启用,对 Docker 中构建引擎感兴趣的小伙伴可以查...

张晋涛阅读 544

封面图
张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...

张晋涛6阅读 993评论 2

封面图
利用Docker部署管理LDAP及其初次使用
前言:本周主要写了gitlabWebhook转github的项目,总体上没有遇到什么大问题,这周接触到了LDAP,于是就花时间实际操作了解了一下。

李明5阅读 1.2k

Docker学习:Image的本地存储结构
在使用Docker时候,针对镜像的操作一般就是docker pull,docker build,docker commit(刚开始接触Docker的时候,还不会Dockerfile,经常使用这个命令,但是经历了一次血的教训,已经放弃这个命令很久)这些操作...

backbp4阅读 10k评论 3

使用docker快速搭建xssPlatform测试平台实践
笔者之前给一些开发团队多次做Web安全开发培训,为了让培训的学员能够理解XSS原理和XSS的危害,将xssPlatform进行了更新,之前一直放在GitHub中;发现关注的人越来越多,很多人在安装的过程中遇到问题不知道怎么...

汤青松1阅读 26.1k

将node.js 应用构建成docker镜像
本文内容:将node.js 应用构建成dokcer镜像, 并上传到阿里云创建 Node.js 应用1.首先,创建一个 package.json 文件,描述你应用程序以及需要的依赖: {代码...} 2.运行 npm install这会自动生成一个 package-lock...

weiweiyi3阅读 699

手把手教你一套完善且高效的k8s离线部署方案
作者:郝建伟背景面对更多项目现场交付,偶而会遇到客户环境不具备公网条件,完全内网部署,这就需要有一套完善且高效的离线部署方案。系统资源编号主机名称IP资源类型CPU内存磁盘01k8s-master110.132.10.91CentO...

京东云开发者3阅读 515

封面图
1.5k 声望
19.7k 粉丝
宣传栏