colico官网参考
主要涉及两个注解:
1、cni.projectcalico.org/ipAddrs #单个pod ip固定
2、cni.projectcalico.org/ipv4pools #从指定ippool获取
一、检查Calico IPAM
如果 IPAM 设置为其他值,或者 10-calico.conflist 文件不存在,则无法在集群中使用这些功能
cat /etc/cni/net.d/10-calico.conflist
"ipam": { "type": "calico-ipam" },
二、设置pod单个固定ip
注解 cni.projectcalico.org/ipAddrs,注意双引号和转义 不要少
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx annotations: "cni.projectcalico.org/ipAddrs": "["10.244.126.10"]" #表示固定单个pod ip spec: containers: - name: nginx image: nginx
三、从ippool获取ip
calico官网ippoll详解
ippool1.yaml
apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: ippool-1 spec: blockSize: 20 cidr: 10.244.1.0/32 ipipMode: Always natOutgoing: true
ippool2.yaml
apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: ippool-2 spec: blockSize: 20 cidr: 10.244.2.0/32 ipipMode: Always natOutgoing: true
calicoctl get ippool -o wide #查看ippool
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: selector: matchLabels: app: nginx replicas: 3 template: metadata: labels: app: nginx annotations: "cni.projectcalico.org/ipv4pools": "["ippool-1","ippool-2"]" spec: containers: - name: nginx image: nginx
kubectl get pods -o wide #查看IP分配情况