" 如果你怀念 SDN 领域丰富的网络能力却在云原生领域苦苦追寻而不得,那么 Kube-OVN 将是你的最佳选择。本系列我们将逐个介绍Kube-OVN高级功能的工作原理及使用路径,帮你尽快征服容器网络难题!"
【Cilium 】[1] 是一款基于 eBPF 的网络和安全组件,Kube-OVN 利用其中的 【CNI Chaining】[2] 模式来对已有功能进行增强。用户可以同时使用 Kube-OVN 丰富的网络抽象能力和 eBPF 带来的监控和安全能力。
通过集成 Cilium,Kube-OVN 用户可以获得如下增益:
- 更丰富高效的安全策略。
- 基于 Hubble 的监控视图。
前提条件
- Linux 内核版本高于 4.19 或其他兼容内核以获得完整 eBPF 能力支持。
- 提前部署 Helm 为安装 Cilium 做准备,部署 Helm 请参考 【Installing Helm】[3] 。
配置 Kube-OVN
为了充分使用 Cilium 的安全能力,需要关闭 Kube-OVN 内的 networkpolicy
功能,并调整 CNI 配置优先级。
在 install.sh
脚本里修改下列变量:
ENABLE_NP=false
CNI_CONFIG_PRIORITY=10
若已部署完成,可通过修改 kube-ovn-controller
的启动参数进行调整 networkpolicy
:
args:
- --enable-np=false
修改 kube-ovn-cni
启动参数调整 CNI 配置优先级:
args:
- --cni-conf-name=10-kube-ovn.conflist
在每个节点调整 Kube-OVN 配置文件名称,以便优先使用 Cilium 进行操作:
代码语言:javascript复制mv /etc/cni/net.d/01-kube-ovn.conflist /etc/cni/net.d/10-kube-ovn.conflist
部署 Cilium
创建 chaining.yaml 配置文件,使用 Cilium 的 generic-veth 模式:
代码语言:javascript复制apiVersion: v1kind: ConfigMapmetadata: name: cni-configuration namespace: kube-systemdata: cni-config: |- {"name": "generic-veth","cniVersion": "0.3.1","plugins": [ {"type": "kube-ovn","server_socket": "/run/openvswitch/kube-ovn-daemon.sock","ipam": {"type": "kube-ovn","server_socket": "/run/openvswitch/kube-ovn-daemon.sock" } }, {"type": "portmap","snat": true,"capabilities": {"portMappings": true} }, {"type": "cilium-cni" } ] }
安装配置文件:
代码语言:javascript复制kubectl apply -f chaining.yaml
使用 Helm 部署 Cilium:
代码语言:javascript复制helm repo add cilium https://helm.cilium.io/
helm install cilium cilium/cilium --version 1.11.6
--namespace kube-system
--set cni.chainingMode=generic-veth
--set cni.customConf=true
--set cni.configMap=cni-configuration
--set tunnel=disabled
--set enableIPv4Masquerade=false
--set enableIdentityMark=false
确认 Cilium 安装成功:
代码语言:javascript复制# cilium status
/¯¯
/¯¯__/¯¯ Cilium: OK
__/¯¯__/ Operator: OK
/¯¯__/¯¯ Hubble: disabled
__/¯¯__/ ClusterMesh: disabled
__/
DaemonSet cilium Desired: 2, Ready: 2/2, Available: 2/2
Deployment cilium-operator Desired: 2, Ready: 2/2, Available: 2/2
Containers: cilium Running: 2
cilium-operator Running: 2
Cluster Pods: 8/11 managed by Cilium
Image versions cilium quay.io/cilium/cilium:v1.10.5@sha256:0612218e28288db360c63677c09fafa2d17edda4f13867bcabf87056046b33bb: 2
cilium-operator quay.io/cilium/operator-generic:v1.10.5@sha256:2d2f730f219d489ff0702923bf24c0002cd93eb4b47ba344375566202f56d972: 2
文章链接
1、Cilium:https://cilium.io/
2、CNI Chaining:https://docs.cilium.io/en/stable/gettingstarted/cni-chaining/
3、Installing Helm:https://helm.sh/docs/intro/install/
更多功能介绍,请见Kube-OVN 最新中文文档(点击阅读原文):https://kubeovn.github.io/docs/v1.10.x/