鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

StatefulSet固定IP地址

StatefulSet和其他Workload相同,可以使用ovn.kubernetes.io/ip_pool来指定Pod使用的IP地址。由于StatefulSet多用于有状态服务,对网络固定有个更高的要求,Kube-OVN做了特殊的强化:

  1. Pod按顺序分配ovn.kubernetes.io/ip_pool中的IP地址。
  2. StatefulSet Pod在更新或删除过程中,OVN中保存的Logical_switch_port不会删除,新生成的Pod直接复用旧的Interface信息;因此Pod可以复用IP地址/MAC地址及其他网络信息,达到和StatefulSet Volume类似的状态保留功能。
  3. StatefulSet Pod在更新或删除过程中,对于没有ovn.kubernetes.io/ip_pool注解的StatefulSet,Pod第一次生成时会随机分配IP地址/MAC地址,之后在整个StatefulSet的生命周期内,网络信息都会保持固定。

示例:

1
vim StatefulSet.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: web
  namespace: product
spec:
  serviceName: "nginx"
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
1
kubectl create -f StatefulSet.yaml

使用annotation定义StatefulSet固定IP地址时需要注意以下几点:

  • IP地址必须在所属子网的CIDR内。
  • 所使用的IP地址不能和已有的IP地址冲突。
  • IP地址数量小于replicas数量时,多出的Pod将无法创建,需要根据StatefulSet的更新策略以及扩容规划调整ovn.kubernetes.io/ip_pool中的IP地址数量。