在eksctl命令行上创建集群时,可以使用“区域”标志指定可用区,如下所示:
eksctl create cluster \
--name example \
--version 1.16 \
--region us-east-1 \
--zones us-east-1a,us-east-1b,us-east-1c
Run Code Online (Sandbox Code Playgroud)
在eksctl文档中,注意到配置文件比标志更灵活。但是,eksctl配置文件选项的文档很少,并且无法从 flags 生成配置文件。
存储eksctl库提供了一个示例,该示例使用具有预定义子网的现有 VPC,但这无法了解相同设置如何与从头VPC 相关。它也比标志所需的更细粒度。
如果一个人精通 golang(并且非常有耐心),则可以从源头上弄明白,但是 IMO 这违背了像eksctl.
有没有办法使用配置文件来实现上面标志示例中实现的功能?如果是这样,如何?
因此,如果集群是使用以下命令创建的
eksctl create cluster -f config/prod.yaml
Run Code Online (Sandbox Code Playgroud)
产品.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
....
Run Code Online (Sandbox Code Playgroud)
如果 prod.yaml 文件丢失(无法再访问),如何获取当前版本?
假设我们在 Amazon EKS 上有几个集群。我们有一个新用户或新机器,需要使用最新的集群信息填充 .kube/config。
是否有一些简单的方法可以让我们从 EKS 上的集群中获取上下文信息并将这些信息放入 .kube/config 文件中?就像是:
eksctl init "cluster-1-ARN" "cluster-2-ARN"
Run Code Online (Sandbox Code Playgroud)
所以经过一些网络调查后,我听说:
aws eks update-kubeconfig
Run Code Online (Sandbox Code Playgroud)
我试过了,我得到了这个:
$ aws eks update-kubeconfig 用法:aws [options] [ ...] [parameters] 要查看帮助文本,您可以运行:
aws 帮助 aws 帮助 aws 帮助
aws: 错误: 参数 --name 是必需的
我认为它只会更新所有集群,但事实并非如此。所以我输入了集群名称/ARN,如下所示:
aws eks update-kubeconfig --name arn:aws:eks:us-west-2:913xxx371:cluster/eks-cluster-1
aws eks update-kubeconfig --name arn:aws:eks:us-west-2:913xxx371:cluster/ignitecluster
Run Code Online (Sandbox Code Playgroud)
但后来我得到:
kbc stderr: An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: arn:aws:eks:us-west-2:913xxx371:cluster/eks-cluster-1.
kbc stderr: An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: …Run Code Online (Sandbox Code Playgroud) 当使用eksctlAWS EKS 创建 Kubernetes 集群时,进程会卡住等待节点加入集群:
nodegroup "my-cluster" has 0 node(s)\nwaiting for at least 3 node(s) to become ready in \xe2\x80\x9cmy-cluster\xe2\x80\x9d\ntimed out (after 25m0s) waiting for at least 3 nodes to join the cluster and become ready in "my-cluster"\nRun Code Online (Sandbox Code Playgroud)\n\n将显示该消息,没有任何其他日志,直到该过程最终超时。看起来在幕后,新创建的节点无法与 Kubernetes 集群通信
\n我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
上面的 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
Run Code Online (Sandbox Code Playgroud)
-----END CERTIFICATE-----\n" 错误:输入字节 11 处的 base64 数据非法
essh-public-key eksctl 在这里期待什么?
我尝试运行下面的代码并使用 eksctl 创建 aws eks kubernetes 集群,
\n$ eksctl create cluster \\\n --version 1.14 \\\n --region us-west-2 \\\n --node-type t3.medium \\\n --nodes 3 \\\n --nodes-min 1 \\\n --nodes-max 4 \\\n --name my-demo \\\n --kubeconfig=$HOME/kubeconfigs/demo-cluster-config.yaml\n\n\n\nas a result I got below errors,\n\n[\xe2\x84\xb9] eksctl version 0.35.0\n\n[\xe2\x84\xb9] using region us-west-2\n\n[\xe2\x84\xb9] setting availability zones to [us-west-2b us-west-2a us-west-2c]\n\n[\xe2\x84\xb9] subnets for us-west-2b - public:192.168.0.0/19 private:192.168.96.0/19\n\n[\xe2\x84\xb9] subnets for us-west-2a - public:192.168.32.0/19 private:192.168.128.0/19\n\n[\xe2\x84\xb9] subnets for us-west-2c - public:192.168.64.0/19 private:192.168.160.0/19\n\n[\xe2\x84\xb9] nodegroup "ng-6c4aa136" will use "ami-0f9f033f2355ab1f8" [AmazonLinux2/1.18]\n\n[\xe2\x84\xb9] using Kubernetes …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 eksctl 创建一个集群,使用默认选项和具有“AdministratorAccess”的 AMI 用户,我陷入了“等待 CloudFormation 堆栈”
> eksctl create cluster --name dev
[?] eksctl version 0.36.0
[?] using region us-west-2
[?] setting availability zones to [us-west-2a us-west-2c us-west-2b]
[?] subnets for us-west-2a - public:192.168.0.0/19 private:192.168.96.0/19
[?] subnets for us-west-2c - public:192.168.32.0/19 private:192.168.128.0/19
[?] subnets for us-west-2b - public:192.168.64.0/19 private:192.168.160.0/19
[?] nodegroup "ng-fa4af514" will use "ami-0532808ed453f9ca3" [AmazonLinux2/1.18]
[?] using Kubernetes version 1.18
[?] creating EKS cluster "dev" in "us-west-2" region with un-managed nodes
[?] will create 2 separate CloudFormation stacks …Run Code Online (Sandbox Code Playgroud) 我在互联网上搜索过但没有找到明确的答案。
Kops 适用于生产级集群,并且与供应商无关,我明白这一点,但与 Eksctl 相比有什么区别?
此外,大多数文章都已有一年多的历史,随着 K8s 生态系统发展的速度,它可能已经过时了。
我有一个带有基于混合实例分发启动模板的节点组的 eks 集群,配置如下:
region: us-west-2
instance_distribution: [p2.xlarge, p3.2xlarge, p2.8xlarge]
max_price: 0.9
on_demand_percentage_above_base_capacity: 0
on_demand_base_capacity: 0
spot_instance_pools: 2
Run Code Online (Sandbox Code Playgroud)
当希望将自动缩放从 0 缩放到 1 时,集群自动缩放器遇到了以下问题:
Launching a new EC2 instance. Status Reason: Could not launch Spot Instances. SpotMaxPriceTooLow - Your Spot request price of 0.9 is lower than the minimum required Spot request fulfillment price of 0.918. Launching EC2 instance failed.
At the time, the spot price of p3.2xlarge happened to be 0.918.
Run Code Online (Sandbox Code Playgroud)
似乎是请求一个现货 p3.2xlarge 而不是请求 p2.xlarge 的按需实例(即使 p2.xlarge 的按需价格 0.9 低于现货价格 0.918对于 …
amazon-ec2 autoscaling amazon-ec2-spot-market amazon-eks eksctl
我在 EKS 上创建了一个 kubernetes 集群。我使用 eksctl create cluster 创建集群。我能够访问一切是伟大的。
但是,我的同事创建了另一个集群,我想知道如何生成/获取 cobeconfigs 以便我可以指向我的同事创建的集群。
我正在一台严格配置的 Windows 电脑上工作,它有一些非常受限的 ExecutionPolicy 设置,即使使用非管理员安装版本的 Chocolatey,也不允许我安装 Chocolatey。有没有办法按照此处所述安装 AWS eksctl https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html而不使用 Chocolatey?
我目前正在尝试 aws eks,但在通过 eksctl 管理我的集群时遇到了问题。现在通过 eksctl 创建一个集群可以很好地使用
eksctl create cluster --region [region] --name my-cluster
Run Code Online (Sandbox Code Playgroud)
集群正确出现,它也显示在 AWS 控制台 Web GUI 中,但如果我尝试使用它
eksctl get clusters
Run Code Online (Sandbox Code Playgroud)
我得到
未找到集群
我按照文档(EKS 集群)角色中的说明设置了我的角色,并将访问密钥 ID 和秘密访问密钥添加到我的配置中。但这可能是权限的问题吗?如果不是,还能是什么
我有以下配置文件(为简洁而编辑):
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: FOO-CLUSTER
region: eu-central-1
nodeGroups:
- name: FOO-CLUSTER-group-1
[..]
- name: FOO-CLUSTER-group-2
[..]
Run Code Online (Sandbox Code Playgroud)
它将用于创建带有 的集群eksctl create cluster -f config.yml。
我想避免对集群名称进行硬编码(即FOO-CLUSTER在本例中)并将其提取到参数(例如环境变量或附加文件或 CLI 参数),以便我稍后可以使用相同的文件来创建BAR-CLUSTER等FEE-CLUSTER。
是否可以?
eksctl ×13
amazon-eks ×12
kubernetes ×6
kubectl ×2
amazon-ec2 ×1
autoscaling ×1
chocolatey ×1
javascript ×1
kops ×1