Docker Desktop + Kubernetes + Dashboard(Not enough data to create auth info structure问题解决)

由谷歌开发的Kubernetes作为当下最热门的容器编排工具,已经被内置在Docker Desktop中, 右击docker图标选择About Docker Desktop可查看Docker Engine以及Kubernetes的版本。


p1.png

在设置中有一项Kubernetes,点击可直接开启,但因为Docker默认从。。下载镜像,在国内网速较慢,所以会导致Kubernetes一直处于starting的状态。

image

解决方法:使用阿里云提前拉取镜像

链接及源码:GitHub - AliyunContainerService/k8s-for-docker-desktop: 为Docker Desktop for Mac/Windows开启Kubernetes和Istio - Enable Kubernetes/Istio on Docker Desktop in China

步骤:

1. 配置镜像加速服务:打开Setting中Docker Engine标签

修改registry mirror=["https://registry.docker-cn.com"]或是注册使用阿里云镜像服务,改为registry mirror=["https://.mirror.aliyuncs.com"]

2. 下载镜像

git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git

默认下载为v1.16.5版本,请检查与自己docker desktop适配的版本,并根据git checkout <版本>进行调整。

进入k8s-for-docker-desktop目录中并运行

3. 打开Powershell,先以管理员身份运行Set-ExecutionPolicy RemoteSigned打开运行ps脚本的权限,切换回下载目录,运行

.\load_images.ps1

该文件内容为

foreach($line in Get-Content .\images.properties) {

    $data = $line.Split('=')

    $key = $data[0];

    $value = $data[1];

    Write-Output "$key=$value"

    docker pull ${value}

    docker tag ${value} ${key}

    docker rmi ${value}

}

我们可以知道它从images.properties中读取了相应的镜像名,完成了镜像拉取,重写标签的过程。在下图中我们也可以看到例如第一个镜像key=k8s.gcr.io/pause:3.1, value=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1

image

可使用docker images检查结果

3. 设置中勾选Enable Kubernetes并等待其运行

kubectl cluster-info

检查是否成功,若成功则显示

Kubernetes master is running at https://kubernetes.docker.internal:6443 KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

安装Dashboard

k8s没有自带的GUI,为了更方便的查看集群状态,往往会安装Kubernetes Dashboard,这是一个官方开源项目(https://github.com/kubernetes/dashboard),在上面的阿里云链接中也有教程如何安装。

打开k8s-for-docker-desktop目录可以看到有一个名为kubernetes-dashboard.yaml的文件,通过运行kubectl create -f kubernetes-dashboard.yaml可以生成相关的服务。

运行kubectl proxy,默认端口为8001,打开网址http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/查看如下

image
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
echo $TOKEN

生成Token,可直接复制登录,或在~/.kube/config中使用如下指令添加Token,并使用该config文件登录。

kubectl config set-credentials docker-desktop --token="${TOKEN}"

注意:如果还是遇到Internal error (500): Not enough data to create auth info structure.请打开你的config文件仔细检查,确保上述命令中的docker-desktop名字正确,使得你的Token和client-certificate-data, client-key-data在同一name的user下!!!

image

登录成功

image

你可能感兴趣的:(Docker Desktop + Kubernetes + Dashboard(Not enough data to create auth info structure问题解决))