我们如何从私有 EKS 集群中使用 kubectl 访问 Kubernetes API 服务器

Mor*_*riu 9 amazon-web-services kubernetes kubectl amazon-eks

我已经部署了带有专用端点的 EKS 集群(在 vpc 端点的帮助下)。没有公共端点,也没有互联网网关。

我需要了解如何从同一 VPC 中的私有子网之一启动的 EC2 实例访问 Kubernetes API。我使用会话管理器和 vpc 端点在 EC2 实例上运行命令。

在这种情况下,关于如何安装和配置 kubectl 来管理集群有什么建议吗?

All*_*hua 4

有几种方法可以实现这一目标:

  • 如果您的本地网络中有一个本地服务器连接到 EKS 集群的底层 VPC(您可以通过 AWS VPN 或 Direct Connect 连接它们),则可以将您的服务器配置kubectl为通过此专用连接进行连接。PS:您必须小心选择子网段,以避免 CIDR 冲突并简化网络集成
  • 您可以在公有子网上设置一个堡垒,并将其用作连接到私有子网内的另一个 EC2 的跳线盒。在该私有 EC2 中,您可以安装kubectl并与 EKS API 服务器集成,然后可以通过 EKS 的私有端点设置连接。
  • kubectl(更新):您还可以使用 AWS SSM 连接到包含可以管理 EKS 集群的私有 EC2 服务器(与 gohmc 的建议相同)。
  • 如果您有一个可以连接到 EKS 服务器的底层 VPC 的 Cloud9 服务器,您可以将其用作您的基础kubectl并从那里进行管理。
  • 您可以引入一个自动化 VPC,它可以通过 VPC 对等互连或临时网关连接到 EKS 集群的底层 VPC,您可以使用该 VPC 来托管 CI/CD 服务器(Jenkins 或 TeamCity)以及包含 for 的命令中心kubectlEC2出于调试目的,这也可以是托管其他 kubernetes 工具的好地方。

如果您不想在 EKS VPC 中开放互联网流量,可以按照以下步骤操作:

  • 配置另一个VPC或使用账户的默认VPC
  • 创建可访问 Internet 的 EC2
  • 在此 EC2 上安装所有操作系统更新
  • 在此 EC2 上安装 kubectl
  • 下载此 EC2 中需要的其他软件
  • 从此 EC2 创建 AMI
  • 使用上一步在 EKS VPC 内创建的 AMI 启动新的 EC2
  • SSM 到该 EC2

现在,如果您的 EKS VPC 包含可以连接到 EKS 的私有终端节点,您可以kubectl通过 VPC 的私有终端节点连接到该 API 服务器

老实说,我很高兴看到 AWS 控制台内有一个命令门户,它允许我们轻松地完成此操作,而不必执行核心网络设置。