gpt4 book ai didi

azure - 如何使用多个 azure kubernetes 上下文

转载 作者:行者123 更新时间:2023-12-02 06:54:20 24 4
gpt4 key购买 nike

我在 powershell 中有一个 azure 函数应用程序,专用于 kubernetes 函数。

有多个函数,但对于每个函数,我们要做的第一件事就是这样。

 az login --service-principal -u $usr -p $pwd --tenant $tenant

$config = $HOME + "/.kube/$tenant";

az account set --subscription $subscription
az aks get-credentials --overwrite-existing --name $cluster --resource-group $rg --admin --file $config
kubectl config set-context --current --namespace=$tenant

这设置了我们将在下一个 kubectl 命令中使用的上下文。

我们这样做是因为我们在多个区域有多个集群,因此每次我们收到函数应用程序的调用时,我们都需要连接到给定的集群来处理它。

问题是,当我们同时收到 2 个不同集群的 2 个请求时,最早的调用将覆盖其上下文并在错误的集群上执行 kubectl 命令。有没有办法隔离每个调用或解决方案?

最佳答案

您应该能够只使用 kubectl 的全局 --context参数(和 --kubeconfig 如果需要),例如:

az aks get-credentials -n $cluster -g $rg
kubectl get pod -n $tenant --context $cluster

如果您有两个名称相同的不同集群,则可以使用 az aks get-credentials拥有--context命令参数,然后为并发脚本执行选择一个鉴别器:

$id = "$(new-guid)"
$contextName = "$cluster-$id"
az aks get-credentials -n $cluster -g $rg --context $contextName
kubectl get pod -n $tenant --context $contextName

请注意添加 --admin获取凭据时的命令参数还将附加 -admin kubeconfig 中的名称;从而迫使您将“-admin”添加到 $contextName :

$contextName = "$cluster-$id-admin"

这有一个限制,即 az aks get-credentials不允许我们覆盖参数 name对于生成的user对象(至少据我所知, nor is it mentioned in the docs )。它的格式是“静态”并且始终是 clusterUser_{resourceGroupName}_{clusterName}clusterAdmin_{resourceGroupName}_{clusterName}如果使用 --admin .

如果您有 2 个具有完全相同的名称和资源组名称的不同集群,这实际上只是一个问题(我想知道为什么会出现这种情况,但可惜)。

您很可能会在这里看到两种不同的结果:

  • “同名对象已存在”错误,或
  • 第二次调用az aks get-credentials如果您使用 --overwrite-existing 将使用新值覆盖现有对象命令参数,导致对第一个调用集群的所有 API 调用失败,并出现 401 或 403 相关错误(至少是我的猜测)

为了解决这个问题,您可以写入特定的 kubeconfig 文件,该文件对于脚本的当前上下文/执行也是唯一的,然后使用 kubectl 的全局 --kubeconfig命令参数:

$id = "$(new-guid)"
$contextName = $kubeconfig = "$cluster-$id"
az aks get-credentials -n $cluster -g $rg --context $contextName --file $kubeconfig
kubectl get pod -n $tenant --context $contextName --kubeconfig $kubeconfig

记住将“-admin”添加到您的$contextName中,如果您使用--admin (显然,将 $contextName$kubeconfig 分配分开)。

关于azure - 如何使用多个 azure kubernetes 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74374492/

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