Terraform 使用地形将舵部署到GKE时经常出错

Terraform 使用地形将舵部署到GKE时经常出错,terraform,kubernetes-helm,Terraform,Kubernetes Helm,组成部分 吉凯恩 舵v3 地形 注意:出现以下错误,但如果我继续多次执行terraform apply/delete,它会自动解决。我正在使用谷歌云控制台,所以我的互联网不会把事情搞砸 错误类型1: 错误:读取computenework“projects/foo/global/networks/bar network”时出错:Get:dial tcp[1111:2222:4003:c03::5f]:443:connect:无法分配请求的地址 错误类型2: 读取“服务帐户”项目/foo/serv

组成部分

  • 吉凯恩
  • 舵v3
  • 地形

  • 注意:出现以下错误,但如果我继续多次执行
    terraform apply/delete
    ,它会自动解决。我正在使用谷歌云控制台,所以我的互联网不会把事情搞砸

    错误类型1

    错误:读取computenework“projects/foo/global/networks/bar network”时出错:Get:dial tcp[1111:2222:4003:c03::5f]:443:connect:无法分配请求的地址

    错误类型2

    读取“服务帐户”项目/foo/servicecomports/bar时出错-sa@foo.iam.gserviceaccount.com“:Get:拨号tcp[1111:2222:4003:c04::5f]:443:connect:无法分配请求的地址

    错误类型3

    错误:检索可用容器群集版本时出错:Get:dial tcp[1111:2222:4003:c03::5f]:443:connect:无法分配请求的地址

    错误类型4

    读取作为实例组URL返回的实例组管理器时出错:“googleapi:错误404:未找到资源'projects/foo/zones/us-central1-c/InstanceGroupManager/gke-bar-main-pool-8c2b8edd-grp',未找到,未找到”

    我不明白为什么它会随机弹出,当我重新运行相同的地形应用/删除时,它会神奇地工作得很好


    任何指导都会有所帮助。

    我遇到了完全相同的问题,经过几个小时的详细研究,我想我知道发生了什么,以及如何解决它。自从实施以下解决方案以来,我在应用/销毁操作中的成功率达到了100%

    问题:

    出于某种原因,Terraform通过A记录接受AAAA(IPv6)记录。您可以在错误响应中看到这一点,因为*.googleapis.com的记录是一个IPv6地址。由于谷歌云控制台没有启用IPv6,这就是为什么会出现此错误。这似乎是Go的问题,而不是基于我搜索类似错误的Terraform本身

    解决方案:

    除了更改Terraform中的源代码之外,您还可以修改/etc/hosts文件,以使用IPv4地址响应每个API Terraform调用。由于云Shell托管在谷歌云上,因此您可以使用private.googleapis.com范围(199.36.153.8/30)。要自动执行此操作,只需将以下内容放入主目录中的.customize_环境文件中:

    export APIS="googleapis.com www.googleapis.com storage.googleapis.com iam.googleapis.com container.googleapis.com cloudresourcemanager.googleapis.com"
    for i in $APIS
    do
      echo "199.36.153.10 $i" >> /etc/hosts
    done
    

    作为参考,我创建了一个跟踪它的工具。

    你的意思是<代码>导出API=(“googleapis.com”“www.googleapis.com”“storage.googleapis.com”“iam.googleapis.com”“container.googleapis.com”“cloudresourcemanager.googleapis.com”)对于i in$APIS do echo“199.36.153.10$i”>/etc/hosts done和对于me 216.58.212.164worked@IddanAaronsohn在您的示例中,您是否使用Google Cloud Shell?因为如果您使用Cloud Shell并将其放置在.customize_环境文件中,它就可以工作。216.58.212.164是一个短暂的IP,可能会改变,所以我不会依赖这个。如果您确实在非云shell上,更好的方法是将DNS配置为根本不返回AAAA记录。如何将DNS配置为根本不返回AAAA记录?