栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Kubernetes 固定 Pod IP 地址方法

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kubernetes 固定 Pod IP 地址方法

第七章 Kubernetes 固定 Pod IP 地址方法

文章目录
  • 第七章 Kubernetes 固定 Pod IP 地址方法
  • 一、自定义 IP 地址池
    • 1、下载 calico 管理工具 calicoctl
    • 2、设置 IP 固定方式
    • 3、创建 IP 地址池
  • 二、以 redis-cluster 为例,来固定 Pod IP 地址的案例
    • 1、多个 Pod 固定 IP 地址池
      • 修改配置文件
      • 查看运行结果
    • 2、单个 pod 固定IP
  • 总结


一、自定义 IP 地址池

我部署的 Kubernetes 集群采用的网络组件是 calico ,这个需要下载 calico 管理工具 calicoctl 来创建自定义的地址池。

1、下载 calico 管理工具 calicoctl
curl -O -L  https://github.com/projectcalico/calicoctl/releases/download/v3.18.4/calicoctl
chmod +x calicoctl
cp calicoctl /usr/local/bin/
2、设置 IP 固定方式

修改配置文件 vim /etc/cni/net.d/10-calico.conflist,将 ipam 类型修改为 calico-ipam

3、创建 IP 地址池
### 查看现有地址池
[root@k8s-master-01 ~]# calicoctl get ippool
NAME                  CIDR            SELECTOR   
default-ipv4-ippool   10.100.0.0/16   all()
### 设置地址池配置文件
### 创建第一个地址池
[root@k8s-master-01 ~]#  cat ippool1.yaml 
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: new-pool1
spec:
  blockSize: 31
  cidr: 10.10.10.0/30     #这里设置的地址池可用 IP 的个数是四个,从 0--3
  ipipMode: Always
  natOutgoing: true
### 创建命令
calicoctl create -f ippool1.yaml 

### 创建第二个地址池
[root@k8s-master-01 ~]#  cat ippool2.yaml 
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: new-pool2
spec:
  blockSize: 31
  cidr: 10.10.10.4/31   #这里设置的地址池的可以 IP 是两个,分别是 4--5
  ipipMode: Always
  natOutgoing: true
### 创建命令 
 calicoctl create -f ippool2.yaml 

### 查看现有地址池
[root@k8s-master-01 ~]# calicoctl get ippool
NAME                  CIDR            SELECTOR   
default-ipv4-ippool   10.100.0.0/16   all()      
new-pool1             10.10.10.0/30   all()      
new-pool2             10.10.10.4/31   all()
二、以 redis-cluster 为例,来固定 Pod IP 地址的案例

实现的方案主要使用到 calico 组件的两个 Kubernetes 的注解:
1、cni.projectcalico.org/ipAddrs:单个pod固定IP
2、cni.projectcalico.org/ipv4pools:多pod固定IP池

1、多个 Pod 固定 IP 地址池

以上我创建的两个地址池就是为了 redis-cluster 准备的,我设置 redis-cluster 三主三从,以上的两个地址池可用的 IP 地址一共是 6 个,所以说尽管出现意外情况导致 Pod 重启,IP 地址发生变化,也是在集群中这个 6 个 IP 地址间变化,不会导致集群失败的情况。

修改配置文件

查看运行结果

可以看出,创建的 6 个 pod 的 IP 地址为0–5

[root@k8s-master-01 redis_6.2.4]# kubectl get pods -n judicial -o wide|grep redis
redis-cluster-0                1/1     Running   0          37h   10.10.10.5       k8s-work-03              
redis-cluster-1                1/1     Running   0          37h   10.10.10.3       k8s-work-05              
redis-cluster-2                1/1     Running   0          37h   10.10.10.2       k8s-work-02              
redis-cluster-3                1/1     Running   0          37h   10.10.10.1       k8s-work-04              
redis-cluster-4                1/1     Running   0          37h   10.10.10.0       k8s-work-01              
redis-cluster-5                1/1     Running   0          37h   10.10.10.4       k8s-work-03              

2、单个 pod 固定IP

单个 Pod 固定 IP 的方式很简单,只需要写入地址池中没有被使用的 IP 地址就可以。

总结

以上就是 Pod 固定 IP 的方法,在使用过程中可能会遇到 IP 没有释放等问题导致 pod 启动失败,导致这种原因可能是 pod 被删除后,使用的 IP 地址未被释放,所以需要使用以下命令对地址池的 IP 进行释放,才能够被 pod 重新使用。

### 释放已分配的 IP
calicoctl ipam release --ip 10.10.10.100  
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号