Skip to content

StatefulSet IP 保持

Huanyu He edited this page Aug 2, 2022 · 4 revisions

对于 StatefulSet 类型的 workload,hybridnet 支持为其 Pod 自动保持 IP。如果一个 StatefulSet 类型的 Pod 开启了 IP 保持能力,它的地址一旦被分配之后在整个 StatefulSet 的生命周期内不会再发生变化

“StatefulSet IP 保持” 是默认启用的行为,但是在 Underlay 网络环境下,如果 StatefulSet Pod 需要重启后能够迁移网络域,保持 IP 的行为会导致问题,因为一旦 Underlay 的 Pod 被固定了 IP,其网络域也随之被固定。这种情况下,可以通过对于单独某个 StatefulSet 设置开启/关闭保持 IP 行为(优先于全局默认行为)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: curl-ss
spec:
  selector:
    matchLabels:
      app: curl-ss
  replicas: 3
  serviceName: "curl"
  template:
    metadata:
      annotations:
        networking.alibaba.com/ip-retain: "false"        # Stop retaining ip addressed for the StatefulSet. 
      labels:
        app: curl-ss
    spec:
      containers:
      - args:
        - -c
        - sleep 999999999
        command:
        - /bin/sh
        name: curl
        image: tutum/curl:alpine

如果要关闭全局的 “StatefulSet IP 保持” 行为,可以通过

helm upgrade hybridnet hybridnet/hybridnet -n kube-system --set defaultIPRetain=false --reuse-values