在新设置的 Kubernetes 集群中,我们需要一个所谓的 CNI。此 CNI 在安装后并不总是存在。

什么是容器网络接口 (CNI)?

CNI 是一个网络框架,它允许通过一组 Go 编写的规范和库来动态配置网络资源。为插件提到的规范概述了一个接口,该接口将配置网络、配置 IP 地址和维护多主机连接。

在 Kubernetes 上下文中,CNI 与 kubelet 无缝集成,以允许使用底层或覆盖网络在 pod 之间进行自动网络配置。底层网络是在由路由器和交换机组成的网络层的物理层定义的。相比之下,overlay 网络使用 VxLAN 之类的虚拟接口来封装网络流量。

一旦指定了网络配置类型,运行时定义容器加入的网络并调用 CNI 插件将接口添加到容器命名空间中,并通过调用 IPAM(IP 地址管理)插件分配链接的子网和路由。

除了 Kubernetes 网络,CNI 还支持 OpenShift 等基于 Kubernetes 的平台,通过软件定义网络 (SDN) 方法提供跨集群的统一容器通信。

什么是纤毛?

Cilium 是由 Linux 内核开发人员开发的开源、高度可扩展的 Kubernetes CNI 解决方案。 Cilium 通过使用 eBPF 过滤技术添加高级应用程序规则来保护 Kubernetes 服务之间的网络连接。 Cilium 作为守护进程cilium-agent部署在 Kubernetes 集群的每个节点上,用于管理操作并将网络定义转换为 eBPF 程序。

Pod 之间的通信通过覆盖网络或使用路由协议进行。案例支持 IPv4 和 IPv6 地址。覆盖网络实施利用 VXLAN 隧道进行数据包封装,而本地路由通过未封装的 BGP 协议发生。

Cilium 可以与多个 Kubernetes 集群一起使用,并且可以提供多种 CNI 功能、高级别的检查、跨所有集群的 pod 到 pod 连接。

它的网络和应用层感知管理数据包检查,以及正在使用的应用协议数据包。

Cilium 还通过 HTTP 请求过滤器支持 Kubernetes 网络策略。策略配置可以写入 YAML 或 JSON 文件,并提供入口和出口强制执行。管理员可以根据请求方法或路径标头接受或拒绝请求,同时将策略与 Istio 等服务网格集成。

准备

对于安装,我们需要 Cilium 的 CLI。

我们可以使用以下命令安装它:

Mac OSx

curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/latest/download/cilium-darwin-amd64.tar.gz{,.sha256sum}
shasum -a 256 -c cilium-darwin-amd64.tar.gz.sha256sum
sudo tar xzvfC cilium-darwin-amd64.tar.gz /usr/local/bin
rm cilium-darwin-amd64.tar.gz{,.sha256sum}

进入全屏模式 退出全屏模式

Linux

curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz{,.sha256sum}
sha256sum --check cilium-linux-amd64.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
rm cilium-linux-amd64.tar.gz{,.sha256sum}

进入全屏模式 退出全屏模式

安装Cilium

您可以在任何 Kubernetes 集群上安装 Cilium。这些是关于如何将 Cilium 安装到任何 Kubernetes 集群中的通用说明。安装程序将尝试自动为您选择最佳配置选项。

要求

  • Kubernetes 必须配置为使用 CNI

  • Linux 内核 >u003d 4.9.17

安装

将 Cilium 安装到当前 kubectl 上下文指向的 Kubernetes 集群中:

cilium install

进入全屏模式 退出全屏模式

如果由于某种原因安装失败,请运行cilium status以检索 Cilium 部署的整体状态并检查任何未能部署的 pod 的日志。

验证安装

要验证 Cilium 是否已正确安装,您可以运行

$ cilium status --wait
   /¯¯\
/¯¯\__/¯¯\    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-operator    Running: 2
                  cilium             Running: 2
Image versions    cilium             quay.io/cilium/cilium:v1.9.5: 2
                  cilium-operator    quay.io/cilium/operator-generic:v1.9.5: 2

进入全屏模式 退出全屏模式

运行以下命令以验证您的集群是否具有正确的网络连接:

$ cilium connectivity test
ℹ️  Monitor aggregation detected, will skip some flow validation steps
✨ [k8s-cluster] Creating namespace for connectivity check...
(...)
---------------------------------------------------------------------------------------------------------------------
📋 Test Report
---------------------------------------------------------------------------------------------------------------------
✅ 69/69 tests successful (0 warnings)

进入全屏模式 退出全屏模式

恭喜!你有一个带有 Cilium 的功能齐全的 Kubernetes 集群。 🎉

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐