Error: Kubernetes cluster unreachable: invalid configuration: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
Error: Get "http://localhost/api/v1/namespaces/devcluster-ns": dial tcp [::1]:80: connectex: No connection could be made because the target machine actively refused it.
Error: Get "http://localhost/api/v1/namespaces/devcluster-ns/secrets/devcluster-storage-secret": dial tcp [::1]:80: connectex: No connection could be made because the target machine actively refused it.
我使用 Terraform 配置了 Azure AKS 叢集。配置完成後,進行了一些程式碼修改。對其他部分的修改工作正常,但是當增加或減少“default_node_pool”中的 pod 數量時,我們遇到了以下錯誤。
特別是,當增加或減少default_node_pool的“os_disk_size_gb,node_count”時,kubernetes提供程式問題似乎會發生。
resource "azurerm_kubernetes_cluster" "aks" {
name = "${var.cluster_name}-aks"
location = var.location
resource_group_name = data.azurerm_resource_group.aks-rg.name
node_resource_group = "${var.rgname}-aksnode"
dns_prefix = "${var.cluster_name}-aks"
kubernetes_version = var.aks_version
private_cluster_enabled = var.private_cluster_enabled
private_cluster_public_fqdn_enabled = var.private_cluster_public_fqdn_enabled
private_dns_zone_id = var.private_dns_zone_id
default_node_pool {
name = "syspool01"
vm_size = "${var.agents_size}"
os_disk_size_gb = "${var.os_disk_size_gb}"
node_count = "${var.agents_count}"
vnet_subnet_id = data.azurerm_subnet.subnet.id
zones = [1, 2, 3]
kubelet_disk_type = "OS"
os_sku = "Ubuntu"
os_disk_type = "Managed"
ultra_ssd_enabled = "false"
max_pods = "${var.max_pods}"
only_critical_addons_enabled = "true"
# enable_auto_scaling = true
# max_count = ${var.max_count}
# min_count = ${var.min_count}
}
我在provider.tf上正確指定了kubernetes和helm的provider如下,第一次分發沒有問題。
data "azurerm_kubernetes_cluster" "credentials" {
name = azurerm_kubernetes_cluster.aks.name
resource_group_name = data.azurerm_resource_group.aks-rg.name
}
provider "kubernetes" {
host = data.azurerm_kubernetes_cluster.credentials.kube_config[0].host
username = data.azurerm_kubernetes_cluster.credentials.kube_config[0].username
password = data.azurerm_kubernetes_cluster.credentials.kube_config[0].password
client_certificate = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].client_certificate, )
client_key = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].client_key, )
cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].cluster_ca_certificate, )
}
provider "helm" {
kubernetes {
host = data.azurerm_kubernetes_cluster.credentials.kube_config[0].host
# username = data.azurerm_kubernetes_cluster.credentials.kube_config[0].username
# password = data.azurerm_kubernetes_cluster.credentials.kube_config[0].password
client_certificate = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].client_certificate, )
client_key = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].client_key, )
cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].cluster_ca_certificate, )
}
}
terrafrom刷新、terraform計劃和terraform應用程式必須正常運作。
其他發現包括:在provider.tf上,閱讀“/。新增並分發“kube/config”。這似乎運作良好。但我想要的是“/。運作良好。
provider "kubernetes" {
config_path = "~/.kube/config". # <=== add this
host = data.azurerm_kubernetes_cluster.credentials.kube_config[0].host
username = data.azurerm_kubernetes_cluster.credentials.kube_config[0].username
password = data.azurerm_kubernetes_cluster.credentials.kube_config[0].password
client_certificate = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].client_certificate, )
client_key = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].client_key, )
cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config[0].cluster_ca_certificate, )
}
正如預期的那樣,當 terraform plan、terraform 刷新、terraform 應用程式時,「data.azurm_kubernetes_cluster.credentials」我看不到這個嗎?