docker 使用calico网络,容器之间跨主机均已连通,请问要怎么实现宿主机网段与calico定义的网段互通?

已邀请:

styshoo

赞同来自: 来自火星


最近刚做了这个,我来说下吧。

calicoctl get profile -o json > profile.json

导出calico网络的配置,找到你使用的calico网络部分。如:
{
"kind": "profile",
"apiVersion": "v1",
"metadata": {
  "name": "calico-abc-2c9180836079ce88016079e522010014",
  "tags": [
    "calico-abc-2c9180836079ce88016079e522010014"
  ]
},
"spec": {
  "ingress": [
    {
      "action": "allow",
      "source": {
        "tag": "calico-abc-2c9180836079ce88016079e522010014"
      },
      "destination": {}
    }
  ],
  "egress": [
    {
      "action": "allow",
      "source": {},
      "destination": {}
    }
  ]
}
}

这里,只需要在ingress部分,增加ingress->source->nets,内容大致如下:

"ingress": [
    {
      "action": "allow",
      "source": {
        "tag": "calico-network"
      },
      "destination": {}
    },
    {
      "action": "allow",
      "source": {
        "nets": [
                  "192.168.1.61/32",
                  "192.168.1.75/32"
        ]
      },
      "destination": {}
    }
  ],

其中,192.168.1.61和75就是你要加入的docker host的ip,当然,你也可以直接配置网段192.168.1.0/24,类似的。
修改完json文件后,再执行calicoctl replace -f profile.json就可以了。

要回复问题请先登录注册