通过网络断开连接获得的主机凭证 - Amazon EKS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过网络断开连接获得的主机凭证

EKS 混合节点与 AWS Systems Manager (SSM) 混合激活和 AWS IAM Anywhere 角色集成,用于通过 EKS 控制平面对节点进行身份验证的临时 IAM 证书。SSM 和 IAM Anywhere 角色都会自动刷新他们在本地主机上管理的临时证书。建议在集群中的混合节点上使用单一凭证提供商,即 SSM 混合激活或 IAM 角色随处可见,但不能两者兼而有之。

SSM 混合激活

SSM 提供的临时证书有效期为一小时。使用 SSM 作为凭证提供商时,您无法更改凭证有效期。临时证书将在到期前由 SSM 自动轮换,并且轮换不会影响您的节点或应用程序的状态。但是,当 SSM 代理和 SSM 区域端点之间的网络断开连接时,SSM 无法刷新凭证,并且凭据可能会过期。

如果 SSM 无法连接到 SSM 区域端点,则使用指数退避来重试凭据刷新。在 SSM 代理版本3.3.808.0及更高版本(2024 年 8 月发布)中,指数级退缩上限为 30 分钟。根据网络断开连接的持续时间,SSM 最多可能需要 30 分钟才能刷新凭据,并且在刷新凭据之前,混合节点不会重新连接到 EKS 控制平面。在这种情况下,您可以重新启动 SSM 代理以强制刷新凭据。当前 SSM 凭证刷新行为的副作用是,节点可能会在不同的时间重新连接,具体取决于每个节点上的 SSM 代理何时设法刷新其凭据。因此,您可能会看到尚未重新连接的节点的 Pod 故障转移到已经重新连接的节点。

获取 SSM 代理版本。您也可以查看 SSM 控制台的舰队管理器部分:

# AL2023, RHEL yum info amazon-ssm-agent # Ubuntu snap list amazon-ssm-agent

重新启动 SSM 代理:

# AL2023, RHEL systemctl restart amazon-ssm-agent # Ubuntu systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent

查看 SSM 代理日志:

tail -f /var/log/amazon/ssm/amazon-ssm-agent.log

网络断开连接期间的预期日志消息:

INFO [CredentialRefresher] Credentials ready INFO [CredentialRefresher] Next credential rotation will be in 29.995040663666668 minutes ERROR [CredentialRefresher] Retrieve credentials produced error: RequestError: send request failed INFO [CredentialRefresher] Sleeping for 35s before retrying retrieve credentials ERROR [CredentialRefresher] Retrieve credentials produced error: RequestError: send request failed INFO [CredentialRefresher] Sleeping for 56s before retrying retrieve credentials ERROR [CredentialRefresher] Retrieve credentials produced error: RequestError: send request failed INFO [CredentialRefresher] Sleeping for 1m24s before retrying retrieve credentials

IAM Roles Anywhere

默认情况下,由 IAM Roles Anywhere 配置的临时证书有效期为一小时。您可以通过 IAM Roles Anywhere 配置文件中的durationSeconds字段使用 IAM 角色随处配置凭证有效期。凭证的最长有效期为 12 小时。您的混合节点 IAM 角色的MaxSessionDuration设置必须大于您的 IAM Roles Anywhere 个人资料中的durationSeconds设置。

使用 IAM Rolet Anywhere 作为混合节点的凭证提供商时,网络断开连接后通常会在网络恢复后的几秒钟内重新连接到 EKS 控制平面,因为 kubelet 会调用按aws_signing_helper credential-process需获取证书。尽管与混合节点或网络断开连接没有直接关系,但在使用 IAM Roles Anywhere 时,您可以配置证书到期通知和警报。有关更多信息,请参阅 IAM 角色中的自定义 Anywhere 中的通知设置