kubernetes pod设置静态IP或者IP池

kubernetes pod设置静态IP或者IP池,第1张

Pod一般不建议设置静态IP地址,若想要实现设置静态IP,可以参考下面的方法。像亚马逊、阿里云等厂家是支持静态IP的,但如果是自己的私有云,可以参考下面的方法。这里使用的是calico网络方案,其他的网络方案,好像并不支持,更详细的操作,可以看看calico的官方文档。

IP Pool资源定义

IPPool资源yaml定义

字段说明

metadata:

spec:

blockSize说明

请在 V3.3.0 版本后使用blockSize

IPv4 26和IPv6 122的默认块大小为64个地址的块。这允许将地址按组分配给在同一主机上运行的工作负载。通过对地址进行分组,主机之间以及与其他BGP对等方之间交换的路由更少。如果主机在一个块中分配所有地址,则将为其分配一个附加块。如果没有更多可用的块,则主机可以从分配给其他主机的块中获取地址。为借用的地址添加了特定的路由,这会影响路由表的大小。

将块大小从默认值增加(例如,使用24IPv4为每个块提供256个地址)意味着每个主机更少的块,并且可能会减少路由。但是,请尝试确保池中至少有与主机一样多的块。

从默认值减小块大小(例如,使用28IPv4为每个块提供16个地址)意味着每个主机有更多块,因此可能有更多路由。如果它允许块在主机之间更公平地分布,那么这将是有益的。

关于cidr和blockSize设置

比如你新增一个IPPool,cidr设置为192.169.0.0/29,在没有设置blockSize情况下,默认是/26的blockSize,这样是不允许的,192.169.0.0/29可用地址为8个,而默认blockSize为26将会把IP段分为64块,没有足够的IP,所以是无效的,所以blockSize应该等于大于子网掩码。

新创建的IPPool,可以在原有的IPPool中某一子网,比如

nodeSelector说明

以下所有的语法,都可以使用&&或||进行组合

kubernetes设置指定IP的场景及方法:

主要通过annotations指定。

基于namespace或者每个pod指定IP池

指定静态IP地址

说明:cni.projectcalico.org/ipAddrsNoIpam:绕过IPAM分配给Pod的IPv4和/或IPv6地址的列表。任何IP冲突和路由都必须手动或由其他系统来处理。Calico仅在其IP地址属于Calico IP池内时才将路由分配到Pod。如果分配的IP地址不在Calico IP池中,则必须确保通过另一种机制来处理到该IP地址的路由。

申请浮动IP

基于node节点标签分配IP

IPPool生效优先顺序

如果将这些方法中的一种以上用于IP地址分配,则它们将具有以下优先级,其中1为最高优先级:

基于namespace指定IP池

查看当前存在的IP池

创建新的IP池

创建新的namespace,并指定IP池

创建应用测试

注意namespace设置test-ippool

为pod指定静态IP地址或地址范围

指定地址范围

创建IP地址池

创建应用测试

注意spec.template.metadata.annotations指定了使用的IPPool

Pod设置静态IP

创建应用

虽然官方说名cni.projectcalico.org/ipAddrs:后面是IPv4或IPv6列表,实际并不支持,仅可以设置一个IP地址。所以Pod副本数超过1个是不行的。

设置的IP地址必须包含在已存在的IPPool中

根据节点标签分配IP

删除或禁用已存在的IPPool

如果不禁用或删除,创建的Pod也有可能分配到其他IPPool中的地址段

禁用IPPool

删除IPPool

给节点打上标签

创建IPPool

创建应用测试

需要你先在云主机里面架设下FTP.然后设置一个目录.并在本地电脑上安装下flashfxp上传工具.利用这个工具就可以把本地数据上传到云主机里面.如果你是上传简单的小文件.也可以在远程连接服务器的时候点选项.里面有个本地资源.详细信息.在里面勾选本地磁盘后再远程.这样即可把本地的磁盘映射到云主机系统中.直接复制粘贴文件即可


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/477979.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-08
下一篇2023-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存