在 Satellite 位置和集群中定制网络设置
Satellite Red Hat CoreOS
您可以使用若干功能来定制 Satellite 网络设置,以更好地隔离和分段在您所在位置运行的服务和工作负载。 查看以下章节了解更多信息。
这些自定义功能仅适用于 "Red Hat"CoreOS-enabled位置。
根据要应用的网络定制,在创建位置时,创建集群时或设置位置和集群后,可能需要在 CLI 中指定某些选项。 以下标记指示何时应用定制。
- 在创建位置期间: 必须在创建位置期间从 CLI 应用这些定制。
- 在集群创建期间: 可以在集群创建期间从 CLI 应用这些定制。
- 在创建位置和集群之后: 可以在创建位置和集群之后应用这些定制。
创建位置时定义定制子网
在创建位置期间
在 CLI 中创建位置时,可以定义以下参数以定制位置中的联网。 有关更多信息,请参阅 ibmcloud sat location create
命令参考。
您可以指定 --pod-subnet
选项以指定定制子网 CIDR 来为 pod 提供专用 IP 地址。 只有同时使用 "--coreos-enabled
标志启用Red Hat CoreOS时,才能使用该选项。 子网必须至少为 "/23
或更大。 默认值为 "172.16.0.0/16
。
您还可以指定 --service-subnet
选项,以指定用于为服务提供专用 IP 地址的定制子网 CIDR。 只有同时使用 "--coreos-enabled
标志启用Red Hat CoreOS时,才能使用该选项。 子网必须至少为 "/24
或更大。 默认值为 "172.20.0.0/16
。
创建位置时定义 pod 网络接口
在创建位置期间
在 CLI 中创建位置时,可以定义 --pod-network-interface
以设置 pod 网络接口。 可用的方法为 can-reach
和 interface
。
- 要提供直接 URL 或 IP 地址,请指定
can-reach=<url>
或can-reach=<ip_address>
。 如果网络接口可以访问提供的 URL 或 IP 地址,那么将使用此选项。 例如,使用can-reach=www.exampleurl.com
来指定 URL,使用can-reach=172.19.0.0
来指定 IP 地址。 - 要选择具有 Regex 字符串的接口,请指定
interface=<regex_string>
; 例如,interface=eth.*
。
有关更多信息,请参阅 ibmcloud sat location create
命令参考。
创建集群时定义 pod 网络接口
在集群创建期间
在 CLI 中创建集群时,可以定义 --pod-network-interface
以设置 pod 网络接口。 可用的方法为 can-reach
和 interface
。
- 要提供直接 URL 或 IP 地址,请指定
can-reach=<url>
或can-reach=<ip_address>
。 如果网络接口可以访问提供的 URL 或 IP 地址,那么将使用此选项。 例如,使用can-reach=www.exampleurl.com
来指定 URL,使用can-reach=172.19.0.0
来指定 IP 地址。 - 要选择具有 Regex 字符串的接口,请指定
interface=<regex_string>
; 例如,interface=eth.*
。
有关更多信息,请参阅 ibmcloud oc cluster create satellite
命令参考。
限制对 Satellite 集群的访问
在创建位置和集群之后
创建位置和集群后,可以使用 ibmcloud ks cluster master satellite-service-endpoint allowlist add
命令将子网添加到 Satellite 集群的服务端点允许列表。
允许通过Satellite服务端点向群集主控发送来自子网的授权请求。 必须 启用 允许列表才能应用限制。
使用 Calico 主机端点创建网络策略
在创建位置和集群之后
如果在 V 4.12 和更高版本上创建 Satellite 集群,那么会针对每个工作程序节点的网络接口将 Calico Hostendpoint
实例部署到该集群。
您可以使用这些 Hostendpoint
实例在添加到每个 Hostendpoint
实例的 “ibm-cloud.kubernetes.io/interface-name: <network_interface_name>”
标签的帮助下定义全局网络策略。
除此标签外,还会为其他定制选项添加所有工作程序节点的标签。
这些 Hostendpoints
具有 “projectcalico-default-allow"
概要文件,这意味着当您更新到 4.12时,这些 Hostendpoints
可能会更改先前期望的行为。
在更新到 4.12之前,请确保所有先前期望的网络规则,策略 Hostendpoints
在更新之后也同样工作。
有关更多信息,请参阅 Calico 文档。
限制 NodePort 服务访问权
在创建位置和集群之后
缺省情况下,可以在集群可用的所有网络接口上访问 NodePort 服务,例如 0.0.0.0
。
但是,在多个网络可供主机使用的 Satellite 位置中,您可以限制服务的可用网络接口。
要限制范围,请在集群级别限制 NodePort 服务的侦听地址。 此限制允许集群管理员通过使用 IP 子网作为允许的侦听地址范围来限制对特定网络接口的访问。 完成以下步骤以重新配置 kube-proxy
组件,从而限制 NodePort 服务的侦听地址范围。
错误配置 node-port-addresses
可能会使您的服务与有效源隔离。 确保规划服务所需的所有必需子网。IBM Cloud 不需要访问任何子网来管理集群。
-
准备要允许访问 NodePort 服务的计划源子网 CIDR 列表。
-
运行以下命令以获取
network.operator.openshift.io
配置并保存副本,以防需要还原更改。kubectl get network.operator.openshift.io cluster -o yaml
-
编辑
network.operator.openshift.io
配置并在spec
部分下设置子网列表,并包含 NodePort 服务所需的子网。spec: kubeProxyConfig: proxyArguments: node-port-addresses: - 192.0.2.0/24 - 198.51.100.0/24
-
保存更改并将其应用于集群。
oc apply -f updated-network-config.yaml
-
对于集群版本 4.10.x 和更低版本,请将集群网络操作员的管理状态设置为
Unmanaged
。oc patch network.operator.openshift.io cluster --type=merge --patch '{"spec": {"managementState": "Unmanaged"}}'
-
重新启动 "
kube-proxy
DaemonSet以应用更改。 该操作不会造成干扰。oc rollout restart ds -n openshift-kube-proxy openshift-kube-proxy
-
等待所有
kube-proxy
Pod 重新启动。 运行以下命令检查状态。oc get po -n openshift-kube-proxy --selector app=kube-proxy
-
对于 4.10.x 及更低版本的集群版本,将集群网络操作员的管理状态重置为
Managed
。 请注意,此操作可能会重新启动代理 pod。oc patch network.operator.openshift.io cluster --type=merge --patch '{"spec": {"managementState": "Managed"}}'
重新启动所有 pod 后,将使用受限子网配置集群。 您可以重复这些步骤以根据需要更新或除去子网列表。