解析 | K8S之网络插件exec

简介: K8S支持3种类型的网络插件。 今天继续介绍下另一种插件exec K8S网络插件支持exec、CNI、kubenet 3种类型。插件满足K8S网络插件接口即可。 type NetworkPlugin interface{         Init(host Host, hairpinModecomponentconfig.

K8S支持3种类型的网络插件。

今天继续介绍下另一种插件exec 

K8S网络插件支持exec、CNI、kubenet 3种类型。插件满足K8S网络插件接口即可。

type NetworkPlugin interface{

        Init(host Host, hairpinModecomponentconfig.HairpinMode) error

        Event(name string,details map[string]interface{})

        Name() string

        Capabilities() utilsets.Int

        SetUpPod(namespace string, name string,podInfraContainerID kubecontainer.ContainerID) error

        TearDownPod(namespace string, name string,podInfraContainerID kubecontainer.ContainerID) error

        GetPodNetworkStatus(namespace string, name string,podInfraContainerID kubecontainer.ContainerID) (*PodNetworkStatus,error)

        Status() error

}

exec 类型插件分别在初始化,pod创建,销毁,查询时调用可执行程序,由可执行程序完成pod的网络管理。

在初始化,pod创建,销毁,查询时,调用的subcommand分别为 “init”,”setup”,”teardown”,”status”,所以要求可执行程序能解析上述subcommand 。

这里以一个简单的K8S插件为例子,介绍如何实现exec 类型的网络插件。

需求场景如下:

要求k8s创建pod 时,在pod内还会创建一个网络接口,该接口IP固定,该接口的另一端veth在ovs 网桥上,且有vlan tag,改tag 号可从pod name 取出。

该插件代码见:

https://github.com/liuliuzi/k8s-netplugin/tree/master/exec

更改权限为可执行,同时下载:

https://github.com/jpetazzo/pipework

更改pipework 权限为可执行,并移动到系统PATH路径下。

在每台worknode修改kebelet 启动参数,添加网络插件参数。

 –-network-plugin=myplugin   \插件名

  –network-plugin-dir=/root/kubplugin  \插件位置

在每台worknode 下载安装OVS。

在K8S上创建pod:

kubectl run 22-my-nginx –image=busybox –replicas=2

77a11ec3-545a-42cc-bc7a-e3f54ff0c63b

    Bridge”k8s_br”

        Port”k8s_br”

            Interface”k8s_br”

                type:internal

        Port”veth1pl29198″

            tag: 22

            Interface”veth1pl29198″

    ovs_version:”2.5.0″

可见一个vlan tag22的IF已经创建,veth另一端在pod内。容器内有两张网络,一个是默认的K8S网络,另外一个通过OVS的vlan网络。这样就实现了一个容器多网络。对于这个插件实现原理,在init的时候,确保k8s_br 的ovs 网桥存在。在setup的时候,先通过pod获取vlan名字,然后通过pipework添加veth到容器内。

这里的场景非常简单,固定IP,而且vlan tag从pod name获取。在复杂的场景里,这里的IP和vlan tag可以从一个专门的服务获取,比如ETCD等。

在teardown的时候,删除veth,删除OVSport。

相对单独使用pipework,有一个缺点就是pipework创建的veth和port无法伴随容器的生命周期,比如容器销毁后veth仍旧存在。现在通过K8S的网络插件结构,插件通过pipework创建的veth 和port可以伴随POD的生命周期,包括POD的迁移。

本文转移K8S技术社区-解析 | K8S之网络插件exec

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
6月前
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
220 4
|
6月前
|
Kubernetes 数据安全/隐私保护 容器
K8s中Flannel网络插件安装提示forbidden无权限的解决方法
总的来说,解决“forbidden无权限”的问题,需要从权限和配置两个方面来考虑。只有当用户或者服务账户有足够的权限,且Flannel的配置文件设置正确,才能成功地安装Flannel。希望这个解答能够帮助你解决问题。
323 13
|
10月前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
1481 89
|
8月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
614 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
8月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
284 15
|
8月前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
309 12
|
8月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
缓存 边缘计算 安全
阿里云CDN:全球加速网络的实践创新与价值解析
在数字化浪潮下,用户体验成为企业竞争力的核心。阿里云CDN凭借技术创新与全球化布局,提供高效稳定的加速解决方案。其三层优化体系(智能调度、缓存策略、安全防护)确保低延迟和高命中率,覆盖2800+全球节点,支持电商、教育、游戏等行业,帮助企业节省带宽成本,提升加载速度和安全性。未来,阿里云CDN将继续引领内容分发的行业标准。
497 7
|
9月前
|
云安全 人工智能 安全
阿里云网络安全体系解析:如何构建数字时代的"安全盾牌"
在数字经济时代,阿里云作为亚太地区最大的云服务提供商,构建了行业领先的网络安全体系。本文解析其网络安全架构的三大核心维度:基础架构安全、核心技术防护和安全管理体系。通过技术创新与体系化防御,阿里云为企业数字化转型提供坚实的安全屏障,确保数据安全与业务连续性。案例显示,某金融客户借助阿里云成功拦截3200万次攻击,降低运维成本40%,响应时间缩短至8分钟。未来,阿里云将继续推进自适应安全架构,助力企业提升核心竞争力。

推荐镜像

更多
下一篇
oss云网关配置