因为项目中需要使用k8s部署swagger服务,然后在kubectl create这一步出现了如下报错,找不到网络插件
failed to find plugin "loopback" in path [/opt/cni/bin]
failed to find plugin "random-hostport" in path [/opt/cni/bin]
解决方案:
将缺少的插件放到/opt/cni/bin目录下面即可解决。
链接:https://pan.baidu.com/s/1quElqqoN1CGhIJJe27_5yw
提取码:a2de
k8s网络设计
Kubemetes 在设计上考虑了对网络的需求和模型设计,但自身并没有重新实现,而是可以另外嵌入现有的网络管理方案。同时, Kubemetes 试图通过插件化的形式来采用AppC 提出的Contai ner Networking Interface (CNI)规范。这意味着,将来所有支持Kubernetes 的网络插件都要遵循该规范。
实际上, CNI 的模型十分简洁, Kubernetes 只需要告诉插件,把某个Pod 挂载到某个网络、或者从某个网络卸载,其他工作都要由插件来完成。Kubernetes 自身不需要了解网络的具体细节。
- Pod 内(容器之间) : 因为容器共享了网络命名空间,可以通过lo直接通信,无须额外支持;
- Pod 之间:又分在同一个节点上和在不同节点上,前者通过本地网桥通信即可,后者需要在各自绑定的网桥之间打通;
- Pod 和服务之间: 因为服务是虚拟的ClusterIP ,因此,需要节点上配置代理机制(例如基于iptables )来映射到后端的Pod;
- 外部访问服务:要从外面访问服务,必须经过负载均衡器,通过外部可用的地址映射到内部的服务上。
也就是网络插件不依赖于kubectl