如果用于引导节点和集群节点的机器使用代理服务器访问互联网,您必须:
- 在集群节点上为软件包管理器配置代理
- 在集群配置文件中配置代理详细信息。
前提条件
您的代理服务器必须允许连接到以下地址:
地址 | 用途 |
---|---|
*.gcr.io |
从 Container Registry 中拉取映像。 |
accounts.google.com |
处理 OpenID 的授权请求,并发现用于验证令牌的公钥。 |
cloudresourcemanager.googleapis.com |
解析与集群所连接的 Google Cloud 项目有关的元数据。 |
compute.googleapis.com |
验证 Cloud Logging 和 Cloud Monitoring 资源区域。 |
dl.fedoraproject.org |
使用 Red Hat Enterprise Linux (RHEL) 发行版时,安装 Extra Packages for Enterprise Linux (EPEL)。 |
download.docker.com |
添加 Docker 代码库。如果您在代理后运行管理员工作站,此地址是必需的。如果将 Docker 用于容器运行时,对于在代理后运行的节点机器,此地址是必需的。 |
gkeconnect.googleapis.com |
建立用于接收 Google Cloud 请求的渠道并发出响应。 |
gkehub.googleapis.com |
创建与要连接到 Google Cloud 的集群对应的 Google Cloud 端中心成员资源。 |
iam.googleapis.com |
创建服务帐号,可用于向 Google Cloud 进行身份验证和执行 API 调用。 |
iamcredentials.googleapis.com |
提供审核日志记录准入控制和遥测报告。 |
logging.googleapis.com |
写入日志条目并管理您的 Cloud Logging 配置。 |
monitoring.googleapis.com |
管理您的 Cloud Monitoring 数据和配置。 |
packages.cloud.google.com |
从 Google Cloud 软件包镜像下载软件包。 |
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 服务请求的服务令牌进行身份验证。 |
除了这些网址之外,代理服务器还必须允许操作系统软件包管理器需要的所有软件包镜像。您可以更新软件包管理器配置,以使用更具确定性的列表以方便管理。
在集群节点上为软件包管理器配置代理
Anthos clusters 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
指定代理网址的字符串。引导和节点机器使用此代理访问互联网。
proxy.noProxy
不应通过代理服务器的 IP 地址、主机名和域名的列表。
大多数情况下,您不需要向此列表中添加任何项。请勿添加 Service 和 Pod CIDR。
noProxy 使用场景:
使用位于同一专用网络中的私有软件包镜像(不需要代理即可访问)
使用位于同一专用网络中的私有注册表镜像(不需要代理即可访问)
示例
以下是集群配置文件中代理设置的示例:
proxy:
url: http://[username:password@]domain
noProxy:
- example1.com
- example2.com
替换代理配置
通过替换集群配置文件中的代理设置,您可以在与节点机器所用代理不同的代理之后运行引导机器。如需替换代理设置,请在引导机器上设置以下环境变量:
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 代理。