在Docker Destop启用k8s服务

作为目前事实上的容器编排系统标准,K8s 无疑是现代应用的基石。

本文主要是开启Docker Desktop for Win/Mac 的K8s服务。

关键词:docker,k8s

确定k8s版本

  • 需安装 Docker Desktop 的 Mac 或者 Windows 版本,如果没有请下载下载 Docker CE最新版本
  • 当前 master 分支已经在 Docker for Mac/Windows 4.4.2 (包含 Docker CE 20.10.12 和 Kubernetes 1.22.5) 版本测试通过
  • 如果需要测试其他版本,请查看 Docker Desktop版本,Docker -> About Docker Desktop

切换到对应分支

在任意目录下clonek8s-for-docker-desktop

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

这里的Kubernetes版本为 v1.22.5, 故使用 v1.22.5 分支 git checkout v1.22.5

开启K8s

为 Docker daemon 配置镜像加速,参考阿里云镜像服务 或中科大镜像加速地址https://docker.mirrors.ustc.edu.cn

从阿里云镜像服务下载 Kubernetes 所需要的镜像

在 Mac 上执行如下脚本

1
./load_images.sh

在Windows上,使用 PowerShell

1
.\load_images.ps1

说明:

  • 如果因为安全策略无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。
  • 如果需要,可以通过修改 images.properties 文件自行加载你自己需要的镜像

开启 Kubernetes,并等待 Kubernetes 开始运行

当左下角出现k8s的图标时,说明开启成功

TIPS:

在Mac上:

如果在Kubernetes部署的过程中出现问题,可以通过docker desktop应用日志获得实时日志信息:

1
2
3
pred='process matches ".*(ocker|vpnkit).*"
|| (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
/usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"

在Windows上:

如果在Kubernetes部署的过程中出现问题,可以在 C:\ProgramData\DockerDesktop下的service.txt 查看Docker日志, 在 C:\Users\yourUserName\AppData\Local\Docker下的log.txt 查看Kubernetes日志。

配置K8s

验证k8s集群状态

1
2
kubectl cluster-info
kubectl get nodes

配置K8s控制台

1
kubectl create -f kubernetes-dashboard.yaml

检查 kubernetes-dashboard 应用状态

1
kubectl get pod -n kubernetes-dashboard

开启API Server 访问代理

1
kubectl proxy

通过如下URL访问kubernetes-dashboard

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

配置Mac环境

配置控制台访问令牌

对于Mac环境

1
2
3
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN

对于Windows环境

1
2
3
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN

登录dashboard的时候选择令牌,输入上文控制台输出中的内容。

或者选择kubeconfig,路径如下

1
2
Mac: $HOME/.kube/config
Win: %UserProfile%\.kube\config

点击登陆,进入Kubernetes Dashboard