【云原生】CNI及Calico安装使用

44 阅读1分钟

一、CNI

1.CNI是什么

Container NetWork Interface 容器网络接口,简单来说就是安排pod之间的网络通信

2.CNI如何使用

1.下载安装CNI插件即可使用

3.常见的CNI插件有哪些

1.Calico: 支持 NetworkPolicy,高性能 汉语意思:印花布
2.Flannel:简单易用,性能中等 功能单一(仅连通网络) 汉语意思:绒布
3.AWS:深度集成 AWS,无 Overlay 开销
4.Cilium:超高性能,支持网络观测

4.CNI的工作原理是什么

1.Pod 创建时,kubelet 调用 CNI 插件。
2.CNI 给 Pod 分配 IP,并把网络接口挂到 Pod 的网络命名空间里。
3.CNI 配置路由,让 Pod 能跨 Node 找到其他 Pod。
4.Pod 启动后,就可以用这个 IP 与其他 Pod 通信了。
Pod = 房子,IP = 地址,CNI = 给房子修路 + 分配地址,保证每个房子能互相访问。

5.CNI的网络模型有哪些

1.Overlay网络:在现有 Node 网络上“盖一层虚拟网络”,Pod A 的数据包先封装成 VXLAN/Geneve,再发送到目标Pod
2.原生路由网络:给每个 Pod 分配真实 IP,通过路由表让 Node 之间直接找到 Pod

二、Calico

1.Calico如何安装

1.kubectl apply -f projectcalico.docs.tigera.io/manifests/c…
2.kubectl get pods -n kube-system
3.等看到 calico-node 状态为 Running 就安装成功

2.如何规定哪些pod可以访问

1.给Pod打标签:比如 role=frontend
2.写NetworkPolicy:规则写明谁可以访问谁

例子
假设:Pod A:role=frontend, Pod B:role=backend
规则:只有 frontend 可以访问 backend

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: backend   # 哪些 Pod 受保护
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend  # 允许访问的 Pod
    ports:
    - protocol: TCP
      port: 80