使用Kubernetes的AKS:在Ubuntu上通过azure-cli登录到群集后无法连接到群集节点

时间:2018-04-12 08:43:57

标签: azure kubernetes containers

在尝试获取有关在执行创建群集并获取凭据后使用AKS(Azure连接服务)为Kubernetes创建的节点的信息时,我遇到了问题。

我在ubuntu linux机器上使用azure-cli。

按照网址创建群集:https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough

使用命令kubectl get nodes时出现以下错误 执行使用

连接到群集后
az aks get-credentials --resource-group <resource_group_name> --name <cluster_name>

错误:

  kubectl get nodes
  

来自服务器的错误(InternalError):服务器上的错误(&#34;&#34;)阻止请求成功(获取节点)

我使用时遇到同样的错误:

kubectl get pods -n kube-system -o=wide

当我通过以下命令以另一个用户身份连接时,即

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

我将能够检索节点,即..,

 kubectl get nodes

NAME             STATUS    ROLES     AGE       VERSION

<host-name>   Ready     master    20m       v1.10.0



~$ kubectl get pods -n kube-system -o=wide

NAME                                   READY     STATUS    RESTARTS  AGE       
etcd-actaz-prod-nb1                      1/1       Running   0     

kube-apiserver-actaz-prod-nb1            1/1       Running   0

kube-controller-manager-actaz-prod-nb1   1/1       Running   0

kube-dns-86f4d74b45-4qshc                3/3       Running   0

kube-flannel-ds-bld76                    1/1       Running   0

kube-proxy-5s65r                         1/1       Running   0

kube-scheduler-actaz-prod-nb1            1/1       Running   0

但这实际上是从$ HOME / .kube / config

文件覆盖新的聚类信息

当我们连接到AKS-cluster get-credentials命令时,我错过了什么 - 让我引发错误

*Error from server (InternalError): an error on the server ("") has prevented the request from succeeding (get nodes)*

2 个答案:

答案 0 :(得分:1)

之后

az aks get-credentials -n cluster-name -g resource-group

如果应该已合并到您的本地配置:

/home/user-name/.kube/config

你可以检查你的配置吗

kubectl配置视图

并检查它是否指向正确的群集。

答案 1 :(得分:-1)

假设您在部署AKS时选择了默认配置。因此,您需要创建SSH密钥对才能登录到AKS节点。

使用“ az vm user update”将上面创建的公钥推送到AKS节点{plz会帮助您了解需要传递的所有开关。很简单)

要创建到AKS节点的SSH连接,请在AKS集群中运行帮助程序窗格。该帮助程序窗格为您提供对群集的SSH访问,然后对其他SSH节点进行访问。

要创建和使用此帮助程序窗格,请完成以下步骤: -运行debian(或任何其他容器,如centos7等)容器映像并将终端会话附加到该映像。该容器可用于与AKS群集中的任何节点创建SSH会话: kubectl运行-it --rm aks-ssh --image = debian

  • 基本的Debian映像不包含SSH组件。 apt-get更新&& apt-get安装openssh-client -y

  • 使用kubelet cmd复制私钥(您在开始时创建的私钥)。创建ssh对的计算机上必须存在kubelet工具包。 kubectl cp:/

  • 现在您将在容器位置上看到私钥文件,将私钥权限更改为600,现在可以SSH AKS节点

希望这会有所帮助。