注册 NLB 的 DNS 子域

经典基础设施

此内容仅适用于经典集群中的 NLB。 对于 VPC 集群,请参阅向 DNS 子域注册 VPC 负载均衡器主机名

设置网络负载均衡器 (NLB) 后,可以通过创建子域来为 NLB IP 创建 DNS 条目。 您还可以设置 TCP/HTTP(S) 监视器,以对每个子域后面的 NLB IP 地址执行运行状况检查。

子域
在单专区或多专区集群中创建公共 NLB 时,可以通过为 NLB IP 地址创建子域,向因特网公开应用程序。 此外,IBM Cloud 还负责为子域生成和维护通配符 SSL 证书。 在多专区集群中,可以创建子域,并将每个专区中的 NLB IP 地址添加到该子域 DNS 条目。 例如,如果为美国南部 3 个专区中的应用程序部署了 NLB,那么可为这 3 个 NLB IP 地址创建子域 mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud。 用户访问应用程序子域时,客户机会随机访问其中一个 IP,并且会向相应的 NLB 发送请求。

目前无法为私有 NLB 创建子域名。

使用 HTTP 监控时,监控任务的默认用户代理是 NS1 HTTP Monitoring Job

运行状况检查监视器
对单个子域后面的 NLB IP 地址启用运行状况检查,以确定这些地址是否可用。 对子域启用监视器后,监视器会对每个 NLB IP 执行运行状况检查,并根据这些运行状况检查使 DNS 查找结果保持更新。 例如,如果 NLB 具有 IP 地址 1.1.1.12.2.2.23.3.3.3,那么子域的正常操作 DNS 查找将返回所有 3 个 IP,客户机会随机访问其中 1 个 IP 地址。 如果 IP 地址为 3.3.3.3 的 NLB 由于任何原因(例如,由于专区故障)变为不可用,那么该 IP 的运行状况检查将失败,监视器会从子域中除去发生故障的 IP,并且 DNS 查找仅返回正常运行的 1.1.1.12.2.2.2 IP。

可以通过运行以下命令来查看为集群中的 NLB IP 注册的所有子域。

ibmcloud oc nlb-dns ls --cluster CLUSTER_NAME_OR_ID

DNS 微服务更新是异步的,可能需要几分钟才能应用。 请注意,如果运行 ibmcloud oc nlb-dns 命令并接收到 200 确认消息,那么可能仍需要等待实现更改。 要检查子域的状态,请运行 ibmcloud oc nlb-dns ls 并在输出中找到 Status 列。

向 DNS 子域注册 NLB IP

通过为网络负载均衡器 (NLB) IP 地址创建子域,向公用因特网公开应用程序。

开始之前:

要为一个或多个 NLB IP 地址创建一个子域,请执行以下操作:

  1. 获取 NLB 的 EXTERNAL-IP 地址。 如果在多专区集群的每个专区中都有公开一个应用程序的 NLB,请获取每个 NLB 的 IP。

    oc get svc
    

    在以下输出示例中,NLB EXTERNAL-IP168.2.4.588.2.4.5

    NAME             TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                AGE
    lb-myapp-dal10   LoadBalancer   172.21.xxx.xxx   168.2.4.5         1883:30303/TCP         6d
    lb-myapp-dal12   LoadBalancer   172.21.xxx.xxx   88.2.4.5          1883:31303/TCP         6d
    
  2. 通过创建 DNS 子域来注册 IP。 要指定多个 IP 地址,请使用多个 --ip 选项。

    ibmcloud oc nlb-dns create classic --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP>
    
  3. 验证子域是否已创建。

    ibmcloud oc nlb-dns ls --cluster <cluster_name_or_id>
    

    示例输出

    Hostname                                                                                IP(s)              Health Monitor   SSL Cert Status           SSL Cert Secret Name
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud     ["168.2.4.5"]      None             created                   <certificate>
    
  4. 可选: 设置定制域以指向您在上一步中创建的 IBM提供的子域。

    • 与域名服务 (DNS) 提供商合作,注册自定义域名。
    • 使用 IBM Cloud DNS 注册自定义域名。

    您也可以在负载平衡器配置中使用 service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name 注释注册自定义域。

  5. 通过将 IBM 提供的子域名设置为规范名称记录(CNAME),为您的自定义域名定义一个别名。

  6. 在 Web 浏览器中,输入要用于通过创建的子域来访问应用程序的 URL。

接下来,可以通过创建运行状况监视器,启用对子域的运行状况检查

了解子域格式

NLB 的子域名采用 <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud 这种格式。

例如,为 NLB 创建的子域可能类似于 mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud。 下表描述了子域的每个组成部分。

了解 NLB 子域格式
NLB 子域组件 描述
* 缺省情况下,将为集群注册子域的通配符。
<cluster_name> 集群的名称。 -如果集群名称不超过 26 个字符,并且集群名称在此区域中是唯一的,那么将包括整个集群名称,并且不会修改: myclustername
-如果集群名称不超过 26 个字符,并且此区域中存在同名的现有集群,那么将包括整个集群名称,并添加包含 6 个随机字符的短划线: myclustername-ABC123
-如果集群名称不超过 26 个字符,并且集群名称在此区域中是唯一的, 仅使用集群名称的前 24 个字符: myveryverylongclusternam
-如果集群名称为 26 个或更多字符,并且此区域中存在同名的现有集群,那么将仅使用集群名称的前 17 个字符,并添加包含 6 个随机字符的短划线: myveryverylongclu-ABC123
<globally_unique_account_HASH> 为 IBM Cloud 帐户创建全局唯一的 HASH。 为帐户的集群中 NLB 创建的所有子域都会使用此全局唯一的 HASH。
0001 充当您创建的每个子域的计数器。
<region> 在其中创建集群的区域。
containers.appdomain.cloud Red Hat OpenShift on IBM Cloud 子域的子域。

通过创建运行状况监视器,启用对子域的运行状况检查

对单个子域后面的 NLB IP 地址启用运行状况检查,以确定这些地址是否可用。

如果使用 Calico pre-DNAT 网络策略VPC 安全组VPC 访问控制列表(ACL) 或其他自定义防火墙解决方案来阻止输入端或路由器服务的传入流量,则必须允许来自健康监控端点的传入流量。 如需了解更多信息,请参阅 有关允许输入网络流量用于输入子域监控的文档

开始之前,请向 DNS 子域注册 NLB IP

  1. 获取子域的名称。 在输出中,请注意,主机的监视 StatusUnconfigured

    ibmcloud oc nlb-dns monitor ls --cluster <cluster_name_or_id>
    

    示例输出

    Hostname                                                                                   Status         Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud        Unconfigured   N/A     0      N/A
    
  2. 为子域创建运行状况检查监视器。 如果未指定配置参数,则使用默认值。

    ibmcloud oc nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --enable --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>
    
    -c, --cluster <cluster_name_or_ID>
    必需:向其注册子域的集群的名称或标识。
    --nlb-host <host_name>
    必需:要对其启用运行状况检查监视器的子域。
    --enable
    包含此选项可为子域名启用一个新的健康检查监视器。
    --type <type>
    健康检查应使用的协议:HTTPHTTPSTCP。 默认值:HTTP
    --path <path>
    typeHTTPS 时:用于健康检查的目标端点路径。 缺省值: /
    --timeout <timeout>
    超时(以秒为单位),在此时间后 IP 会被视为不可访问。 运行状况检查会等待 interval 参数中指定的秒数,然后重试访问该 IP。 该值必须是1到60之间的整数。 缺省值: 5
    --interval <interval>
    各个运行状况检查之间的时间间隔(以秒为单位)。 较短的时间间隔可能会缩短故障转移时间,但会增加 IP 上的负载。 该值必须是60至300之间的整数。 默认值:60
    --port <port>
    进行运行状况检查时要连接到的端口号。 当 type 的值为 TCP 时,此参数为必填项。 当 typeHTTPHTTPS 时,仅当您为 HTTP 使用 80 以外的端口,或为 HTTPS 使用 443 以外的端口时,才需定义该端口。 TCP 的默认值:0。 HTTP 的默认值:80。 HTTPS 的默认值:443
    --header <header>
    type HTTP HTTPS`` 时,此项为必填: HTTP 健康检查的请求头仅限于 Host 头。 此标志仅适用于类型为 HTTPHTTPS 的情况。 该标志支持以下格式的值:--header Header-Name=value。 更新监视器时,指定的头将替换现有头。 若要删除所有现有标题,请将标志设置为空值:--header ""

    示例命令

    ibmcloud oc nlb-dns monitor configure --cluster mycluster --nlb-host mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud --enable --type HTTPS --path /alive --timeout 5 --interval 60 --header Host=example.com
    
  3. 验证是否使用正确的设置配置了运行状况检查监视器。

    ibmcloud oc nlb-dns monitor get --cluster <cluster_name_or_id> --nlb-host <host_name>
    

    示例输出

    Status:           enabled
    Type:             https
    Method:           GET
    Path:             /alive
    Expected Codes:   2xx
    Port:             443
    Timeout:          5
    Interval:         60
    Headers:
    Host:      example.com
    
  4. 查看子域的运行状况检查状态。

    ibmcloud oc nlb-dns monitor ls --cluster <cluster_name_or_id>
    

    示例输出

    Hostname                                                                                Status      Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud     enabled     https   443    /alive
    

更新和除去子域中的 IP 以及用于子域的监视器

可以在已生成的子域中添加和除去 NLB IP 地址。 您还可以根据需要对子域禁用和启用运行状况检查监视器。

NLB IP

如果日后在集群的其他专区中添加了更多 NLB 来公开同一应用程序,那么可以将这些 NLB IP 添加到现有子域。

ibmcloud oc nlb-dns add --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP> ... --nlb-host <host_name>

还可以除去不再希望向子域注册的 NLB 的 IP 地址。 请注意,必须对要除去的每个 IP 地址运行以下命令。 如果从子域中除去所有 IP,该子域仍然会存在,但没有与之关联的 IP。

ibmcloud oc nlb-dns rm classic --cluster <cluster_name_or_id> --ip <ip> --nlb-host <host_name>

运行状况检查监视器

如果需要更改运行状况监视器配置,那么可以更改特定设置。 请仅包含您想要更改的设置选项。

ibmcloud oc nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>

可以随时通过运行以下命令,对子域禁用运行状况检查监视器:

ibmcloud oc nlb-dns monitor disable --cluster <cluster_name_or_id> --nlb-host <host_name>

要对子域重新启用监视器,请运行以下命令:

ibmcloud oc nlb-dns monitor enable --cluster <cluster_name_or_id> --nlb-host <host_name>