Terraform Kubernetes持久存储设置没有连接,拨号tcp错误



当我尝试根据kubernetes_persistent_volume_claim

创建持久声明和卷时,我得到了这个错误错误:Post "http://localhost/api/v1/namespaces/default/persistentvolumeclaims": dial tcp [::1]:80: connectex: No connection could因为目标机主动拒绝它。

我还尝试了一个azure磁盘的假脱机,并通过这里概述的使用azure托管磁盘的持久卷创建了一个卷

我的terraform kubernetes提供程序看起来像这样:

provider "kubernetes" {
alias                  = "provider_kubernetes"
host                   = module.kubernetes-service.kube_config.0.host
username               = module.kubernetes-service.kube_config.0.username
password               = module.kubernetes-service.kube_config.0.password
client_certificate     = base64decode(module.kubernetes-service.kube_config.0.client_certificate)
client_key             = base64decode(module.kubernetes-service.kube_config.0.client_key)
cluster_ca_certificate = base64decode(module.kubernetes-service.kube_config.0.cluster_ca_certificate)

}

我不相信它在我的RG中甚至打不到K8。是我错过了什么,或者也许我不明白这是如何把它放在一起正确的方式。我有RG与K8资源在相同的地形,创建良好,但当涉及到设置持久存储时,我无法克服错误。

提供程序是别名的,因此首先要确保所有kubernetes资源使用正确的提供程序。您必须为每个资源指定别名提供程序。

resource "kubernetes_cluster_role_binding" "current" {
provider = kubernetes.provider_kubernetes
# [...]
}

另一种可能性是,localhost连接错误可能是,因为Kubernetes集群资源有一个待处理的更改,导致其返回属性处于应用后已知状态。

尝试terraform plan --target module.kubernetes-service.kube_config,看看这是否显示了对K8s资源的任何未决更改(可能取决于)。更好的做法是直接将Kubernetes集群资源作为目标。

如果是,首先单独应用这些更改:terraform apply --target module.kubernetes-service.kube_config,然后运行第二个不使用--target的应用,如下所示:terraform apply

如果集群资源没有挂起的更改,检查模块是否返回正确的凭据。还要仔细检查base64decode的使用是否正确。

尝试terraform计划——目标模块。kubernetes-service。kube_config查看是否显示了对K8s资源的任何挂起的更改(可能取决于)。>最好直接针对Kubernetes集群资源。

如果是,首先单独应用这些更改:terraform apply——target>module.kubernetes-service。Kube_config,然后运行第二个不带——>目标的应用,如下所示:

在我的情况下,这是一个冲突在IAM角色定义和分配导致的问题。执行terraform plan --target module.eks(模块。weeks是在地形代码中使用的模块名),然后是terraform apply --target module.eks,删除了冲突的角色定义。从地形输出中,我可以看到是哪个角色策略和角色导致了这个问题。

相关内容

  • 没有找到相关文章

最新更新