3

在 Kubernetes 中有没有办法或者有一个网络插件可以限制 IP 分配的范围。例如,我正在尝试使用 weave 并使用子网192.168.16.0/24。我想将通过 Kubernetes 分配给 Pod 的 IP 限制在192.168.16.10-的范围内30

但是,我的应用程序可能会根据要求使用其余 IP,即我的应用程序可以从中启动一个虚拟 IP 192.168.16.31-50但我需要一些机制来确保我指定的 IP 范围不会由 K8s 分配,并且我的应用程序可以使用它.

我需要这样的东西:https ://www.weave.works/docs/net/latest/tasks/ipam/configuring-weave/ 。

4

2 回答 2

1

网络策略资源将有所帮助

查看文档

一个示例 NetworkPolicy 可能如下所示:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: db
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

该规则ipBlock描述了网络范围ingressegress规则。例如:

    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24

CIDR

CIDR 代表Classless Inter-Domain Routing,请参阅IPv4 CIDR 块示例

更多信息

于 2020-02-10T14:10:28.903 回答
0

这实际上是一个好问题。这取决于您的 CNI,在您使用 weavenet 的情况下。

我假设您正在daemonset为您的 Weavenet 使用 a 。如果是这样,请在您的daemonsetyaml 文件中添加类似的内容。

        spec:
          containers:
            - name: weave
              command:
                - /home/weave/launch.sh
              env:
                - name: IPALLOC_RANGE
                  value: 192.168.16.32/27

这为您的 pod 提供了 192.168.16.32-63 的 IP 范围。

您也可以使用 Wea​​ve CLI 进行设置,如果需要,请告诉我。

希望这会有所帮助。

于 2020-02-10T18:05:39.560 回答