我试图通过ACS部署Kubernetes。部署工作正常,但是一旦我尝试使用kubectl代理连接到集群,它就会失败。 每个kubectl命令都失败。
我通过SSH连接到服务器,发现只有一个容器已启动。即使使用-a,也看不到任何其他人。
任何人都知道为什么会发生这种情况?
答案 0 :(得分:0)
根据您的描述,您似乎不正确配置了服务主体
您可能需要检查以确保准确提供凭据,并且配置的服务主体具有对目标订阅的读写权限。
如果您的服务主体配置错误,那么kubernetes组件都不会以健康的方式出现。我们可以查看是否存在这个问题:
root@k8s-master-D9DE702A-0:~# journalctl -u kubelet | grep --text autorest
如果您看到如下所示的输出,则表示您尚未正确配置服务主体。
May 18 07:09:36 k8s-master-D9DE702A-0 docker[5534]: E0518 07:09:36.901937 5920 kubelet.go:1186] Cannot get Node info: failed to get external ID from cloud provider: autorest#WithErrorUnlessStatusCode: POST https://login.microsoftonline.com/1fcf418e-66ed-4c99-9449-d8e18bf8737a/oauth2/token?api-version=1.0 failed with 400 Bad Request: StatusCode=400
May 18 07:09:37 k8s-master-D9DE702A-0 docker[5534]: E0518 07:09:37.119646 5920 kubelet_node_status.go:70] Unable to construct api.Node object for kubelet: failed to get external ID from cloud provider: autorest#WithErrorUnlessStatusCode: POST https://login.microsoftonline.com/1fcf418e-66ed-4c99-9449-d8e18bf8737a/oauth2/token?api-version=1.0 failed with 400 Bad Request: StatusCode=400
有关如何为ACS-Engin Kubernetes群集创建/配置服务主体的更多信息,请参阅此Azure CLI 2.0或PowerShell。
我们可以使用CLI 2.0获取有关ACS的信息,clientId是服务主体。
C:\Users>az acs show -g k8s -n containerservice-k8s
{
"agentPoolProfiles": [
{
.
.
.
.
},
"provisioningState": "Succeeded",
"resourceGroup": "k8s",
"servicePrincipalProfile": {
"clientId": "1498b171-xxxx-xxxx-xxxx-8ef56a178b89",
"secret": null
},
"tags": null,
"type": "Microsoft.ContainerService/ContainerServices",
"windowsProfile": null
}
我们可以使用PowerShell获取服务主体:
PS C:\Users> Get-AzureRmADServicePrincipal | ?{ $_.ApplicationId -eq "1498b171-xxxx-xxxx-xxxx-8ef56a178b89" } | fl *
ServicePrincipalNames : {http://azure-cli-2017-04-13-08-16-07, 1498b171-xxxx-xxxx-xxxx-8ef56a178b89}
ApplicationId : 1498b171-xxxx-xxxx-xxxx-8ef56a178b89
DisplayName : azure-cli-2017-04-13-08-16-07
Id : d86886b9-xxxx-xxxx-xxxx-25ab57803a33
Type : ServicePrincipal