|Index|SUSE Telco Cloud 文档|设置管理集群|双栈注意事项和配置
适用范围 SUSE Telco Cloud 3.6

33 双栈注意事项和配置

前几节中显示的示例提供了关于如何设置单栈 IPv4 管理集群的指导和示例。此类管理集群独立于下游集群的运行状态,下游集群在部署后可单独配置为以 IPv4/IPv6 单栈或双栈配置运行。然而,管理集群的配置方式对配置阶段可以使用的通信协议有直接影响,其中带内和带外通信都必须根据管理集群和下游主机支持的协议进行。如果预期部分或全部 BMC 和/或下游集群节点使用 IPv6,则需要为管理集群设置双栈。

注意
注意

尚不支持单栈 IPv6 管理集群。

为了实现双栈功能,必须为 Kubernetes 提供用于 POD 和服务的 IPv4 和 IPv6 CIDR。然而,在构建带有 EIB 的管理集群映像之前,其他组件也需要进行特定的调整。Metal3 配置服务 (Ironic) 可以根据您的基础设施或需求以不同方式进行配置:

  • Ironic 服务可以配置为侦听系统上的所有接口,而不是单个 IP 地址,因此,只要管理集群主机具有分配给相关接口的 IPv4 和 IPv6 地址,它们中的任何一个都可能在配置期间被使用。请注意,目前只能选择其中一个地址用于 URL 生成(供其他服务使用,例如 Baremetal Operator、BMC 等);因此,为了启用与 BMC 的 IPv6 通信,可以在处理包含 IPv6 地址的 BMH 定义时,指示 Baremetal Operator 公开并传递 IPv6 URL。换句话说,当 BMC 被识别为支持 IPv6 时,配置将仅通过 IPv6 执行,而在所有其他情况下则通过 IPv4 执行。

  • 单个主机名(解析为 IPv4 和 IPv6)可供 Metal3 使用,以让 Ironic 使用这些地址进行绑定和 URL 创建。这种方法允许简单的配置和灵活的行为(IPv4 和 IPv6 在每个配置步骤中均保持可用),但需要具备预先存在的 DNS 服务器、IP 分配和记录的基础设施。

在这两种情况下,Kubernetes 都需要知道要为 IPv4 和 IPv6 使用哪些 CIDR,因此您可以将以下行添加到 EIB 目录中的 kubernetes/config/server.yaml,并确保先列出 IPv4:

service-cidr: 10.96.0.0/12,fd12:4567:789c::/112
cluster-cidr: 193.168.0.0/18,fd12:4567:789b::/48

部分容器利用主机网络,因此请修改 network 目录下主机(或多个主机)的网络配置,以启用 IPv6 连接:

routes:
  config:
  - destination: 0.0.0.0/0
    next-hop-address: ${MGMT_GATEWAY_V4}
    next-hop-interface: eth0
  - destination: ::/0
    next-hop-address: ${MGMT_GATEWAY_V6}
    next-hop-interface: eth0
dns-resolver:
  config:
    server:
    - ${MGMT_DNS}
    - 8.8.8.8
    - 2001:4860:4860::8888
interfaces:
- name: eth0
  type: ethernet
  state: up
  mac-address: ${MGMT_MAC}
  ipv4:
    address:
    - ip: ${MGMT_CLUSTER_IP_V4}
      prefix-length: 24
    dhcp: false
    enabled: true
  ipv6:
    address:
    - ip: ${MGMT_CLUSTER_IP_V6}
      prefix-length: 128
    dhcp: false
    autoconf: false
    enabled: true

将占位符替换为网关 IP 地址、额外的 DNS 服务器(如果需要)、网络接口的 MAC 地址以及管理集群的 IP 地址。如果首选地址自动配置,请参考以下摘录并仅设置 ${MGMT_MAC} 变量:

interfaces:
- name: eth0
  type: ethernet
  state: up
  mac-address: ${MGMT_MAC}
  ipv4:
    enabled: true
    dhcp: true
  ipv6:
    enabled: false
    dhcp: true
    autoconf: true

现在,我们可以从第一个选项开始,通过创建 kubernetes/helm/values/metal3.yaml 来定义单节点配置的其余文件,如下所示:

global:
  ironicIP: ${MGMT_CLUSTER_IP_V4}
  enable_vmedia_tls: false
  # trustedCAs: tls-ca-bundle  # Optional: Uncomment and set to ConfigMap name for trusted CA bundle
metal3-ironic:
  global:
    predictableNicNames: true
  listenOnAll: true
  persistence:
    ironic:
      size: "5Gi"
  service:
    type: NodePort
metal3-baremetal-operator:
  baremetaloperator:
    externalHttpIPv6: ${MGMT_CLUSTER_IP_V6}

和 kubernetes/helm/values/rancher.yaml,如下所示:

hostname: rancher-${MGMT_CLUSTER_IP_V4}.sslip.io
bootstrapPassword: "foobar"
replicas: 1
global:
  cattle:
    systemDefaultRegistry: "registry.rancher.com"

其中 ${MGMT_CLUSTER_IP_V4} 和 ${MGMT_CLUSTER_IP_V6} 是之前分配给主机的 IP 地址。

或者,若要使用主机名代替 IP 地址,请将 kubernetes/helm/values/metal3.yaml 修改为:

global:
  provisioningHostname: `${MGMT_CLUSTER_HOSTNAME}`
  enable_vmedia_tls: false
  # trustedCAs: tls-ca-bundle  # Optional: Uncomment and set to ConfigMap name for trusted CA bundle
metal3-ironic:
  global:
    predictableNicNames: true
  persistence:
    ironic:
      size: "5Gi"
  service:
    type: NodePort

并将 kubernetes/helm/values/rancher.yaml 修改为:

hostname: rancher-${MGMT_CLUSTER_HOSTNAME}.sslip.io
bootstrapPassword: "foobar"
replicas: 1
global:
  cattle:
    systemDefaultRegistry: "registry.rancher.com"

其中 ${MGMT_CLUSTER_HOSTNAME} 应为解析为您主机 IP 地址的完全限定域名。

如需更多信息,请访问 SUSE Telco Cloud GitHub 储存库下的“dual-stack”文件夹,其中可以找到示例目录结构。