由谷歌开发的Kubernetes作为当下最热门的容器编排工具,已经被内置在Docker Desktop中, 右击docker图标选择About Docker Desktop可查看Docker Engine以及Kubernetes的版本。
在设置中有一项Kubernetes,点击可直接开启,但因为Docker默认从。。下载镜像,在国内网速较慢,所以会导致Kubernetes一直处于starting的状态。
解决方法:使用阿里云提前拉取镜像
链接及源码: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://
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
可使用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/查看如下
$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下!!!
登录成功