5

我正在尝试使用 EKS 创建一个 kubernetes 集群。我正在使用的命令是

eksctl create cluster --name prod --version 1.14 --region us-west-2 --nodegroup-name standard-workers --node-type t3.medium --nodes 3 --nodes-min 1 --nodes-max 4 --ssh-access --ssh-public-key <pathto>/certificate.pem --managed

上面的 certificate.pem 是我从 AWS 控制台“我的安全凭证”页面下载的 x.509 证书。该命令引发错误:

Error: computing fingerprint for key "/Users/xxxx/work/tech/aws/certificate.pem": error decoding SSH public key: "-----BEGIN CERTIFICATE-----\nMIIDhjCCAm6gAwIBAgIVAKuhOc5Vbrgl7Y3ZfxBAj9uY9aeDMA0GCSqGSIb3DQEB\nBQUAMFMxITAfBgNVBAMMGEFXUyBM
-----END CERTIFICATE-----\n" err: 输入字节 11 处的非法 base64 数据

ssh-public-key eksctl 在这里期待什么?

4

2 回答 2

10

知道了。证书格式不是 eksctl 喜欢的。最终转换从 AWS 下载的 private_key.pem 并使用命令将其转换为 ssh pub 密钥格式:

ssh-keygen -y -f private_key.pem > public_key.pem
于 2020-02-01T05:36:58.033 回答
1

您可以按照eksctl 的文档处理此问题。正如明确记录的那样,您有两种选择。

SSH 访问

为了允许 SSH 访问节点,默认eksctl导入~/.ssh/id_rsa.pub,以使用不同的 SSH 公钥,例如my_eks_node_id.pub,运行:

eksctl create cluster --ssh-access --ssh-public-key=my_eks_node_id.pub

这是另一个答案建议的方法。

要在区域中使用预先存在的 EC2 密钥对us-east-1,您可以指定密钥对名称(不得解析为本地文件路径),例如使用my_kubernetes_key运行:

eksctl create cluster --ssh-access --ssh-public-key=my_kubernetes_key --region=us-east-1

由于您使用的是存储在 aws 中的密钥对,因此您可以使用此方法。这是一种简单的方法,您不需要将文件保存在本地机器中。

于 2021-12-03T01:07:07.993 回答