更新时间:2021-10-15 GMT+08:00
分享

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 Volumn类似的状态保留功能。
  3. StatefulSet Pod在更新或删除过程中,对于没有ovn.kubernetes.io/ip_pool注解的StatefulSet,Pod第一次生成时会随机分配IP/MAC,之后在整个StatefulSet的生命周期内,网络信息都会保持固定。

示例:

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
kubectl create -f StatefulSet.yaml

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

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

    相关文档

    相关产品

close