

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

# 通过网络断开连接获得的主机凭证
<a name="hybrid-nodes-host-creds"></a>

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

## SSM 混合激活
<a name="_ssm_hybrid_activations"></a>

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
<a name="_iam_roles_anywhere"></a>

默认情况下，由 IAM Roles Anywhere 配置的临时证书有效期为一小时。您可以通过 IAM Roles Anywhere 配置文件中的[https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session.html#credentials-object](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session.html#credentials-object)字段配置凭证有效期。凭证的最长有效期为 12 小时。您的混合节点 IAM 角色的[https://docs.aws.amazon.com/managedservices/latest/ctref/management-advanced-identity-and-access-management-iam-update-maxsessionduration.html](https://docs.aws.amazon.com/managedservices/latest/ctref/management-advanced-identity-and-access-management-iam-update-maxsessionduration.html)设置必须大于您的 IAM Roles Anywhere 个人资料中的`durationSeconds`设置。

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