【问题标题】:Kubectl not working when AKS API authorized ranges are in place当 AKS API 授权范围到位时,Kubectl 不起作用
【发布时间】:2020-07-19 20:49:43
【问题描述】:

我们正在 Azure 中的 k8s 集群上实施安全性(托管 Kubernetes - AKS)。
集群通过ARM模板部署,配置如下:
1 个节点、可用性集、标准负载均衡器、基于 Nginx 的入口控制器、已部署的一组应用程序。
根据document,我们更新了集群以保护 API 服务器免受整个互联网的影响:

    az aks update --resource-group xxxxxxxx-xxx-xx-xx-xx-x -n xx-xx-xxx-aksCluster 
--api-server-authorized-ip-ranges XX.XX.X.0/24,XX.XX.X.0/24,XX.XXX.XX.0/24,XX.XXX.XXX.XXX/32 
--subscription xxxxx-xxx-xxx-xxx-xxxxxx

操作成功完成。

当试图从 pod 中获取日志时,会发生以下错误:

    kubectl get pods -n lims-dev

    NAME                                 READY   STATUS    RESTARTS   AGE
    XXXX-76df44bc6d-9wdxr             1/1     Running   0          14h

    kubectl logs XXXXX-76df44bc6d-9wdxr -n lims-dev

    Error from server: Get https://aks-agentpool-XXXXXX-1:10250/containerLogs/XXXX/XXXXX-
76df44bc6d-9wdxr/listener: dial tcp 10.22.0.35:10250: i/o timeout

尝试使用 Azure DevOps 进行部署时,会出现同样的错误:

            2020-04-07T04:49:49.0409528Z ##[error]Error: error installing: 
    Post https://xxxxx-xxxx-xxxx-akscluster-dns-xxxxxxx.hcp.eastus2.azmk8s.io:443
/apis/extensions/v1beta1/namespaces/kube-system/deployments: 
dial tcp XX.XX.XXX.142:443: i/o timeout

当然,我运行 kubectl 的子网已添加到授权范围。
我正在尝试了解问题的根源。

【问题讨论】:

  • 您是否将运行命令的机器的公共 IP 放在 api-server-authorized-ip-ranges 中? Azure DevOps 也一样吗?

标签: azure azure-aks kubernetes-apiserver


【解决方案1】:

您还需要在创建 AKS 集群时指定 --load-balancer-outbound-ips 参数。您的 Pod 将使用此 IP 与外部世界以及 AKS API 服务器进行通信。见here

【讨论】:

  • 谢谢,但我们已经在集群上实现了它,并且已经存在集群。
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 2022-11-08
  • 1970-01-01
相关资源
最近更新 更多