【问题标题】:Tiller: dial tcp 127.0.0.1:80: connect: connection refusedTiller:拨打 tcp 127.0.0.1:80:连接:连接被拒绝
【发布时间】:2020-02-21 01:18:11
【问题描述】:

从我升级我的 eks terraform 脚本版本开始。我不断地出错。

目前我遇到了这个错误:

错误:获取http://localhost/api/v1/namespaces/kube-system/serviceaccounts/tiller:拨打tcp 127.0.0.1:80:连接:连接被拒绝

错误:获取http://localhost/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/tiller:拨打tcp 127.0.0.1:80:连接:连接被拒绝

脚本运行良好,我仍然可以将它与旧版本一起使用,但我正在尝试升级集群版本。

provider.tf

provider "aws" {
  region  = "${var.region}"
  version = "~> 2.0"

  assume_role {
    role_arn = "arn:aws:iam::${var.target_account_id}:role/terraform"
  }
}

provider "kubernetes" {
  config_path = ".kube_config.yaml"
  version = "~> 1.9"
}

provider "helm" {
  service_account = "${kubernetes_service_account.tiller.metadata.0.name}"
  namespace       = "${kubernetes_service_account.tiller.metadata.0.namespace}"


  kubernetes {
    config_path = ".kube_config.yaml"
  }
}

terraform {
  backend "s3" {

  }
}

data "terraform_remote_state" "state" {
  backend = "s3"
  config = {
    bucket         = "${var.backend_config_bucket}"
    region         = "${var.backend_config_bucket_region}"
    key            = "${var.name}/${var.backend_config_tfstate_file_key}" # var.name == CLIENT
    role_arn       = "${var.backend_config_role_arn}"
    skip_region_validation = true
    dynamodb_table = "terraform_locks"
    encrypt        = "true"
  }
}

kubernetes.tf

resource "kubernetes_service_account" "tiller" {
  #depends_on = ["module.eks"]

  metadata {
    name      = "tiller"
    namespace = "kube-system"
  }

  automount_service_account_token = "true"
}

resource "kubernetes_cluster_role_binding" "tiller" {
  depends_on = ["module.eks"]

  metadata {
    name = "tiller"
  }

  role_ref {
    api_group = "rbac.authorization.k8s.io"
    kind      = "ClusterRole"
    name      = "cluster-admin"
  }

  subject {
    kind = "ServiceAccount"
    name = "tiller"

    api_group = ""
    namespace = "kube-system"
  }
}

terraform 版本:0.12.12 eks 模块版本:6.0.2

【问题讨论】:

    标签: kubernetes terraform kubernetes-helm terraform-provider-aws


    【解决方案1】:

    这意味着您的 .kube_config.yml 中的 server: 条目指向错误的端口(甚至可能是错误的协议,因为正常的 kubernetes 通信通过 https 并通过双向 TLS 身份验证进行保护),或者存在不再是 监听 localhost:80 的代理,或者 --insecure-port 曾经是 80 而现在是 0(强烈推荐)

    遗憾的是,没有更多细节,没有人可以猜测正确的值是什么或应该更改为

    【讨论】:

    • 旧版本运行良好。您能否让我知道我应该发布哪个脚本来获取错误。我也检查了 github 问题。没有什么对我有用。
    • 这不完全是我们需要的脚本,它更多的是上下文信息:.kube_config.yml 是从哪里来的?任何人都可以访问您的 kubernetes 集群吗?那个 terraform 命令是在主节点上运行的吗?你是唯一一个会对系统进行更改的人吗?问题列表几乎是无穷无尽的,因为我们不在您的机器上以了解发生了什么变化
    【解决方案2】:

    当我错过为带有集群的 terraform 配置凭据并且无法访问集群时,这发生在我身上。如果你配置你的 kubectl / 你使用什么来进行身份验证,这应该可以解决。

    【讨论】:

      【解决方案3】:

      我确信需要在您的 terraform 配置中设置 Kubernetes 提供程序。 像这样的:

      provider "kubernetes" { 
        config_path    = module.EKS_cluster.kubeconfig_filename
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-12
        • 2018-12-26
        • 2019-12-25
        • 1970-01-01
        • 2020-11-22
        • 1970-01-01
        • 2020-12-31
        • 2017-09-29
        相关资源
        最近更新 更多