在代理后安装

本页面介绍如何为 GKE on Bare Metal 设置代理和防火墙规则。

配置代理服务器

如果用于引导节点和集群节点的机器使用代理服务器访问互联网,您必须:

  • 在集群节点上为软件包管理器配置代理
  • 在集群配置文件中配置代理详细信息。

前提条件

您的代理服务器必须允许连接到以下地址:

地址 用途
*.gcr.io 从 Container Registry 中拉取映像。
accounts.google.com 处理 OpenID 的授权请求,并发现用于验证令牌的公钥。
cloudresourcemanager.googleapis.com 解析与集群所连接的 Google Cloud 项目有关的元数据。
compute.googleapis.com 验证 Cloud Logging 和 Cloud Monitoring 资源区域。
connectgateway.googleapis.com 为 Cloud Customer Care 提供对集群的只读权限以诊断问题。
gkeconnect.googleapis.com 建立用于接收 Google Cloud 请求的渠道并发出响应。
gkehub.googleapis.com 创建与要连接到 Google Cloud 的集群对应的 Google Cloud 端舰队成员资源。
gkeonprem.googleapis.com 在裸机和 VMware 基础架构上创建和管理集群生命周期。
gkeonprem.mtls.googleapis.com 在裸机和 VMware 基础架构上创建和管理集群生命周期。此版本的 API 会自动与 mTLS 搭配使用。
iam.googleapis.com 创建服务账号,可用于向 Google Cloud 进行身份验证和执行 API 调用。
iamcredentials.googleapis.com 提供审核日志记录准入控制和遥测报告。
logging.googleapis.com 写入日志条目并管理您的 Cloud Logging 配置。
monitoring.googleapis.com 管理您的 Cloud Monitoring 数据和配置。
oauth2.googleapis.com 通过 OAuth 令牌交换进行身份验证以进行账号访问。
opsconfigmonitoring.googleapis.com 收集 pod、部署或节点等 Kubernetes 资源的元数据以丰富指标查询。
securetoken.googleapis.com 检索工作负载身份授权的刷新令牌。
servicecontrol.googleapis.com 将审核日志条目写入 Cloud Audit Logs。
serviceusage.googleapis.com 启用并验证服务和 API。
stackdriver.googleapis.com 管理 Google Cloud 的运维套件元数据,例如 Stackdriver 账号。
storage.googleapis.com 管理对象存储和存储桶,例如 Container Registry 对象。
sts.googleapis.com 将 Google 或第三方凭据换成 Google Cloud 资源的短期访问令牌。
www.googleapis.com 对来自传入的 Google Cloud 服务请求的服务令牌进行身份验证。

除了这些网址之外,代理服务器还必须允许操作系统软件包管理器需要的所有软件包镜像。您可以更新软件包管理器配置,以使用更具确定性的列表以方便管理。

在集群节点上为软件包管理器配置代理

GKE on Bare Metal 在 Ubuntu 上使用 APT 软件包管理器,在 CentOS 和 Red Hat Linux 上使用 DNF 软件包管理器。确保操作系统软件包管理器具有正确的代理配置。

如需详细了解如何配置代理,请参阅您的操作系统发行版的文档。以下示例展示了配置代理设置的一种方法:

APT

以下命令演示了如何为 APT 配置代理:

sudo touch /etc/apt/apt.conf.d/proxy.conf
echo 'Acquire::http::Proxy "http://[username:password@]domain";' \
    >> /etc/apt/apt.conf.d/proxy.conf
echo 'Acquire::https::Proxy "http://[username:password@]domain";' \
    >> /etc/apt/apt.conf.d/proxy.conf

[username:password@]domain 替换为特定于您的配置的详细信息。

DNF

以下命令演示了如何为 DNF 配置代理:

echo "proxy=http://[username:password@]domain" >> /etc/dnf/dnf.conf

[username:password@]domain 替换为特定于您的配置的详细信息。

在集群配置文件中配置代理详细信息

在集群配置文件中,设置以下值以将集群配置为使用代理:

proxy.url

指定代理网址的字符串。引导和节点机器使用此代理访问互联网。 代理网址字符串必须以其架构开头,例如“http://”或“https://”。

proxy.noProxy

不应通过代理服务器的 IP 地址、主机名和域名的列表。

大多数情况下,您不需要向此列表中添加任何项。

noProxy 使用场景:

  • 使用位于同一专用网络中的私有软件包镜像(不需要代理即可访问)

  • 使用位于同一专用网络中的私有注册表镜像(不需要代理即可访问)

示例

以下是集群配置文件中代理设置的示例:

  proxy:
     url: http://[username:password@]domain
     noProxy:
     - example1.com
     - example2.com

如何在集群内使用代理

根据经验,bmctl 命令及其生成的进程使用环境变量 HTTPS_PROXYNO_PROXY 定义的代理配置(if如果已定义的话)。否则,bmctl 会使用集群配置文件中的代理配置。在管理员工作站、集群节点机器或引导集群上运行的其他命令会使用集群配置文件中的代理配置。

每个节点上的 OS Package Manager 都使用自己的配置文件进行代理设置。

替换引导机器中的代理配置

通过替换集群配置文件中的代理设置,您可以在与节点机器使用的代理不同的代理上运行管理员工作站。如需替换代理设置,请在引导机器上设置以下环境变量:

export HTTPS_PROXY=http://[username:password@]domain

[username:password@]domain 替换为特定于您的配置的详细信息。

export NO_PROXY=example1.com,example2.com

example1.com,example2.com 替换为不应通过代理服务器的 IP 地址、主机名和域名。

副作用

以 root 身份运行时,bmctl 会更新引导机器中的 Docker 代理配置。如果您不以 root 身份运行 bmctl,请手动配置 Docker 代理

防火墙规则

按照以下部分所述设置防火墙规则,以允许 GKE on Bare Metal 所需的所述流量。

如需了解 GKE on Bare Metal 的必备端口要求,请参阅端口用量

集群节点 IP 地址的防火墙规则

下表介绍了集群中可用 IP 地址的防火墙规则。

来源端口

端口

协议

说明

集群节点 1024 - 65535 cloudresourcemanager.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
443 TCP/HTTPS 必须具有相应的访问权限才能进行舰队注册
Cloud Logging Collector,在集群节点上运行 1024 - 65535 oauth2.googleapis.com
logging.googleapis.com
stackdriver.googleapis.com
servicecontrol.googleapis.com
storage.googleapis.com
www.googleapis.com
443 TCP/HTTPS
Cloud Metadata Collector,在集群节点上运行 1024 - 65535 opsconfigmonitoring.googleapis.com 443 TCP/HTTPS
Cloud Monitoring Collector,在集群节点上运行 1024 - 65535 oauth2.googleapis.com
monitoring.googleapis.com
stackdriver.googleapis.com
servicecontrol.googleapis.com
443 TCP/HTTPS
集群节点 1024 - 65535 本地 Docker 注册表 具体取决于您的注册表 TCP/HTTPS 如果 GKE on Bare Metal 配置为使用本地私有 Docker 注册表(而不是 gcr.io),则需要。
集群节点 1024 - 65535 gcr.io
oauth2.googleapis.com
storage.googleapis.com
为管理员集群启用的服务所需的任何 *.googleapis.com 形式的 Google API 网址。
443 TCP/HTTPS 从公共 Docker 注册表下载映像。 如果使用私有 Docker 注册表,则不需要。
Connect Agent,在集群节点上运行 1024 - 65535 cloudresourcemanager.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
www.googleapis.com
iam.googleapis.com
iamcredentials.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
sts.googleapis.com
accounts.google.com
443 TCP/HTTPS 如需详细了解 Connect Agent 管理的流量,请参阅 Connect Agent 概览
集群节点 1024 - 65535 gkeonprem.googleapis.com
gkeonprem.mtls.googleapis.com
443 TCP/HTTPS 在裸机和 VMware 基础架构上创建和管理集群生命周期。

其余组件的防火墙规则

下表中所述的规则适用于上一部分中未列出的所有其他组件。

来源端口

端口

协议

说明

客户端和应用最终用户 全部 Istio Ingress 的 VIP 80、443 TCP 进入用户集群的 Ingress 服务的最终用户流量。
管理员工作站 32768 - 60999 gcr.io
cloudresourcemanager.googleapis.com
oauth2.googleapis.com
storage.googleapis.com
为此集群启用的服务所需的任何 *.googleapis.com 网址
443 TCP/HTTPS 从公共 Docker 注册表下载 Docker 映像。
管理员工作站 32768 - 60999 gcr.io
cloudresourcemanager.googleapis.com
iam.googleapis.com
oauth2.googleapis.com
serviceusage.googleapis.com
storage.googleapis.com
为管理员或用户集群启用的服务所需的任何 *.googleapis.com 网址
443 TCP/HTTPS 预检检查(验证)。