IBM Cloud Docs
注册 NLB 的 DNS 子域

注册 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 创建子域。

运行状况检查监视器
对单个子域后面的 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 地址启用运行状况检查,以确定这些地址是否可用。

开始之前,请向 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 --description <description> --type <type> --method <method> --path <path> --timeout <timeout> --retries <retries> --interval <interval> --port <port> --header <header> --expected-body <expected-body> --expected-codes <expected-codes> --follows-redirects <true> --allows-insecure <true>
    
    -c, --cluster <cluster_name_or_ID>
    必需:向其注册子域的集群的名称或标识。
    --nlb-host <host_name>
    必需:要对其启用运行状况检查监视器的子域。
    --enable
    包含此选项可为子域启用新的健康检查监控器。
    --description <description>
    [已弃用]健康监控器的描述。
    --type <type>
    用于健康检查的协议:HTTP, HTTPS,或 TCP。 默认值:HTTP
    --method <method>
    [已废弃]用于健康检查的方法。 type HTTPHTTPS 的默认值:GETtype TCP 的默认值:connection_established。 此标记已废弃,2025 年 7 月 18 日后将不起作用:所有健康监测仪都将使用 GET!
    --path <path>
    typeHTTPS 时:要进行健康检查的端点路径。 缺省值: /
    --timeout <timeout>
    超时(以秒为单位),在此时间后 IP 会被视为不可访问。 运行状况检查会等待 interval 参数中指定的秒数,然后重试访问该 IP。 数值必须是 1 - 60 范围内的整数。 缺省值: 5
    --retries <retries>
    [已弃用]当超时发生时,在无法连接的 IP 被视为不健康之前尝试重试的次数。 重试会立即尝试执行。 此值必须是 1-5 范围内的整数。 默认值:2
    --interval <interval>
    各个运行状况检查之间的时间间隔(以秒为单位)。 较短的时间间隔可能会缩短故障转移时间,但会增加 IP 上的负载。 数值必须是 60 - 300 范围内的整数。 默认值:60
    --port <port>
    进行运行状况检查时要连接到的端口号。 当 typeTCP 时,需要使用该参数。 当 typeHTTPHTTPS 时,只有在 HTTP 使用 80 以外的端口或 HTTPS 使用 443 以外的端口时,才定义端口。 TCP 的默认值:0。 HTTP 的默认值:80。 HTTPS 的默认值:443
    --header <header>
    [已弃用] typeHTTPHTTPS 时需要:HTTP 在健康检查中发送的请求标头,如 Host 标头。 User-Agent 头信息无法覆盖。 该选项仅对类型 " HTTP "或 " HTTPS "有效。 要在请求中添加多个标头,请多次指定该选项。 该选项接受以下格式的数值:--header Header-Name=value。 更新监视器时,指定的头将替换现有头。 要删除所有现有标题,请在该选项中指定一个空值 --header ""。 此标记已过时,2025 年 7 月 18 日之后,只有 "Host "标头可以配置!
    --expected-body <expected-body>
    [已弃用] typeHTTPHTTPS 时:健康检查在响应正文中查找的不区分大小写的子字符串。 如果找不到此字符串,那么会认为该 IP 运行状况不佳。
    --expected-codes <expected-codes>
    [已弃用] typeHTTPHTTPS 时:HTTP 健康检查在响应中查找的代码。 如果找不到 HTTP 代码,那么 IP 会被视为运行状况欠佳。 默认值:2xx。 该标记已被弃用,2025 年 7 月 18 日后将不起作用:HTTP / HTTPS 类型监控器只有在端点响应 2xx 状态代码时,才会认为端点是健康的。
    --allows-insecure <true>
    [已弃用] typeHTTPHTTPS 时:设为 true 则不验证证书。 此标记已废弃,2025 年 7 月 18 日后将不起作用:健康监测器将不会验证证书!
    --follows-redirects <true>
    [已弃用] typeHTTPHTTPS 时:设置为 true,以跟踪 IP 返回的任何重定向。

    示例命令

    ibmcloud oc nlb-dns monitor configure --cluster mycluster --nlb-host mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud --enable --description "Login page monitor" --type HTTPS --method GET --path / --timeout 5 --retries 2 --interval 60 --header Host=example.com --header Origin=https://akamai.com --expected-body "healthy" --expected-codes 2xx --follows-redirects true
    
  3. 验证是否使用正确的设置配置了运行状况检查监视器。

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

    示例输出

    Created On:         2019-04-24 09:01:59.781392 +0000 UTC
    Modified On:        2020-02-26 15:39:05.273217 +0000 UTC
    Type:               https
    Description:        Health check monitor for ingress public hostname
    Method:             GET
    Path:               /alive
    Expected Body:      -
    Expected Codes:     2xx
    Follow Redirects:   false
    Allow Insecure:     true
    Port:               443
    Timeout:            5
    Retries:            2
    Interval:           15
    
    Headers:
    Origin:    https://akamai.com
    Host:      example.com
    
    Health Monitor Apply Properties Status:   success
    
  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     Healthy     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> --description <description> --type <type> --method <method> --path <path> --timeout <timeout> --retries <retries> --interval <interval> --port <port> --header <header> --expected-body <expected-body> --expected-codes <expected-codes> --follows-redirects <true> --allows-insecure <true>

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

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>