Calico 3.5:根据节点标签分配 IP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Calico 3.5:根据节点标签分配 IP相关的知识,希望对你有一定的参考价值。

需求: node1 node2 的 pod 都分配一个网段,  node3 node4 的 pod 都分配一个网段

复制代码
      -------------------
       |    router       |
       -------------------
       |                 |
---------------   ---------------
| rack-0      |   | rack-1      |
---------------   ---------------
| kube-node-1 |   | kube-node-3 |
- - - - - - - -   - - - - - - - -
| kube-node-2 |   | kube-node-4 |
- - - - - - - -   - - - - - - - -
复制代码

 

使用pod 10.20.0.0/16,我们的目标以下设置:保留10.20.1.0/2410.20.2.0/24池的rack-0rack-1

 

通过calicoctl 命令 查看默认CIDR池, 并且删除

 

 

 1. 删除默认IP池

calicoctl delete ippools default-ipv4-ippool

 

2. 对node节点打标记

复制代码
设置label

kubectl label node node1  rack=0
kubectl label node node2  rack=0
kubectl label node node3  rack=1
kubectl label node node3  rack=1
复制代码

 

3. 为每个机架设置IP池

复制代码
calicoctl create -f -<<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: rack-0-ippool
spec:
  cidr: 10.20.1.0/24
  ipipMode: Always
  natOutgoing: true
  nodeSelector: rack == "0"
EOF
复制代码

 

复制代码
calicoctl create -f -<<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: rack-1-ippool
spec:
  cidr: 10.20.2.0/24
  ipipMode: Always
  natOutgoing: true
  nodeSelector: rack == "1"
EOF
复制代码

 

应该有两个启用的IP池,运行时可以看到它们

calicoctl get ippool -o wide
NAME                  CIDR             NAT    IPIPMODE   DISABLED   SELECTOR
rack-0-ippool         10.20.1.0/24   true   Always     false      rack == "0"
rack-1-ippool         10.20.2.0/24   true   Always     false      rack == "1"

 

4. 验证

复制代码
kubect get pod

NAME                   READY   STATUS    RESTARTS   AGE    IP             NODE          NOMINATED NODE   READINESS GATES
nginx-5c7588df-prx4z   1/1     Running   0          6m3s   10.20.1.64     node1   <none>           <none>
nginx-5c7588df-s7qw6   1/1     Running   0          6m7s   10.20.1.129    node2   <none>           <none>
nginx-5c7588df-w7r7g   1/1     Running   0          6m3s   10.20.2.55     node3   <none>           <none>
nginx-5c7588df-62lnf   1/1     Running   0          6m3s   10.20.2.56     node4   <none>           <none>
复制代码

 

 

https://docs.projectcalico.org/networking/assign-ip-addresses-topology

以上是关于Calico 3.5:根据节点标签分配 IP的主要内容,如果未能解决你的问题,请参考以下文章

calico源码分析-ipam

Calico的入门和网络优化

Calico的入门和网络优化

114.kubernetes之calico

Kubernetes网络模型 -flannel +Calico

如何定制 Calico 的 IP 池?- 每天5分钟玩转 Docker 容器技术(71)