cilium插件测试_通过CNI Chaining 为k8s 插上Cilium翅膀

本文介绍了Cilium,一个基于eBPF和XDP的高性能容器网络方案,以及如何通过CNI Chaining将Cilium与AWS-CNI结合使用,实现在保持ENI高性能网络的同时,利用Cilium的高级功能如负载均衡和可观察性。详细步骤包括安装Cilium、配置CNI Chaining以及部署和验证连通性测试。
摘要由CSDN通过智能技术生成

在介绍CNI Chaining之前,我们先简单介绍一下Cilium。要说现在最火的容器网络,莫过于Cilium了。Cilium 是一个基于 eBPF 和 XDP 的高性能容器网络方案,代码开源在https://github.com/cilium/cilium。其主要功能特性包括安全上,支持 L3/L4/L7 安全策略,这些策略按照使用方法又可以分为基于身份的安全策略(security identity)

基于 CIDR 的安全策略

基于标签的安全策略

网络上,支持三层平面网络(flat layer 3 network),如覆盖网络(Overlay),包括 VXLAN 和 Geneve 等

Linux 路由网络,包括原生的 Linux 路由和云服务商的高级网络路由等

提供基于 BPF 的负载均衡

提供便利的监控和排错能力

此外最新版本的Cilium已经包含了Kube-proxy的功能。

CNI Chaining

今天我们试想一种场景:你的集群运行在公有云上,整个k8s的网络模型已经使用了公有云提供的ENI弹性网络,比如aws的aws-cni和阿里云的terway。ENI带给我们诸多好处,高性能,拉平了Pod网络。

但是我们却希望使用Cilium带来的高性能负载均衡和可观察性。

于是今天的主角CNI Chaining出场了。

CNI Chaining允许将Cilium与其他CNI插件结合使用。

通过Cilium CNI Chaining,基本网络连接和IP地址管理由非Cilium CNI插件管理,但是Cilium将BPF程序附加到由非Cilium插件创建的网络设备上,以提供L3/L4/L7网络可见性和策略强制执行和其他高级功能,例如透明加密。

目前Cilium支持与以下网络模型配合使用:

今天我们主要测试AWS-CNI。

Cilium与AWS eni

接下来主要介绍如何与aws-cni结合设置Cilium。在这种混合模式下,aws-cni插件负责通过ENI设置虚拟网络设备以及地址分配(IPAM)。安装程序中,调用Cilium CNI插件将BPF程序附加到aws-cni设置的网络设备上,以实施网络策略,执行负载平衡和加密。

关于EKS集群部署,本文不涉及。大家可以参考相关文档。

安装成功后,执行kubectl get nodes可以类似如下输出:

NAME STATUS ROLES AGE VERSION

ip-172-xx-56-151.ap-southeast-1.compute.internal Ready 10m v1.15.11-eks-af3caf

ip-172-xx-94-192.ap-southeast-1.compute.internal Ready 10m v1.15.11-eks-af3caf

部署helm3

执行

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3

chmod 700 get_helm.sh

./get_helm.sh

看到如下输出,表明安装成功:

Helm v3.2.0 is available. Changing from version .

Downloading https://get.helm.sh/helm-v3.2.0-linux-amd64.tar.gz

Preparing to install helm into /usr/local/bin

helm installed into /usr/local/bin/helm

安装Cilium

增加Cilium helm repo:

helm repo add cilium https://helm.cilium.io/

通过Helm部署Cilium:

helm install cilium cilium/cilium --version 1.7.3 \

--namespace kube-system \

--set global.cni.chainingMode=aws-cni \

--set global.masquerade=false \

--set global.tunnel=disabled \

--set global.nodeinit.enabled=true

这将启用与aws-cni插件的chaining,也将禁用隧道。由于ENI IP地址可以直接在您的VPC中路由,因此不需要隧道,也可以出于相同原因禁用伪装。

看到如下类似输出,表明安装成功:

NAME: cilium

LAST DEPLOYED: Thu Apr 30 17:56:11 2020

NAMESPACE: kube-system

STATUS: deployed

REVISION: 1

TEST SUITE: None

NOTES:

You have successfully installed Cilium.

Your release version is 1.7.3.

For any further help, visit https://docs.cilium.io/en/v1.7/gettinghelp

重启已经部署的Pod

新的CNIchaining配置将不适用于群集中已在运行的任何Pod。现有Pod将可以访问,Cilium将对其进行负载平衡,但策略实施将不适用于

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值