头图

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 生态周报| containerd 存在 bug 会导致 Pod 被重启,建议升级
这是 2023 年的第一篇『K8S 生态周报』,在上个月的月中之后我因为阳了就停止更新了,一直在修养身体。生病相关的内容我在上一篇文章 张晋涛:我的 2022 总结 | MoeLove有做介绍。愿大家都注意身体,保持健康。

张晋涛1阅读 370

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

backbp4阅读 9.7k评论 3

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

李明5阅读 835

BI系统打包Docker镜像及部署的技术难度和实现
随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用;传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置nginx文件;如果我们使用容器化部署,将部署操作都命令化,集...

葡萄城技术团队2阅读 8.3k

Kubernetes v1.26 新特性一览
我每期的 「k8s生态周报」都有一个叫上游进展的部分,所以很多值得关注的内容在之前的文章中已经发过了。这篇中我会再额外介绍一些之前未涵盖的,和之前介绍过的值得关注的内容。

张晋涛2阅读 579评论 1

封面图
深入剖析容器网络和 iptables
Docker 能为我们提供很强大和灵活的网络能力,很大程度上要归功于与 iptables 的结合。在使用时,你可能没有太关注到 iptables 的作用,这是因为 Docker 已经帮我们自动完成了相关的配置。

张晋涛3阅读 1.2k

封面图
使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...

李朝阳2阅读 416

1.5k 声望
19.7k 粉丝
宣传栏