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上传工具.利用这个工具就可以把本地数据上传到云主机里面.如果你是上传简单的小文件.也可以在远程连接服务器的时候点选项.里面有个本地资源.详细信息.在里面勾选本地磁盘后再远程.这样即可把本地的磁盘映射到云主机系统中.直接复制粘贴文件即可欢迎分享,转载请注明来源:夏雨云
评论列表(0条)