cni k8s 插件安装_使用 Amazon VPC CNI 插件搭建自定义网络环境的 Kubernetes 集群

背景介绍

在AWS上搭建Kubernetes(简称K8S)集群环境,推荐使用托管服务EKS。

无论是使用托管还是自建K8S集群,在有些场景下,需要让Pod间的通信管理可以像EC2的网络地址和通信一样的灵活,从而实现在同一个K8S集群内:Pod间通信可以跨子网,跨VPC,主机与Pod分属不同子网和安全组的灵活配置。

通过Amazon VPC CNI插件的使用,Pod可以分配到在 VPC 网络上的 IP 地址。用户可以实现同一个K8S集群部署在:

一个VPC内,主机与Pod使用相同子网及安全组

一个VPC内,主机与Pod使用不同子网及安全组

多个VPC内,主机与Pod使用相同子网及安全组

多个VPC内,主机与Pod使用不同子网及安全组

在集群内,每台主机都可以使用单独的子网网段,同样每台主机内的Pod也可以使用各自独立的子网网段。

EKS目前不支持同个集群的worker节点部署在多VPC内。尽管通过CNI可以实现自建K8S集群的多VPC部署方案,仍然推荐同个集群单VPC的部署方式来降低复杂度和维护成本。

本文使用的示例环境基于CentOS7自建K8S集群部署CNI的默认及自定义网络配置。

1. 什么是CNI

AWS上建议使用EKS 搭建K8S集群环境,同时可以使用Amazon VPC CNI插件管理Pod的网络地址和通信。

使用了AWS VPC CNI插件允许Pod在Pod 内具有与其在 VPC 网络上相同的 IP 地址。此 CNI 插件是一个在 GitHub 上进行维护的开源项目。

1ef31d895dcd385b2a7dba8b17a4bc64.png

2. CNI部署选项

针对EKS集群CNI的部署,可参考GitHub项目说明。

针对自建K8S集群CNI的部署,官方用户指南是只针对EKS,使用了EKS的AMI镜像,在步骤上会与自建的有些差异。

CNI的配置变量提供了很多部署选项。默认情况下,在为 Pod 分配新的网络接口时,ipamD 将使用工作线程节点的主弹性网络接口的安全组和子网。但是,在一些使用案例中,Pod 网络接口将在控制层面安全组所在的 VPC 中使用不同的安全组或子网。详细信息可参考CNI自定义网络。

3. 如何安装K8S及CNI插件

3.1 启动EC2

使用EKS托管服务推荐使用EKS节点的镜像,而自建则取决于系统要求,这里选用CentOS 7。

在EC2控制面板里启动实例,选用CentOS 7镜像。

60e38946512b65ef76034222474c3ec5.png

在选择实例大小时,要注意每个实例类型的每个网络接口的 IP 地址是不一样的,会直接决定K8S所能分配给Pod的IP数量,所以一定要根据每个节点的Pod数量要求来选择实例大小。

为EC2创建好单独角色及配上所需策略。

3.2 配置EC2网络

根据是否要启用CNI自定义网络配置的业务场景,请参照不同步骤。

3.2.1 使用默认网络配置

1) 为主机创建子网和安全组,主机内Pod也会应用上与主机相同的子网和安全组。在这里要选好子网大小,Pod节点数目受限于子网大小。

2) 将EC2创建到该子网和安全组内。

网络接口数量及所分配IP数受实例大小限制,也取决于集群Pod数量要求。可根据需要添加更多数量的网络接口。

在默认网络配置模式下,主机的主网络接口将被分配到子网内多个IP,只有一个IP供主机使用。附加的其它网络接口也将被分配到同一子网内多个IP,除一个主机IP外,剩下IP都会分配给Pod使用。

3.2.2 使用自定义网络配置

1) 为主机创建子网和安全组,并为Pod单独创建子网和安全组。

K8S集群节点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值