- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设置一个多可用区 AKS 集群,我想将我创建的静态公共(public) IP 分配给此负载均衡器。这是我所拥有的:
#### Creating a Public static IP ####
resource "azurerm_public_ip" "lb-public-ip1" {
name = "${var.public_ip_name}"
location = "${var.location}"
resource_group_name = "${var.resource_group_name}"
allocation_method = "Static"
ip_version = "IPv4"
sku = "standard"
#domain_name_label =
tags = {
Environment = "${var.environment}"
owner = "${var.resource_owner}"
created-by = "${var.policy_created_by}"
}
depends_on = ["null_resource.module_depends_on"]
}
data "azurerm_public_ip" "lb-public-ip1" {
name = "${azurerm_public_ip.lb-public-ip1.name}"
resource_group_name = "${azurerm_public_ip.lb-public-ip1.resource_group_name}"
depends_on = ["null_resource.module_depends_on"]
}
resource "null_resource" "module_depends_on" {
triggers = {
value = "${length(var.module_depends_on)}"
}
}
#### Creating AKS Cluster ####
resource "azurerm_kubernetes_cluster" "k8s" {
name = "${var.cluster_name}"
location = "${var.location}"
resource_group_name = "${var.resource_group_name}"
dns_prefix = "${var.dns_prefix}"
kubernetes_version = "1.14.8"
linux_profile {
admin_username = "ubuntu"
ssh_key {
key_data = "${var.key_data}"
}
}
default_node_pool {
availability_zones = ["1","2"]
enable_auto_scaling = true
enable_node_public_ip = false
max_count = "8"
min_count = "2"
name = "default"
node_count = "${var.node_count}"
os_disk_size_gb = "${var.os_disk_size}"
type = "VirtualMachineScaleSets"
vm_size = "Standard_DS2_v2"
}
role_based_access_control {
enabled = true
}
service_principal {
client_id = "${var.client_id}"
client_secret = "${var.client_secret}"
}
addon_profile {
kube_dashboard {
enabled = true
}
oms_agent {
enabled = "${var.oms_agent_activation}"
log_analytics_workspace_id = "${var.log_analytics_workspace_id}"
}
}
network_profile {
network_plugin = "kubenet"
load_balancer_sku = "Standard"
load_balancer_profile {
outbound_ip_address_ids = [ "${azurerm_public_ip.lb-public-ip1.id}" ]
}
}
tags = {
Environment = "${var.environment}"
Name = "${var.cluster_name}"
owner = "${var.resource_owner}"
created-by = "${var.policy_created_by}"
}
depends_on = [azurerm_public_ip.lb-public-ip1]
}
通过此设置,它创建了一个名为 kubernetes 的 AKS 集群和 LoadBalancer,并将我创建的静态公共(public) IP 分配给 LoadBalancer,而没有分配任何 LB 规则,我可以在“前端 IP 配置”下看到它还创建了另一个IP 以及所有 LoadBalancer 规则和 HealthProbes 都分配给自动创建的该 IP。除此之外,还创建了两个后端池:kubernetes(2 个虚拟机)和 aksOutboundBackendPool(2 个虚拟机)
在 Azure 文档中,它说:“默认情况下,如果未指定公共(public) IP、公共(public) IP 前缀或 IP 数量,将自动在与 AKS 群集相同的资源组中创建一个公共(public) IP。”但就我而言,我指定了 PublicIP!
我想知道为什么它自己创建另一个IP?如何跳过自动创建的 IP,而仅使用我创建并分配给 loadbalancer-profile 的 IP,以及 AKS 如何将 LoadBalancer 规则和运行状况探测分配给我分配的 IP?
拥有多个公网IP有什么必要?
最后,我将使用分配给 istio 入口网关的 PublicIP。这就是为什么我只需要一个特定的公共(public) IP。
我应该使用哪个后端池?
我只需要一个对 Prod Env 具有高可用性的 AKS 集群,以防万一一个区域中的集群出现故障,它会启动第二个区域中的集群。
如有任何帮助,我们将不胜感激。
最佳答案
据我所知,当您创建AKS并创建静态公共(public)IP以通过Terraform分配给其出站时,您只需要创建公共(public)IP和AKS集群,不需要使用数据
源和 null_resource
。所以你的代码可以改成这样:
#### Creating a Public static IP ####
resource "azurerm_public_ip" "lb-public-ip1" {
name = "${var.public_ip_name}"
location = "${var.location}"
resource_group_name = "${var.resource_group_name}"
allocation_method = "Static"
ip_version = "IPv4"
sku = "standard"
#domain_name_label =
tags = {
Environment = "${var.environment}"
owner = "${var.resource_owner}"
created-by = "${var.policy_created_by}"
}
}
#### Creating AKS Cluster ####
resource "azurerm_kubernetes_cluster" "k8s" {
name = "${var.cluster_name}"
location = "${var.location}"
resource_group_name = "${var.resource_group_name}"
dns_prefix = "${var.dns_prefix}"
kubernetes_version = "1.14.8"
linux_profile {
admin_username = "ubuntu"
ssh_key {
key_data = "${var.key_data}"
}
}
default_node_pool {
availability_zones = ["1","2"]
enable_auto_scaling = true
enable_node_public_ip = false
max_count = "8"
min_count = "2"
name = "default"
node_count = "${var.node_count}"
os_disk_size_gb = "${var.os_disk_size}"
type = "VirtualMachineScaleSets"
vm_size = "Standard_DS2_v2"
}
role_based_access_control {
enabled = true
}
service_principal {
client_id = "${var.client_id}"
client_secret = "${var.client_secret}"
}
addon_profile {
kube_dashboard {
enabled = true
}
oms_agent {
enabled = "${var.oms_agent_activation}"
log_analytics_workspace_id = "${var.log_analytics_workspace_id}"
}
}
network_profile {
network_plugin = "kubenet"
load_balancer_sku = "Standard"
load_balancer_profile {
outbound_ip_address_ids = [ "${azurerm_public_ip.lb-public-ip1.id}" ]
}
}
tags = {
Environment = "${var.environment}"
Name = "${var.cluster_name}"
owner = "${var.resource_owner}"
created-by = "${var.policy_created_by}"
}
depends_on = [azurerm_public_ip.lb-public-ip1]
}
并且会有两个后端池:aksOutboundBackendPool 和 kubernetes,以及一个出站规则:aksOutboundRule。没有磅规则和探针。一定是其他事情造成的。
关于azure - 如何仅将一个静态公共(public) IP 分配给 AKS-multi AZ 负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60003483/
我正在尝试使用 Azure cli 从以下命令中仅获取 IP 地址。但它总是带有额外的“”。 az network nic ip-config list --resource-group "RG_TE
我在 Windows 10 计算机上运行 powershell 运行 AZ REST 方法时出现问题。该脚本可以工作,甚至可以与用户帐户一起使用,但现在失败了,我不知道为什么。这是进行 AZ REST
我设计了一个 PowerShell 脚本,它能够正确配置函数应用的各种设置(包括 CORS)。Function App 可以运行并且可以从 Api 管理服务调用。 当需要配置Azure AD时,我使用
我在 Windows 10 计算机上运行 powershell 运行 AZ REST 方法时出现问题。该脚本可以工作,甚至可以与用户帐户一起使用,但现在失败了,我不知道为什么。这是进行 AZ REST
我设计了一个 PowerShell 脚本,它能够正确配置函数应用的各种设置(包括 CORS)。Function App 可以运行并且可以从 Api 管理服务调用。 当需要配置Azure AD时,我使用
我已开始使用 Azure Pipelines 和 GitHub 支持的帐户并创建了我的第一个组织。我在该组织中没有任何项目。我在 portal.azure.com 上也没有任何订阅。我想使用 Azur
我在 Windows 10 的 Powershell 中安装 Az 模块时遇到错误消息。有什么想法吗? 使用的命令: Install-Module Az -AllowClobber 错误消息: Pac
如果我运行命令 Get-AzPolicyState -PolicyAssignmentName "xxxxxxxxxxxxxxxxxxxxx" -Filter "ResourceType eq 'Mi
我想使用 CLI 启用版本控制、更改 Azure 存储帐户中的源。我从 Microsoft 文档 https://learn.microsoft.com/en-us/cli/azure/storage
powershell 中的 az 命令等价于什么 az ad sp create-for-rbac --query "{ client_id: appId, client_secret: passwo
powershell 中的 az 命令等价于什么 az ad sp create-for-rbac --query "{ client_id: appId, client_secret: passwo
我正在执行以下教程说明。我使用集成在 azure 门户中的 CLI 2.0。不是我笔记本电脑上的版本。 https://learn.microsoft.com/en-us/azure/app-serv
我必须检查某些计算机上是否安装了 Az 或 AzureRM 模块。 但是我遇到了一个问题,所有 Az 命令都可以从 PowerShell 运行,但是当我执行 Get-InstalledModule -
我正在寻找一种 'az' --query 语法,它只列出 json 字段而不是它们的值。 这将打印一个表格: az account list --query [*] -o --table Name
我正在尝试将 az cmdlet 安装到 Kudu 上以用于我的 Azure Function。我目前正在遵循本指南: How to install a PowerShell module in an
我正在寻找一种 'az' --query 语法,它只列出 json 字段而不是它们的值。 这将打印一个表格: az account list --query [*] -o --table Name
我正在尝试使用 Kubernetes,并且正在使用 AKS 和 Docker Hub。我通过 Docker Compose 设置了一个 REST 应用程序,该应用程序由九个相互通信的不同微服务组成。现
概括 Amazon RDS 有两种主要不同类型的副本,多可用区副本和只读副本,很容易找到它们的区别。 但是,只读副本已于 2018 年 1 月支持多可用区部署。 “多可用区部署”和“只读副本版本多可用
每当我运行 az acr login -n 时,我都会收到以下消息: 来自守护程序的错误响应:获取“https://acrau*****.azurecr.io/v2/”:net/http:WAITIN
请求 Cloud Shell。已成功。连接终端... Import-Module: /opt/microsoft/powershell/7/profile.ps1:13 Line | 13 |
我是一名优秀的程序员,十分优秀!