如何成功启动 Docker 自带的 Kubernetes?(2020年升级)
(2020年1月,基于 Docker Desktop 2.2.0.0 全新修订)
大家好,相对之前的文档,因最新的 Docker Desktop 升级后,有些地方不再适用,现根据最新 stable 版本,重新撰写本文档。
毕竟我们使用 Google 的东西没那么容易,希望这篇技术笔记能帮大家节省一点点时间,知道坑在哪里,以便更好的玩转 Kubernetes。具体步骤的话,大概分以下几步:
- 步骤1:安装 Docker Desktop
- 步骤2:下载 Kubernetes 镜像并启动运行
- 步骤3:下载 kubectl 工具
- 步骤4:启用 Dashboard(可选)
步骤1:安装 Docker Desktop
从 Docker 官网导航菜单,可以找到 Docker Desktop 产品页面。
备注:懒人可以参见本文末尾附件,以进行快速下载。
在官网下载时,必需先拥有 Docker 账号。注册并登录 Docker 账号后,访问 Quick Start 向导页面 ,或者者 Docker Hub 中找到社区版 Docker CE,并根据自己的操作系统选择对应的产品。
Docker Desttop for X
对于我这种新手来说,选择稳固版本就可:
- Get Docker Desktop for Mac (Stable)
- Get Docker Desktop for Windows (stable)
不同的版本内置的 kubernetes 版本不一样,请在安装完 Docker Desktop 后到关于对话框查看具体的版本号。
- Docker Version 2.2.0.0 (42247) 》kubernetes 1.15.5
- Docker Version 2.1.0.4 (39773) 》kubernetes 1.14.7
- Docker 18.06.1-ce 》kubernetes 1.10.3
About Docker Desktop
步骤2:下载 Kubernetes 镜像并启动运行
根据目前我用的版本 Version 2.2.0.0 (42247) 集成 Kubernetes: v1.15.5。我要想把 Kubernetes 启动起来,需要先下载 Kubernetes 组件的镜像,而后再启用。
由于在阿里云上,有同步镜像的组件,我们就不需要翻到官网下载了。借鉴网上找到脚本 k8s-deploy,进行改良一下,加入了 Dashboard 组件进去。大家假如只使用 kubectl 来控制 Kubernetes 的话,可以自己将这部分去掉。对于新手来说,可能有个网页界面,看着舒服些。
另外,为了更顺畅的运行,可进入状态栏图标的下拉菜单项 “Preferences”,打开首选项对话框,选择“Resources > ADVANCED”,略微调大一点运行资源:
Resources > ADVANCED 配置
再在 Docker Engine 的配置脚本中,增加国内的镜像加速器地址(比方Docker-cn、阿里云或者中科大),从而提升获取 Docker 官方镜像的速度。你可以配置一个或者多个地址。
{ "debug": true, "experimental": false, "registry-mirrors": [ "https://registry.docker-cn.com", "https://xxxxxxxx.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn" ]}备注:阿里云的镜像加速器地址,参见 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors ,而后将 xxxxxxxx 变更为你获取到的地址。
Docker Engine 配置
现在,创立一个拉取 Kubernetes 镜像的脚本文件。
macOS 平台:docker-images-k8s.sh
#!/bin/bashset -eKUBE_VERSION=v1.15.5KUBE_DASHBOARD_VERSION=v1.10.1KUBE_PAUSE_VERSION=3.1ETCD_VERSION=3.3.10COREDNS_VERSION=1.3.1GCR_URL=k8s.gcr.ioALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers# get imagesimages=(kube-proxy:${KUBE_VERSION}kube-scheduler:${KUBE_VERSION}kube-controller-manager:${KUBE_VERSION}kube-apiserver:${KUBE_VERSION}pause:${KUBE_PAUSE_VERSION}etcd:${ETCD_VERSION}coredns:${COREDNS_VERSION}kubernetes-dashboard-amd64:${KUBE_DASHBOARD_VERSION})for imageName in ${images[@]} ; dodocker pull $ALIYUN_URL/$imageNamedocker tag $ALIYUN_URL/$imageName $GCR_URL/$imageNamedocker rmi $ALIYUN_URL/$imageNamedonedocker images备注:假如你查看到的 Dashboard 有新版本了,修改一下脚本中的 KUBE_DASHBOARD_VERSION 就可。
接下来,我们添加文件的执行权限,并运行一下这个脚本:
$ chmod +x docker-images-k8s.sh$ ./docker-images-k8s.sh看到最终的运行结果:
docker images
这时候我们再打开首选项对话框,选择“Kubernetes”,勾选 Enable Kubernetes 并
Apply & Restart 一下,即可以看到 Kubernetes 已正常运行了。
Enable Kubernetes
注意:针对老版本 Kubernetes 1.10.3 版本,请使用以下版本配置 docker-images-k8s-1.10.3.sh:
#!/bin/bashset -eKUBE_VERSION=v1.10.3KUBE_DASHBOARD_VERSION=v1.10.1KUBE_PAUSE_VERSION=3.1ETCD_VERSION=3.1.12DNS_VERSION=1.14.8GCR_URL=k8s.gcr.ioALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containersimages=(kube-proxy-amd64:${KUBE_VERSION}kube-scheduler-amd64:${KUBE_VERSION}kube-controller-manager-amd64:${KUBE_VERSION}kube-apiserver-amd64:${KUBE_VERSION}pause-amd64:${KUBE_PAUSE_VERSION}etcd-amd64:${ETCD_VERSION}k8s-dns-sidecar-amd64:${DNS_VERSION}k8s-dns-kube-dns-amd64:${DNS_VERSION}k8s-dns-dnsmasq-nanny-amd64:${DNS_VERSION}kubernetes-dashboard-amd64:${KUBE_DASHBOARD_VERSION}) for imageName in ${images[@]} ; dodocker pull $ALIYUN_URL/$imageNamedocker tag $ALIYUN_URL/$imageName $GCR_URL/$imageNamedocker rmi $ALIYUN_URL/$imageNamedonedocker imagesWindows 平台:docker-images-k8s.ps1
使用 PowerShell 来执行脚本。
首先创立一个镜像对应表文件 images.properties:
k8s.gcr.io/pause:3.1=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1k8s.gcr.io/kube-controller-manager:v1.15.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.5k8s.gcr.io/kube-scheduler:v1.15.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.5k8s.gcr.io/kube-proxy:v1.15.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.5k8s.gcr.io/kube-apiserver:v1.15.5=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.5k8s.gcr.io/etcd:3.3.10=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10k8s.gcr.io/coredns:1.3.1=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1=registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1而后在相同目录下,创立脚本 docker-images-k8s.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}}并执行脚本:
.\docker-images-k8s.ps1备注:假如由于安全策略而无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。
步骤3:下载 kubectl 工具
根据你电脑的操作系统,从 github 上直接下载指定平台版本的 kubectl。
macOS 平台:
- kubernetes 1.15.5 下载地址:kubernetes-client-darwin-amd64.tar.gz
- kubernetes 1.14.7 下载地址:kubernetes-client-darwin-amd64.tar.gz
- kubernetes 1.10.3 下载地址: kubernetes-client-darwin-amd64.tar.gz
下载后解压 kubectl 到某个目录下。而后打开终端命令行,进入这个目录,执行以下脚本,将其变更为可执行命令,同时移动到系统特定目录下。
$ tar zxvf kubernetes-client-darwin-amd64.tar.gz$ cd ./kubernetes/client/bin$ chmod +x kubectl && mv kubectl /usr/local/bin/kubectlWindows 平台:
- kubernetes 1.15.5 下载地址:kubernetes-client-windows-amd64.tar.gz
- kubernetes 1.14.7 下载地址:kubernetes-client-windows-amd64.tar.gz
- kubernetes 1.10.3 下载地址: kubernetes-client-windows-amd64.tar.gz
下载后解压 kubectl.exe 文件到 C:\Windows\System32 目录下。
我们可以看下 kubectl 的版本号:
$ kubectl versionClient Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:07:57Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}步骤4:启用 Dashboard(可选)
需要注意的是,由于 Dashboard 的版本是单独演进的,参见 kubernetes/dashboard 。当前的稳固版本 v1.10.1,即将发布全新更新的 v2.0.0。
可以在 kubernetes-dashboard.yaml 文件查看到使用的容器镜像版本。
...image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1...接下来,我们要想启动 Kubernetes Dashboard,还得在集群中部署一下 kubernetes-dashboard.yaml。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yamlsecret/kubernetes-dashboard-certs createdserviceaccount/kubernetes-dashboard createdrole.rbac.authorization.k8s.io/kubernetes-dashboard-minimal createdrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal createddeployment.apps/kubernetes-dashboard createdservice/kubernetes-dashboard created部署成功后,启动 Kubernetes API Server 访问代理商。
$ kubectl proxyStarting to serve on 127.0.0.1:8001这时候,打开浏览器,通过如下 URL 访问 Kubernetes Dashboard:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview?namespace=default
Kubernetes Dashboard 登录
通过以下脚本,配置访问控制台所需的令牌。
macOS 平台:
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')kubectl config set-credentials docker-desktop --token="${TOKEN}"echo $TOKENWindows 平台:
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]kubectl config set-credentials docker-desktop --token="${TOKEN}"echo $TOKEN复制生成的令牌字符串,并在登录对话框中选择“令牌”方式登录后,粘贴到输入框中,登录就可。
Kubernetes Dashboard 首页
要想重新找到令牌字符串,可以查看 kubeconfig 文件。
macOS 平台:
$HOME/.kube/config可以使用 “shift + command + .” 命令查看隐藏目录,并找到文件 ~/.kube/config 。
- Windows 平台:
%UserProfile%\.kube\config找到 kubeconfig 文档后,在文档末尾即可以发现刚生成的令牌。
token: eyJh....UIUT-GFkv....WDtO-XesQ....5Kwh-ONGgbgAQFIVf0MdA好的,那就详情到这里。
假如在使用 Docker 中还是出现各种异常,可以考虑使用状态栏图标的下拉菜单项 “Troubleshoot”,打开故障排除对话框,以处理各种疑难杂症。
Troubleshoot
恭喜您,成功启动 Kubernetes 的学习之路了。
附件
对于文章中提到的安装文件或者脚本,下载仍有困难的,也可以使用我百度网盘中的备份。
- 链接: https://pan.baidu.com/s/1PaHBjwXFD_Gu9RU0CxhQFw
- 提取码: drs8
参考文档
- 阿里云容器服务 k8s-for-docker-desktop
- cookcodeblog k8s-deploy
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 如何成功启动 Docker 自带的 Kubernetes?(2020年升级)