

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

# 在 Sno AWS w 上使用亚马逊 EKS Anywhere
<a name="using-eksa"></a>

Amazon EKS Anywhere on Sno AWS w 可帮助你在 Snowball Edge 上创建和运营 Kubernetes 集群。Kubernetes 是一个用于实现容器化应用程序的部署、扩缩和管理自动化的开源软件。无论有没有外部网络连接，您都可以在 Snowball Edge 设备上使用 Amazon EKS Anywhere。要在没有外部网络连接的设备上使用 Amazon EKS Anywhere，请提供要在 Snowball Edge 设备上运行的容器注册表。有关 Amazon EKS Anywhere 的一般信息，请参阅 [Amazon EKS Anywhere 文档](https://anywhere.eks.amazonaws.com/docs/)。

在 Sno AWS w 上使用 Amazon EKS Anywhere 可以为你提供以下功能：
+ 在 Snowball Edge Compute Optimized 设备上使用 Amazon EKS Anywhere CLI（eksctl anywhere）配置 Kubernetes（K8s）集群。您可以在一台或三台及以上的 Snowball Edge 设备上预置 Amazon EKS Anywhere，从而实现高可用性。
+ 支持 Cilium 容器网络接口（CNI）。
+ 支持 Ubuntu 20.04 作为节点操作系统。

下图说明了部署在 Snowball Edge 设备上的 Amazon EKS Anywhere 集群。

![\[该图描绘了部署在 Snowball Edge 设备上的 Amazon EKS Anywhere on Sno AWS w 集群以及组件之间的关系。\]](http://docs.aws.amazon.com/zh_cn/snowball/latest/developer-guide/images/eskaarch.jpg)


我们建议您使用 Amazon EKS Anywhere 支持的最新可用 Kubernetes 版本创建 Kubernetes 集群。有关更多信息，请参阅 [Amazon EKS-Anywhere Versioning](https://anywhere.eks.amazonaws.com/docs/concepts/support-versions/)。如果您的应用程序需要特定版本的 Kubernetes，请使用 Amazon EKS 标准支持或扩展支持中提供的任何 Kubernetes 版本。在规划部署生命周期时，请考虑 Kubernetes 版本的发布和支持日期。这有助于避免可能失去对您打算使用的 Kubernetes 版本的支持。有关更多信息，请参阅 [Amazon EKS Kubernetes 发布日历](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar)。

有关亚马逊 EKS Anywhere on Sno AWS w 的更多信息，请参阅[亚马逊 EKS Anywhere 文档](https://anywhere.eks.amazonaws.com/docs/)。

**Topics**
+ [

# 在订购适用于亚马逊 EKS 的 Snowball Edge 设备之前需要完成的操作 Amazon Anywhere on Snow AWS
](eksa-gettingstarted.md)
+ [

# 订购 Snowball Edge 设备以与亚马逊 EKS 一起使用 Amazon Anywhere on Snow AWS
](order-sbe.md)
+ [

# 在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere
](eksa-configuration.md)
+ [

# 在 Sno AWS w 上配置 Amazon EKS Anywhere 以实现断开连接
](configure-disconnected.md)
+ [

# 在 Snowball Edge 设备上创建和维护集群
](maintain-eks-a-clusters-snow.md)

# 在订购适用于亚马逊 EKS 的 Snowball Edge 设备之前需要完成的操作 Amazon Anywhere on Snow AWS
<a name="eksa-gettingstarted"></a>

目前，亚马逊 EKS Anywhere 与 Snowball Edge 计算优化设备兼容。在预定 Snowball Edge 设备之前，您应该做好一些准备工作。
+ 构建并提供用于在设备上创建虚拟机的操作系统映像。
+ 您的网络必须具有可用于 K8s 控制面板端点的静态 IP 地址，并允许使用地址解析协议（ARP）。
+ 您的 Snowball Edge 设备必须打开特定的端口。有关端口的更多信息，请参阅 Amazon EKS Anywhere 文档中的 [Ports and protocols](https://anywhere.eks.amazonaws.com/docs/reference/ports/)。

**Topics**
+ [

## 为 Snowball Edge 创建 Ubuntu EKS 发行版 AMI
](#create-eksd-ami)
+ [

## 为 Snowball Edge 建造一个 Harbor AMI
](#existing-private-registry)

## 为 Snowball Edge 创建 Ubuntu EKS 发行版 AMI
<a name="create-eksd-ami"></a>

要创建 Ubuntu EKS Distro AMI，请参阅 [Build Snow node images](https://anywhere.eks.amazonaws.com/docs/reference/artifacts/#build-snow-node-images)。

生成的 AMI 的名称将遵循该模式：`capa-ami-ubuntu-20.04-version-timestamp`。例如 `capa-ami-ubuntu-20.04-v1.24-1672424524`。

## 为 Snowball Edge 建造一个 Harbor AMI
<a name="existing-private-registry"></a>

设置 Snowball Edge 上的 Harbor 私有注册表 AMI，以便在没有外部网络连接的设备上使用 Amazon EKS Anywhere。如果您不打算在 Snowball Edge 设备与外部网络断开连接时使用 Amazon EKS Anywhere，或者如果您在 AMI 中有一个私有 Kubernetes 注册表可供在设备上使用，则可以跳过本部分。

要创建 Harbor 本地注册表 AMI，请参阅[构建 Harbor AMI](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/container-registry-ami-builder#build-harbor-ami)。

# 订购 Snowball Edge 设备以与亚马逊 EKS 一起使用 Amazon Anywhere on Snow AWS
<a name="order-sbe"></a>

要订购经过优化的 Snowball Edge 计算，请参阅[正在创建订购 Snowball Edge 设备的任务](create-job-common.md)本指南，并在订购过程中请记住以下事项：
+ 在第 1 步中，选择**仅本地计算和存储**作业类型。
+ 在步骤 2 中，选择 **Snowball Edge Compute Optimized Edge** 设备类型。
+ 在第 3 步中，选择 **Amazon EKS Anywhere on Sno AWS w**，然后选择你需要的 Kubernetes 版本。
**注意**  
为了提供最新的软件，我们可能会为设备配置比当前可用版本更新的 ESK Anywhere 版本。有关更多信息，请参阅《Amazon EKS 用户指南》**中的[版本控制](https://anywhere.eks.amazonaws.com/docs/concepts/support-versions/)。  
我们建议您使用 Amazon EKS Anywhere 支持的最新可用 Kubernetes 版本创建 Kubernetes 集群。有关更多信息，请参阅 [Amazon EKS-Anywhere Versioning](https://anywhere.eks.amazonaws.com/docs/concepts/support-versions/)。如果您的应用程序需要特定版本的 Kubernetes，请使用 Amazon EKS 标准支持或扩展支持中提供的任何 Kubernetes 版本。在规划部署生命周期时，请考虑 Kubernetes 版本的发布和支持日期。这有助于避免可能失去对您打算使用的 Kubernetes 版本的支持。有关更多信息，请参阅 [Amazon EKS Kubernetes 发布日历](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar)。
+ 选择 AMIs 在您的设备上添加，包括 EKS Distro AMI（参见[为 Snowball Edge 创建 Ubuntu EKS 发行版 AMI](eksa-gettingstarted.md#create-eksd-ami)），以及您构建的 Harbor AMI（可选）（参见[为 Snowball Edge 建造一个 Harbor AMI](eksa-gettingstarted.md#existing-private-registry)）。
+ 如果您需要多台 Snowball Edge 设备来实现高可用性，请从**高可用性**中选择您所需的设备数量。

在收到 Snowball Edge 设备后，请根据[在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere](eksa-configuration.md)配置 Amazon EKS Anywhere。

# 在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere
<a name="eksa-configuration"></a>

按照以下步骤在您的 Snowball Edge 设备上配置和启动 Amazon EKS Anywhere。然后，要将 Amazon EKS Anywhere 配置为在断开连接的设备上运行，请在断开这些设备与外部网络的连接之前完成其他步骤。有关更多信息，请参阅 [在 Sno AWS w 上配置 Amazon EKS Anywhere 以实现断开连接](configure-disconnected.md)。

**Topics**
+ [

## Snowball EDge 上亚马逊 EKS Anywhere 的初始设置
](#initial-setup)
+ [

## 自动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere
](#auto-eksa-configuration)
+ [

## 手动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere
](#manual-eksa-configuration)

## Snowball EDge 上亚马逊 EKS Anywhere 的初始设置
<a name="initial-setup"></a>

通过将设备连接到本地网络、下载 Snowball Edge 客户端、获取凭证和解锁设备来在每台 Snowball Edge 设备上执行初始设置。

**执行初始设置**

1. 下载并安装 Snowball Edge 客户端。有关更多信息，请参阅 [下载并安装 Snowball Edge 客户端](using-client-commands.md#download-the-client)。

1. 将设备连接到您的本地网络。有关更多信息，请参阅 [将 Snowball Edge 连接到您的本地网络](getting-started.md#getting-started-connect)。

1. 获取用于解锁设备的凭证。有关更多信息，请参阅 [获取访问 Snowball Edge 的凭证](getting-started.md#get-credentials)。

1. 解锁设备。有关更多信息，请参阅 [解锁 Snowball Edge](unlockdevice.md)。您还可以使用脚本工具代替手动解锁设备。请参阅[Unlock devices](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/setup-tools#Unlock-devices)。

## 自动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere
<a name="auto-eksa-configuration"></a>

您可以使用示例脚本工具来设置环境并运行 Amazon EKS Anywhere 管理实例，也可以手动执行此操作。要使用脚本工具，请参阅 [Unlock devices and setup environment for Amazon EKS Anywhere](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/setup-tools#Unlock-devices-and-setup-envorinment-for-EKS-Anywhere)。设置完环境并开始运行 Amazon EKS Anywhere 管理实例后，如果您需要将 Amazon EKS Anywhere 配置为在断开网络连接的情况下在 Snowball Edge 设备上运行，请参阅[在 Sno AWS w 上配置 Amazon EKS Anywhere 以实现断开连接](configure-disconnected.md)。否则，请参阅[在 Snowball Edge 设备上创建和维护集群](maintain-eks-a-clusters-snow.md)。

要手动设置环境并运行 Amazon EKS Anywhere 管理实例，请参阅[手动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere](#manual-eksa-configuration)。

## 手动在 Snowball Edge 设备上配置和运行 Amazon EKS Anywhere
<a name="manual-eksa-configuration"></a>

在 Snowball Edge 设备上配置 Amazon EKS Anywhere 之前，为 Snowball Edge 客户端设置一个配置文件。有关更多信息，请参阅 [配置和使用 Snowball Edge 客户端](using-client-commands.md)。

**Topics**
+ [

### 创建 Amazon EKS Anywhere IAM 本地用户
](#create-role)
+ [

### （可选）在 Snowball Edge 上创建和导入安全外壳密钥
](#create-ssh-key)
+ [

### 在 Snowball Edge 上运行 Amazon EKS Anywhere 管理实例，然后向其传输证书和证书文件
](#start-config-eksa-admin-instance)

### 创建 Amazon EKS Anywhere IAM 本地用户
<a name="create-role"></a>

要实现最佳安全实操，请在 Snowball Edge 设备上为 Amazon EKS Anywhere 创建本地 IAM 用户。您可以使用步骤程序手动实现这一点。

**注意**  
对您使用的每台 Snowball Edge 设备执行此操作。

#### 在 Snowball Edge 上创建本地用户
<a name="create-eksa-iam-user"></a>

使用 `create-user` 命令创建 Amazon EKS Anywhere IAM 用户。

```
aws iam create-user --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name
    {
        "User": {
            "Path": "/",
            "UserName": "eks-a-user",
            "UserId": "AIDACKCEVSQ6C2EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:user/eks-a-user",
            "CreateDate": "2022-04-06T00:13:35.665000+00:00"
        }
    }
```

#### 在 Snowball Edge 上为本地用户创建策略
<a name="create-eksa-iam-user-policy"></a>

创建策略文档，用其创建 IAM 策略，并将该策略附加到 Amazon EKS Anywhere 本地用户。

**要创建策略文档并将其附加到 Amazon EKS Anywhere 本地用户，请执行以下操作**

1. 创建策略文档并将其保存到您的计算机。将以下策略复制到文档中。

------
#### [ JSON ]

****  

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "snowball-device:DescribeDevice",
           "snowball-device:CreateDirectNetworkInterface",
           "snowball-device:DeleteDirectNetworkInterface",
           "snowball-device:DescribeDirectNetworkInterfaces",
           "snowball-device:DescribeDeviceSoftware"
         ],
         "Resource": ["*"]
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:RunInstances",
           "ec2:DescribeInstances",
           "ec2:TerminateInstances",
           "ec2:ImportKeyPair",
           "ec2:DescribeKeyPairs",
           "ec2:DescribeInstanceTypes",
           "ec2:DescribeImages",
           "ec2:DeleteTags"
         ],
         "Resource": ["*"]
       }
     ]
   }
   ```

------

1. 使用 `create-policy` 命令根据策略文档创建 IAM 策略。`--policy-document` 参数的值应使用策略文件的绝对路径。例如，`file:///home/user/policy-name.json`

   ```
   aws iam create-policy --policy-name policy-name --policy-document file:///home/user/policy-name.json --endpoint http://snowball-ip:6078 --profile profile-name
   {
       "Policy": {
           "PolicyName": "policy-name",
           "PolicyId": "ANPACEMGEZDGNBVGY3TQOJQGEZAAAABP76TE5MKAAAABCCOTR2IJ43NBTJRZBU",
           "Arn": "arn:aws:iam::123456789012:policy/policy-name",
           "Path": "/",
           "DefaultVersionId": "v1",
           "AttachmentCount": 0,
           "IsAttachable": true,
           "CreateDate": "2022-04-06T04:46:56.907000+00:00",
           "UpdateDate": "2022-04-06T04:46:56.907000+00:00"
       }
   }
   ```

1. 使用 `attach-user-policy` 命令将 IAM 策略附加到 Amazon EKS Anywhere 本地用户。

   ```
   aws iam attach-user-policy --policy-arn policy-arn --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name     
   ```

#### 在 Snowball Edge 上创建访问密钥和凭证文件
<a name="create-eksa-iam-user-access-key"></a>

为 Amazon EKS Anywhere IAM 本地用户创建访问密钥。然后，创建一个凭证文件，并在其中包含为本地用户生成的 `AccessKeyId` 和 `SecretAccessKey` 的值。稍后，Amazon EKS Anywhere 管理实例将使用该凭证文件。

1. 使用 `create-access-key` 命令为 Amazon EKS Anywhere 本地用户创建访问密钥。

   ```
   aws iam create-access-key --user-name user-name --endpoint http://snowball-ip:6078 --profile profile-name
       {
           "AccessKey": {
               "UserName": "eks-a-user",
               "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
               "Status": "Active",
               "SecretAccessKey": "RTT/wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
               "CreateDate": "2022-04-06T04:23:46.139000+00:00"
           }
       }
   ```

1. 创建凭证文件。在其中，按以下格式保存 `AccessKeyId` 和 `SecretAccessKey` 值。

   ```
   [snowball-ip] 
   aws_access_key_id = ABCDEFGHIJKLMNOPQR2T
   aws_secret_access_key = AfSD7sYz/TBZtzkReBl6PuuISzJ2WtNkeePw+nNzJ
   region = snow
   ```
**注意**  
如果您使用多台 Snowball Edge 设备，则文件中凭证的顺序无关紧要，但所有设备的凭证确实需要放在一个文件中。

#### 在 Snowball Edge 上为管理实例创建证书文件
<a name="create-credentials-for-admin-instance"></a>

Amazon EKS Anywhere 管理实例需要 Snowball Edge 设备的证书才能在这些设备上运行。创建一个证书文件，其中包含用于访问 Snowball Edge 设备的证书，以便在之后供 Amazon EKS Anywhere 管理实例使用。

**要创建证书文件，请执行以下操作**

1. 使用 `list-certificates` 命令获取您计划使用的每台 Snowball Edge 设备的证书。

   ```
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge list-certificates --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
   {
     "Certificates" : [ {
       "CertificateArn" : "arn:aws:snowball-device:::certificate/xxx",
       "SubjectAlternativeNames" : [ "ID:JID-xxx" ]
     } ]
   }
   ```

1. 使用 `CertificateArn` 的值作为 `get-certificate` 命令的 `--certificate-arn` 参数的值。

   ```
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge get-certificate --certificate-arn ARN --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code            
   ```

1. 创建设备证书文件。将 `get-certificate` 的输出放入证书文件中。下面是如何保存输出的一个示例。
**注意**  
如果您使用多台 Snowball Edge 设备，则文件中凭证的顺序无关紧要，但所有设备的凭证确实需要放在一个文件中。

   ```
   -----BEGIN CERTIFICATE-----
   ZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGUgZWtzYSBzbm93IHRlc3QgY2VydGlm  
   aWNhdGVla3NhIHNub3cgdGVzdCBjZXJ0aWZpY2F0ZWVrc2Egc25vdyB0ZXN0IGNl  
   cnRpZmljYXRlZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGVla3NhIHNub3cgdGVz  
   dCBjZXJ0aWZpY2F0ZQMIIDXDCCAkSgAwIBAgIJAISM0nTVmbj+MA0GCSqGSIb3DQ  
   ...                                                               
   -----END CERTIFICATE-----
   ```

1. 重复[创建 Amazon EKS Anywhere IAM 本地用户](#create-role)的操作，在所有 Snowball Edge 设备上为 Amazon EKS Anywhere 创建 IAM 本地用户。

### （可选）在 Snowball Edge 上创建和导入安全外壳密钥
<a name="create-ssh-key"></a>

使用此可选过程创建 Secure Shell（SSH）密钥来访问所有 Amazon EKS Anywhere 节点实例，并将公钥导入所有 Snowball Edge 设备。保存并保护此密钥文件。

如果您跳过此过程，Amazon EKS Anywhere 将在必要时自动创建并导入 SSH 密钥。此密钥将存储在 `${PWD}/${CLUSTER_NAME}/eks-a-id_rsa` 中的管理实例上。

**创建 SSH 密钥并将其导入 Amazon EKS Anywhere 实例**

1. 使用 `ssh-keygen` 命令生成 SSH 密钥。

   ```
   ssh-keygen -t rsa -C "key-name" -f path-to-key-file
   ```

1. 使用 `import-key-pair` 命令将密钥从您的计算机导入到 Snowball Edge 设备。
**注意**  
将密钥导入所有设备时，`key-name` 参数的值必须相同。

   ```
   aws ec2 import-key-pair --key-name key-name --public-key-material fileb:///path/to/key-file --endpoint http://snowball-ip:8008 --profile profile-name 
   {
       "KeyFingerprint": "5b:0c:fd:e1:a0:69:05:4c:aa:43:f3:3b:3e:04:7f:51",
       "KeyName": "default",
       "KeyPairId": "s.key-85edb5d820c92a6f8"
   }
   ```

### 在 Snowball Edge 上运行 Amazon EKS Anywhere 管理实例，然后向其传输证书和证书文件
<a name="start-config-eksa-admin-instance"></a>

#### 在 Snowball Edge 上运行 Amazon EKS Anywhere 管理实例
<a name="start-admin-instance"></a>

按照此过程手动运行 Amazon EKS Anywhere 管理实例、为管理实例配置虚拟网络接口（VNI）、检查实例的状态、创建 SSH 密钥，并用其连接到管理实例。您可以使用示例脚本工具自动创建 Amazon EKS Anywhere 管理实例，并将凭证和证书文件传输到该实例。请参见[创建 Amazon EKS Anywhere 管理实例](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/setup-tools#Create-EKS-Anywhere-admin-instance)。脚本工具完成后，您可以参阅 [在 Snowball Edge 设备上创建和维护集群](maintain-eks-a-clusters-snow.md) 通过 ssh 登录实例并创建集群。如果您想手动设置 Amazon EKS Anywhere 实例，请使用以下步骤。

**注意**  
如果您使用多台 Snowball Edge 设备来预置集群，则可以在任何 Snowball Edge 设备上启动 Amazon EKS Anywhere 管理实例。

**要运行 Amazon EKS Anywhere 管理实例，请执行以下操作**

1. 使用 `create-key-pair` 命令为 Amazon EKS Anywhere 管理实例创建 SSH 密钥。该命令将密钥保存到 `$PWD/key-file-name`。

   ```
   aws ec2 create-key-pair --key-name key-name --query 'KeyMaterial' --output text --endpoint http://snowball ip:8008 > key-file-name --profile profile-name
   ```

1. 使用 `describe-images` 命令从输出中查找以 `eks-anywhere-admin` 开头的映像名称。

   ```
   aws ec2 describe-images --endpoint http://snowball-ip:8008 --profile profile-name
   ```

1. 使用 `run-instance` 命令启动带有 Amazon EKS Anywhere 管理映像的 eks-a 管理实例。

   ```
   aws ec2 run-instances --image-id eks-a-admin-image-id --key-name key-name --instance-type sbe-c.xlarge --endpoint http://snowball-ip:8008 --profile profile-name
   ```

1. 使用 `describe-instances` 命令检查 Amazon EKS Anywhere 实例的状态。等到命令显示实例状态为 `running`，然后再继续。

   ```
   aws ec2 describe-instances --instance-id instance-id --endpoint http://snowball-ip:8008 --profile profile-name
   ```

1. 在 `describe-device` 命令输出中，记下连接到您的网络的物理网络接口的 `PhysicalNetworkInterfaceId` 值。您将使用该值来创建 VNI。

   ```
    
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge describe-device --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
   ```

1. 为 Amazon EKS Anywhere 管理实例创建 VNI。使用 `PhysicalNetworkInterfaceId` 的值作为 `physical-network-interface-id` 参数的值。

   ```
   PATH_TO_Snowball_Edge_CLIENT/bin/snowballEdge create-virtual-network-interface --ip-address-assignment dhcp --physical-network-interface-id PNI --endpoint https://snowball-ip --manifest-file path-to-manifest-file --unlock-code unlock-code
   ```

1. 使用 `associate-address` 命令的 `public-ip` 参数的 `IpAddress` 值，将共有地址与 Amazon EKS Anywhere 管理实例相关联。

   ```
   aws ec2 associate-address --instance-id instance-id --public-ip VNI-IP --endpoint http://snowball-ip:8008 --profile profile-name 
   ```

1. 通过 SSH 连接到 Amazon EKS Anywhere 管理实例。

   ```
   ssh -i path-to-key ec2-user@VNI-IP      
   ```

#### 将证书和凭据文件传输到 Snowball Edge 上的管理实例
<a name="transfer-cred-cert-files"></a>

在 Amazon EKS Anywhere 管理实例开始运行后，将 Snowball Edge 设备的凭证和证书转移到管理实例。根据您在[在 Snowball Edge 上创建访问密钥和凭证文件](#create-eksa-iam-user-access-key)和[在 Snowball Edge 上为管理实例创建证书文件](#create-credentials-for-admin-instance)中保存凭证和证书文件的目录，在相同的目录中运行以下命令：

```
scp -i path-to-key path-to-credentials-file path-to-certificates-file ec2-user@eks-admin-instance-ip:~        
```

验证 Amazon EKS Anywhere 管理实例上的文件内容。以下是凭证和证书文件的示例。

```
[192.168.1.1] 
aws_access_key_id = EMGEZDGNBVGY3TQOJQGEZB5ULEAAIWHWUJDXEXAMPLE 
aws_secret_access_key = AUHpqjO0GZQHEYXDbN0neLNlfR0gEXAMPLE 
region = snow 

[192.168.1.2] 
aws_access_key_id = EMGEZDGNBVGY3TQOJQGEZG5O7F3FJUCMYRMI4KPIEXAMPLE 
aws_secret_access_key = kY4Cl8+RJAwq/bu28Y8fUJepwqhDEXAMPLE 
region = snow
```

```
-----BEGIN CERTIFICATE-----                                      
ZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGUgZWtzYSBzbm93IHRlc3QgY2VydGlm  
aWNhdGVla3NhIHNub3cgdGVzdCBjZXJ0aWZpY2F0ZWVrc2Egc25vdyB0ZXN0IGNl  
cnRpZmljYXRlZWtzYSBzbm93IHRlc3QgY2VydGlmaWNhdGVla3NhIHNub3cgdGVz  
dCBjZXJ0aWZpY2F0ZQMIIDXDCCAkSgAwIBAgIJAISM0nTVmbj+MA0GCSqGSIb3DQ  
...                                                               
-----END CERTIFICATE-----                                         

-----BEGIN CERTIFICATE-----                                       
KJ0FPl2PAYPEjxr81/PoCXfZeARBzN9WLUH5yz1ta+sYUJouzhzWuLJYA1xqcCPY  
mhVlkRsN4hVdlBNRnCCpRF766yjdJeibKVzXQxoXoZBjrOkuGwqRy3d3ndjK77h4  
OR5Fv9mjGf7CjcaSjk/4iwmZvRSaQacb0YG5GVeb4mfUAuVtuFoMeYfnAgMBAAGj  
azBpMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFL/bRcnBRuSM5+FcYFa8HfIBomdF  
...                                                              
-----END CERTIFICATE-----
```

# 在 Sno AWS w 上配置 Amazon EKS Anywhere 以实现断开连接
<a name="configure-disconnected"></a>

在连接到网络时在 Snowball Edge 设备上的 Snowball EKS Anywhere 中完成此项额外配置，以便为 Amazon EKS Anywhere 在没有外部网络连接的环境中运行做好准备。

要将 Amazon EKS Anywhere 配置为与您自己的本地私有 Kubernetes 注册表在无连接状态下使用，请参阅 EKS Anywhere 文档中的[注册表镜像配置](https://anywhere.eks.amazonaws.com/docs/reference/clusterspec/optional/registrymirror/)。

如果您创建了 Harbor 私有注册表 AMI，请按照本部分中的过程操作。

**Topics**
+ [

## 在 Snowball Edge 设备上配置 Harbor 注册表
](#configure-harbor-snow)
+ [

## 在 Snowball Edge 上的 Amazon EKS Anywhere 管理实例上使用 Harbor 注册表
](#use-local-registry-eksa-instance)

## 在 Snowball Edge 设备上配置 Harbor 注册表
<a name="configure-harbor-snow"></a>

请参阅[在 Snowball Edge 设备上配置 Harbor](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/container-registry-ami-builder#configure-harbor-on-a-snowball-edge-device)

## 在 Snowball Edge 上的 Amazon EKS Anywhere 管理实例上使用 Harbor 注册表
<a name="use-local-registry-eksa-instance"></a>

请参阅 [Import Amazon EKS Anywhere container images to the local Harbor registry on a Snowball Edge device](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/container-registry-ami-builder#import-eks-anywhere-container-images-to-the-local-harbor-registry-on-a-snowball-device)。

# 在 Snowball Edge 设备上创建和维护集群
<a name="maintain-eks-a-clusters-snow"></a>

## 在 Snowball Edge 上创建集群的最佳实践
<a name="eks-a-cluster-snow-bestpractices"></a>

要创建 Amazon EKS Anywhere 集群，请参阅[创建 Snow 集群](https://anywhere.eks.amazonaws.com/docs/getting-started/production-environment/snow-getstarted/)。

在 Snowball Edge 设备上创建 Amazon EKS Anywhere 集群时，请记住以下最佳实践：
+ 创建处于静态 IP 地址范围内的集群之前，请确保 Snowball Edge 设备上没有其他集群使用相同 IP 地址范围。
+ 在 Snowball Edge 设备上使用 DHCP 寻址创建集群，请确保集群使用的所有静态 IP 地址范围均不在 DHCP 池子网中。
+ 创建多个集群时，请等待一个集群成功预置并运行，然后再创建另一个集群。

## 升级 Snowball Edge 上的集群
<a name="updating-eks-a-clusters-snow"></a>

要升级 Amazon EKS Anywhere 管理员 AMI 或 EKS 发行版 AMI，请联系 AWS 支持。 支持 将提供包含升级后的 AMI 的 Snowball Edge 更新。然后，下载并安装 Snowball Edge 更新。请参阅 [将更新下载到 Snowball Edge 设备](download-updates.md)和[将更新安装到 Snowball Edge 设备](install-updates.md)。

升级 Amazon EKS Anywhere 后，您需要启动一个新的 Amazon EKS Anywhere 管理实例。请参阅[在 Snowball Edge 上运行 Amazon EKS Anywhere 管理实例](eksa-configuration.md#start-admin-instance)。然后，将密钥文件、集群文件夹、凭证和证书从先前的管理实例复制到升级后的实例，这些内容位于以集群命名的文件夹中。

## 清理 Snowball Edge 上的集群资源
<a name="clean-up-resources-eks-a-clusters-snow"></a>

如果您在 Snowball Edge 设备上创建了多个集群但未正确删除它们，或者如果集群出现问题，并且集群在恢复后创建了替换节点，则会出现资源泄漏。我们提供一个示例脚本工具，让您可以修改和用于清理 Amazon EKS Anywhere 管理实例和 Snowball Edge 设备。参见 [Amazon EKS Anywhere on Sno AWS w 清理工具](https://github.com/aws-samples/aws-snow-tools-for-eks-anywhere/tree/main/cleanup-tools#eks-anywhere-on-snow-cleanup-tools)。