【问题标题】:How can I configure an AWS EKS autoscaler with Terraform?如何使用 Terraform 配置 AWS EKS 自动扩缩器?
【发布时间】:2020-01-15 15:26:47
【问题描述】:

我正在使用 AWS EKS 提供商 (github.com/terraform-aws-modules/terraform-aws-eks )。我正在使用 https://learn.hashicorp.com/terraform/aws/eks-intro

跟随教程

但是,这似乎没有启用自动缩放...似乎缺少cluster-autoscaler pod / daemon?

Terraform 是否能够提供此功能?还是我需要按照以下指南进行设置:https://eksworkshop.com/scaling/deploy_ca/

【问题讨论】:

标签: kubernetes terraform amazon-eks


【解决方案1】:

您可以使用 Terraform 部署 Kubernetes 资源。既有 Kubernetes 提供者,也有 Helm 提供者。

data "aws_eks_cluster_auth" "authentication" {
  name = "${var.cluster_id}"
}

provider "kubernetes" {
  # Use the token generated by AWS iam authenticator to connect as the provider does not support exec auth
  # see: https://github.com/terraform-providers/terraform-provider-kubernetes/issues/161
  host = "${var.cluster_endpoint}"

  cluster_ca_certificate = "${base64decode(var.cluster_certificate_authority_data)}"
  token                  = "${data.aws_eks_cluster_auth.authentication.token}"
  load_config_file       = false
}

provider "helm" {
  install_tiller  = "true"
  tiller_image    = "gcr.io/kubernetes-helm/tiller:v2.12.3"
}

resource "helm_release" "cluster_autoscaler" {
  name       = "cluster-autoscaler"
  repository = "stable"
  chart      = "cluster-autoscaler"
  namespace  = "kube-system"
  version    = "0.12.2"

  set {
    name  = "autoDiscovery.enabled"
    value = "true"
  }

  set {
    name  = "autoDiscovery.clusterName"
    value = "${var.cluster_name}"
  }

  set {
    name  = "cloudProvider"
    value = "aws"
  }

  set {
    name  = "awsRegion"
    value = "${data.aws_region.current_region.name}"
  }

  set {
    name  = "rbac.create"
    value = "true"
  }

  set {
    name  = "sslCertPath"
    value = "/etc/ssl/certs/ca-bundle.crt"
  }
}

【讨论】:

  • 很公平,但教程中缺少它似乎很奇怪。我试试看!
  • hashicorp 教程主要侧重于部署 EKS,而不是专门针对完全启动和运行的 kubernetes 集群。 metrics-server 仍在 kubernetes 项目中孵化。
  • 出于某种奇怪的原因,它给了我这个错误:``` * helm_release.cluster_autoscaler: error installation: Post ABB06A6EE62F55C039BB284DD4BB2DB3.gr7.us-west-2.eks.amazonaws.co…: dial tcp:lookup ABB06A6EE62F55C039BB284DD4BB2DB3.gr7.us-west-2.eks。 amazonaws.com:没有这样的主机```但我根本不认识那个端点?它也不在 tfstate 文件中。
  • 遇到helm_release.cluster_autoscaler: context deadline exceeded的错误...不确定是否与github.com/terraform-providers/terraform-provider-helm/issues/…有关
  • 嗯,我以前没有遇到过这个问题。
【解决方案2】:

下面的这个答案仍然不完整......但至少它让我更进一步......

1.

kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
helm install stable/cluster-autoscaler --name my-release --set "autoscalingGroups[0].name=demo,autoscalingGroups[0].maxSize=10,autoscalingGroups[0].minSize=1" --set rbac.create=true

然后手动修复证书路径:

kubectl edit deployments my-release-aws-cluster-autoscaler 

替换以下内容:

path: /etc/ssl/certs/ca-bundle.crt

path: /etc/ssl/certs/ca-certificates.crt

2.

在 AWS 控制台中,将AdministratorAccess 策略赋予terraform-eks-demo-node 角色。

3.

使用 (kubectl edit deployments my-release-aws-cluster-autoscaler) 更新 nodes 参数

        - --nodes=1:10:terraform-eks-demo20190922124246790200000007

【讨论】:

    猜你喜欢
    • 2020-09-01
    • 2019-12-26
    • 2021-06-16
    • 2020-07-31
    • 2020-02-26
    • 2020-03-27
    • 2020-05-10
    • 2022-12-19
    • 2018-11-14
    相关资源
    最近更新 更多