gpt4 book ai didi

azure - Kubernetes 虚拟节点池虚拟机意外费用

转载 作者:行者123 更新时间:2023-12-02 08:20:46 25 4
gpt4 key购买 nike

我在 Azure 中使用 Kubernetes 和虚拟节点,这是一个使用 Azure 容器实例创建虚拟节点的插件。

设置此功能的说明需要创建一个 AKSNet/AKSSubnet,它似乎会自动附带一个名为类似的 VMSS。 aks-control-xxx-vmss 我按照下面链接上的说明进行操作。

https://learn.microsoft.com/en-us/azure/aks/virtual-nodes-cli

这配备了一个单实例虚拟机,无论我创建什么容器实例,我都需要支付全价,并且对于我配置到虚拟节点池上的每个容器实例,即使它们只适合 1 个虚拟机,我也要支付额外费用。这些资源似乎不相关。

我目前正在向 Microsoft 提出意外账单,但过程非常缓慢,因此我返回此处以了解其他人是否有过这种经历?

我的主要问题是:

  • 我可以在没有 VMSS 的情况下使用 Azure 容器实例吗?
  • 如果没有,我可以以某种方式让这个虚拟机对我的集群可见,这样我至少可以用它来配置容器并从中获得一些值(value)?
  • 我刚刚做错了什么吗?

更新,注意:这不是我的控制节点,它是一个 B2,我可以看到我的系统容器在其上运行。

任何建议都会有很大帮助。

最佳答案

Can I use Azure Container Instances without the VMSS?

目前,在 AKS 群集中,如果没有 VirtualMachineScaleSets 类型的节点池,您无法拥有虚拟节点。或AvailabilitySet 。 AKS 群集至少有一个节点,即运行 Kubernetes 节点组件和容器运行时的 Azure 虚拟机 (VM)。 [Reference ] 每个 AKS 群集必须包含至少一个系统节点池,其中至少有一个节点。系统节点池的主要目的是托管关键系统 Pod,例如 CoreDNS , kube-proxymetrics-server 。但是,如果您希望 AKS 集群中只有一个池,则可以在系统节点池上安排应用程序 Pod。

有关系统节点池的更多信息,请查看this document .

事实上,如果您运行 kubectl get pods -n kube-system -o wide您将看到在 VMSS 支持的节点池节点上运行的所有系统 pod,包括将集群连接到虚拟节点的 aci-connector-linux-xxxxxxxx-xxxxx pod,如下所示:

NAME                                  READY   STATUS    RESTARTS   AGE   IP            NODE                                NOMINATED NODE   READINESS GATES
aci-connector-linux-859d9ff5-24tgq 1/1 Running 0 49m 10.240.0.30 aks-nodepool1-29819654-vmss000000 <none> <none>
azure-cni-networkmonitor-7zcvf 1/1 Running 0 58m 10.240.0.4 aks-nodepool1-29819654-vmss000000 <none> <none>
azure-ip-masq-agent-tdhnx 1/1 Running 0 58m 10.240.0.4 aks-nodepool1-29819654-vmss000000 <none> <none>
coredns-autoscaler-6699988865-k7cs5 1/1 Running 0 58m 10.240.0.31 aks-nodepool1-29819654-vmss000000 <none> <none>
coredns-d4866bcb7-4r9tj 1/1 Running 0 49m 10.240.0.12 aks-nodepool1-29819654-vmss000000 <none> <none>
coredns-d4866bcb7-5vkhc 1/1 Running 0 58m 10.240.0.28 aks-nodepool1-29819654-vmss000000 <none> <none>
coredns-d4866bcb7-b7bzg 1/1 Running 0 49m 10.240.0.11 aks-nodepool1-29819654-vmss000000 <none> <none>
coredns-d4866bcb7-fltbf 1/1 Running 0 49m 10.240.0.29 aks-nodepool1-29819654-vmss000000 <none> <none>
coredns-d4866bcb7-n94tg 1/1 Running 0 57m 10.240.0.34 aks-nodepool1-29819654-vmss000000 <none> <none>
konnectivity-agent-7564955db-f4fm6 1/1 Running 0 58m 10.240.0.4 aks-nodepool1-29819654-vmss000000 <none> <none>
kube-proxy-lntqs 1/1 Running 0 58m 10.240.0.4 aks-nodepool1-29819654-vmss000000 <none> <none>
metrics-server-97958786-bmmv9 1/1 Running 1 58m 10.240.0.24 aks-nodepool1-29819654-vmss000000 <none> <none>

但是,您可以部署 Azure Container Instances [How-to ] 完全没有 AKS 群集。对于需要完整容器编排的场景,包括跨多个容器的服务发现、自动扩展和协调应用程序升级,我们建议Azure Kubernetes Service (AKS) .

If not can I somehow make this VM visible to my cluster so I can at least use it to provision containers onto and get some value out of it?

当然可以。事实上,如果你做 kubectl get nodes VMSS 支持的节点池中的节点(在您的情况下为 aks-control-xxx-vmss-x)显示 STATUS为“就绪”,则可用于kube-scheduler对于 scheduling工作负载。请查看this document .

如果您执行kubectl describe node virtual-node-aci-linux您应该在输出中找到以下内容:

...
Labels: alpha.service-controller.kubernetes.io/exclude-balancer=true
beta.kubernetes.io/os=linux
kubernetes.azure.com/managed=false
kubernetes.azure.com/role=agent
kubernetes.io/hostname=virtual-node-aci-linux
kubernetes.io/role=agent
node-role.kubernetes.io/agent=
node.kubernetes.io/exclude-from-external-load-balancers=true
type=virtual-kubelet
...
Taints: virtual-kubelet.io/provider=azure:NoSchedule
...

the document您正在关注的 Deploy a sample app section要在虚拟节点上调度容器,a nodeSelectortolerationDeploy a sample app section 中定义如下:

...
nodeSelector:
kubernetes.io/role: agent
beta.kubernetes.io/os: linux
type: virtual-kubelet
tolerations:
- key: virtual-kubelet.io/provider
operator: Exists
- key: azure.com/aci
effect: NoSchedule

如果您从部署 list 中删除此部分,或者不在您正在部署的工作负载的 list 中指定此部分,则相应的资源将安排在 VMSS 上-支持的节点。

Have I just done something wrong?

也许您可以根据我对您之前问题的回答来评估这个问题的答案。不过,这里还有一些内容可以帮助您理解:

如果节点没有足够的计算资源来运行请求的 Pod,则该 Pod 无法完成调度过程。除非节点池中有额外的计算资源可用,否则 Pod 无法启动。

当集群自动缩放程序发现由于节点池资源限制而无法调度 Pod 时,会增加节点池中的节点数量以提供额外的计算资源。当这些额外节点成功部署并可在节点池中使用时,Pod 就会被安排在它们上运行。

如果您的应用程序需要快速扩展,某些 Pod 可能会保持等待调度的状态,直到集群自动缩放程序部署的其他节点可以接受调度的 Pod。对于具有高突发需求的应用程序,您可以使用虚拟节点和 Azure 容器实例进行扩展。

但是,这并不意味着我们可以放弃 VMSS 或可用性集支持的节点池

关于azure - Kubernetes 虚拟节点池虚拟机意外费用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68771641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com