productnews

DigitalOcean Kubernetes路由代理:Kubernetes 静态路由管理的高效解决方案

DigitalOcean的新型 DOKS(DigitalOcean Kubernetes)路由代理是一个用于在 […]

DigitalOcean Kubernetes路由代理:Kubernetes 静态路由管理的高效解决方案

DigitalOcean的新型 DOKS(DigitalOcean Kubernetes)路由代理是一个用于在 Kubernetes 工作节点上配置静态路由的托管组件。它直接响应了用户对其前身——静态路由操作员的反馈,并引入了新功能以增强路由的灵活性。尽管 DOKS 路由代理是一个托管组件,但对用户而言,它并不会产生任何额外费用。

DOKS 路由代理的关键特性

1、通过自定义资源管理静态路由

DOKS 路由代理使用户能够使用专门的 Kubernetes 自定义资源在其 Kubernetes 工作节点上配置 IP 路由。这对于 VPN 设置或通过特定网关节点传输出口流量尤其有用。

    示例配置:

    apiVersion: networking.doks.digitalocean.com/v1alpha1
    kind: Route
    metadata:
      name: basic
    spec:
      destinations:
        - "1.2.3.4/5"  # 要通过指定网关路由的网络
      gateways:
        - "10.114.0.3"  # 网关 IP

    2、支持多个网关ECMP

    路由代理支持多个网关,并自动配置 ECMP(等价多路径)路由以在它们之间分配流量。

      示例配置:

      apiVersion: networking.doks.digitalocean.com/v1alpha1
      kind: Route
      metadata:
        name: basic
      spec:
        destinations:
          - "1.2.3.4/5"
        gateways:
          - "10.114.0.3"
          - "10.114.0.4"

      ECMP 的工作原理:

      ECMP 根据源/目的 IP 和端口的哈希值,将流量分布在多个网关上。如果某个网关出现故障,Linux 内核将停止向其发送流量。路由代理每 30 秒对网关进行一次 ping 操作,以检测故障并在网关恢复时重新建立流量传输。注意:确保在网关上允许 ICMP 流量,以便健康检查能够正常进行。

      3、覆盖默认路由

      路由代理允许用户覆盖默认路由,而不会中断集群连接——这是最受请求的功能之一。

        示例配置:

        apiVersion: networking.doks.digitalocean.com/v1alpha1
        kind: Route
        metadata:
          name: basic
        spec:
          destinations:
            - "0.0.0.0/0"  # 默认路由
          gateways:
            - "10.114.0.3"
            - "10.114.0.4"

        为了防止对 Kubernetes 组件造成影响,路由代理确保关键控制平面端点、元数据服务和 DNS 服务器通过工作节点 Droplet 的默认网关保持直接连接。

        4、节点选择用于路由

        路由可以使用 Kubernetes 标签选择器应用于特定节点,从而允许对网络配置进行细粒度的控制。

          示例配置:

          apiVersion: networking.doks.digitalocean.com/v1alpha1
          kind: Route
          metadata:
            name: basic
          spec:
            destinations:
              - "1.2.3.4/5"
            gateways:
              - "10.114.0.3"
            nodeSelector:
              nodeSelectorTerms:
                - matchExpressions:
                    - key: doks.digitalocean.com/node-pool
                      operator: In
                      values:
                        - "worker-pool"

          启用 DOKS 路由代理

          路由代理可以通过 doctl 或 DigitalOcean API 启用或禁用。

          示例命令:

          doctl kubernetes cluster create --enable-routing-agent ...
          doctl kubernetes cluster update --enable-routing-agent ...

          对于 API 用户,字段结构如下:

          {
            "name": "prod-cluster-01",
            "region": "nyc3",
            "routing_agent": {
              "enabled": true
            }
          }

          静态出口 IP 的使用

          借助 DOKS 路由代理和自行管理的 VPC 网关 Droplet,用户可以配置静态出口 IP,确保来自 Kubernetes 工作负载的出站流量源自可预测的 IP 地址。

          为何这很重要:

          • 允许列表: 通过允许列表已知 IP 来保护外部服务。
          • 合规性: 为满足监管要求,保持一致的出口 IP。

          即将推出:完全托管的 NAT网关

          我们还在开发一个完全托管的 NAT 网关,它将提供一个更简单的解决方案,用于实现静态出口 IP。此功能在我们的路线图上,将于今年晚些时候推出。

          简化静态路由管理

          DOKS 路由代理简化了 Kubernetes 中的静态路由管理,提供了以下功能:

          • 使用 Kubernetes 自定义资源创建自定义路由
          • 使用 ECMP 在多个网关之间分配负载
          • 覆盖默认路由而不中断集群连接
          • 使用标签选择器进行节点特定路由

          这些功能对于 VPN 设置、自定义出口路由和自行管理的 VPC 网关尤其有用。 如果需要了解 DigitalOcean Kubernetes 托管服务的更多产品细节,可访问或咨询 DigitalOcean 中国区独家战略合作伙伴卓普云