CNI,即容器网络接口,是一个由 CNCF (Cloud Native Computing Foundation) 维护的项目,它提供了一套标准来配置容器的网络连接。CNI 插件允许容器管理系统,如 Kubernetes, Docker, 和 rkt, 以一种一致的方式来操作网络资源。
场景描述:您正在部署一个 Kubernetes 集群,并决定使用 Calico 作为 CNI 插件来管理网络。
步骤:
安装 Calico:
使用 Calico 提供的 YAML 文件安装 Calico 插件:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
配置网络策略:
为了演示,我们可以创建一个简单的网络策略,允许来自同一命名空间的所有 Pod 之间的通信。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector: {}
egress:
- to:
- podSelector: {}
应用这个网络策略:
kubectl apply -f network-policy.yaml
验证网络策略:
验证策略是否正常工作。可以部署两个测试 Pod,并尝试从一个 Pod 访问另一个 Pod。
kubectl run test-pod-1 --image=busybox --restart=Never -- sleep 3600
kubectl run test-pod-2 --image=busybox --restart=Never -- sleep 3600
然后进入一个 Pod 并尝试 ping 另一个 Pod。
kubectl exec -it test-pod-1 -- ping <test-pod-2-ip>
这个案例展示了如何在 Kubernetes 集群中使用 Calico CNI 插件来配置网络和网络策略。Calico 提供了强大的网络功能,包括网络隔离、策略控制和性能优化,适用于各种规模的 Kubernetes 集群。