如何成功启动 Docker 自带的 Kubernetes?(2020年升级)

作者 : 开心源码 本文共7492个字,预计阅读时间需要19分钟 发布时间: 2022-05-13 共225人阅读

(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 images

Windows 平台: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/kubectl

Windows 平台:

  • 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 $TOKEN

Windows 平台:

$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年升级)

发表回复