Cilium 是一个开源的容器网络代理,它提供了一种灵活且可扩展的网络策略管理机制。NetworkPolicy是 Cilium 提供的一种网络访问控制机制,它允许我们定义一组规则,这些规则可以限制特定命名空间中的 Pod 之间的网络通信。通过使用NetworkPolicy,我们可以实现更细粒度的网络访问控制,从而提高应用程序的安全性和可靠性。
本页展示如何使用 Cilium 提供 NetworkPolicy。
一、准备
必须拥有一个 Kubernetes 的集群,同时必须配置 kubectl 命令行工具与集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果还没有集群,可以通过 Minikube 构建一个自己的集群,或者可以使用下面的 Kubernetes 练习环境之一:
- Killercoda
- 玩转 Kubernetes
要获知版本信息,请输入 kubectl version.
二、在Minikube上部署Cilium
为了轻松熟悉 Cilium,可以根据 Cilium Kubernetes 入门指南 在 minikube 中执行一个 Cilium 的基本 DaemonSet 安装。
要启动 minikube,需要的最低版本为 1.5.2,使用下面的参数运行:
minikube version
minikube version: v1.5.2
minikube start --network-plugin=cni
对于 minikube 可以使用 Cilium 的 CLI 工具安装它。 为此,先用以下命令下载最新版本的 CLI:
curl -LO https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz
然后用以下命令将下载的文件解压缩到 /usr/local/bin 目录:
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin rm cilium-linux-amd64.tar.gz
运行上述命令后,现在可以用以下命令安装 Cilium:
cilium install
随后 Cilium 将自动检测集群配置,并创建和安装合适的组件以成功完成安装。 这些组件为:
- Secret cilium-ca 中的证书机构 (CA) 和 Hubble(Cilium 的可观测层)所用的证书;
- 服务账号;
- 集群角色;
- ConfigMap;
- Agent DaemonSet 和 Operator Deployment。
安装之后,可以用 cilium status 命令查看 Cilium Deployment 的整体状态。 在此处查看 status 命令的预期输出。
三、Cilium组件
部署使用 Cilium 的集群会添加 Pod 到 kube-system 命名空间。要查看 Pod 列表,运行:
kubectl get pods –namespace=kube-system -l k8s-app=cilium
将看到像这样的 Pod 列表:
NAME READY STATUS RESTARTS AGE cilium-kkdhz 1/1 Running 0 3m23s ...
集群中的每个节点上都会运行一个 cilium Pod,通过使用 Linux BPF 针对该节点上的 Pod 的入站、出站流量实施网络策略控制。