使用Terraform的AKS-等待完成时出错

时间:2019-02-27 10:58:15

标签: azure terraform azure-aks terraform-provider-azure

我一直在尝试使用Terraform部署Aks集群。以下是我的模板文件:
main.tf

locals {
  cluster_name               = "aks-${random_integer.random_int.result}"
  agents_resource_group_name = "MC_${var.resource_group_name}_${local.cluster_name}_${azurerm_resource_group.k8s.location}"
}

resource "azurerm_resource_group" "k8s" {
  name     = "${var.resource_group_name}"
  location = "${var.resource_group_location}"
}

#Keep the AKS name (and dns label) somewhat unique
resource "random_integer" "random_int" {
  min = 100
  max = 999
}

resource "azurerm_kubernetes_cluster" "k8s" {
  name                = "${local.cluster_name}"
  location            = "${azurerm_resource_group.k8s.location}"
  resource_group_name = "${azurerm_resource_group.k8s.name}"
  dns_prefix          = "${local.cluster_name}"

  linux_profile {
    admin_username = "${var.linux_admin_username}"

    ssh_key {
      key_data = "${file("${var.linux_admin_ssh_publickey}")}"
    }
  }

  agent_pool_profile {
    name            = "agentpool"
    count           = "${var.node_count}"
    vm_size         = "${var.vm_size}"
    os_type         = "Linux"
    os_disk_size_gb = "${var.os_disk_size_gb}"
  }

  service_principal {
    client_id     = "${var.client_id}"
    client_secret = "${var.client_secret}"
  }

  tags {
    Environment = "Production"
  }
}

data "azurerm_resource_group" "agents" {
  name = "${local.agents_resource_group_name}"

  depends_on = [
    "azurerm_kubernetes_cluster.k8s",
  ]
}  

这些变量都是正确的,因为我对此没有任何错误。大约2m之后我一直收到的错误是

  

azurerm_kubernetes_cluster.k8s:等待完成的错误   托管的Kubernetes集群“ aks-136”(资源组“ azure-aks”):   Code =“ NotFound” Message =“ resources.DeploymentsClient#Get:失败   响应请求:StatusCode = 404-原始错误:   autorest / azure:服务返回了错误。状态= 404   代码= \“ DeploymentNotFound \”消息= \“部署   找不到'898a5255-0c27-4eed-963a-65183e7d693c”。\“

似乎azure API拒绝响应,也许terraform将其识别为错误和恐慌。

2 个答案:

答案 0 :(得分:0)

从错误显示中,似乎您的部署失败。我这方面有两个可能的原因。一是您的配额还不够。另一个是您部署的区域至少当前不支持AKS。

答案 1 :(得分:0)

尝试以下代码

    #variables file
arm_subscription_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"

arm_client_id = "XXXXXXXXXXXXXXXXXXXXXXX"

arm_client_secret = "XXXXXXXXXXXXXXXXXXX"

arm_tenent_id = "XXXXXXXXXXXXXXX"

resource_group_name = "k8terraform"

location = "East US"

cluster_name = "k8terraform"

dns_prifix = "k8terraform1232"

#Running on a Windows add front slash to ignore characters 
ssh_public_key = "E:\\DevOps\\Terraform\\Azure\\AKS\\aksdeploy"

agent_count = 3

#Variable
variable "arm_subscription_id" {
}

variable "arm_client_id" {
}

variable "arm_client_secret" {
}

variable "arm_tenent_id" {
}

variable "location" {
}

variable "cluster_name" {
}

variable "dns_prifix" {
}

variable "ssh_public_key" {
}

variable "agent_count" {
    default = 3
}

variable "resource_group_name" {
}

#Add Azure Provider
provider "azurerm" {
}

#Create Resource Group
resource "azurerm_resource_group" "k8terraform" {
    name = "${var.resource_group_name}"
    location = "${var.location}"
}

#Create AKS Cluster
resource "azurerm_kubernetes_cluster" "k8cluster" {
    name = "${var.cluster_name}"
    location = "${azurerm_resource_group.k8terraform.location}"
    resource_group_name = "${azurerm_resource_group.k8terraform.name}"
    dns_prefix = "${var.dns_prifix}"

    linux_profile{
        admin_username = "localadmin"
        ssh_key{
            key_data = "${file("${var.ssh_public_key}")}"
        }
    }

    agent_pool_profile{
        name = "aksterraform"
        count = "${var.agent_count}"
        vm_size = "Standard_B2ms"
        os_type = "Linux"
        os_disk_size_gb = 30
    }

    service_principal{
        client_id = "${var.arm_client_id}"
        client_secret = "${var.arm_client_secret}"
    }
    tags{
        Environment = "Development"
    }
}

#Outputs -Optional
#output "kube_config" {
#  value = "${azurerm_kubernetes_cluster.k8s.kube_config_raw}"
#}

#output "host" {
#  value = "${azurerm_kubernetes_cluster.k8s.kube_config.0.host}"
#}