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

您所在的位置:网站首页 docker打开失败 如何成功启动 Docker 自带的 Kubernetes?(2020年更新)

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

2024-07-16 11:24| 来源: 网络整理| 查看: 265

(2020年11月,基于 Docker Desktop 2.5.0.1 + kubernetes 1.19.3 全新修订)

大家好,相对之前的文档,因最新的 Docker Desktop 更新后,有些地方不再适用,现根据最新 stable 版本,重新撰写本文档。 毕竟我们使用 Google 的东西没那么容易,希望这篇技术笔记能帮大家节省一点点时间,知道坑在哪里,以便更好的玩转 Kubernetes。具体步骤的话,大概分以下几步:

步骤1:安装 Docker Desktop步骤2:下载 Kubernetes 镜像并启动运行步骤3:下载 kubectl 工具步骤4:启用 Dashboard(可选)

About Docker Desktop

步骤1:安装 Docker Desktop

从 Docker 官网导航菜单,可以找到 Docker Desktop 产品页面,选择指定平台的版本下载。 备注:懒人可以参见本文末尾附件,以进行快速下载。

也可以访问 Docker Hub,找到社区版 Docker CE,并根据自己的操作系统选择对应的产品。

Docker Desktop for

对于我这种新手来说,选择稳定版本即可:

Get Docker Desktop for Mac (stable)Get Docker Desktop for Windows (stable)

不同的版本内置的 kubernetes 版本不一样,请在安装完 Docker Desktop 后到关于对话框查看具体的版本号。

Docker Version 2.5.0.1 (49550) 》kubernetes 1.19.3Docker Version 2.4.0.0 (48506) 》kubernetes 1.18.8步骤2:下载 Kubernetes 镜像并启动运行

要想把 Kubernetes 启动起来,需要先下载 Kubernetes 组件的镜像。因为在阿里云上,有同步镜像的组件,我们就不需要翻到官网下载了。借鉴网上找到脚本 k8s-deploy,进行改良一下,加入了 Dashboard 组件进去。大家如果只使用 kubectl 来控制 Kubernetes 的话,可以自己将这部分去掉。对于新手来说,可能有个网页界面,看着舒服些。

另外,为了更顺畅的运行,可进入状态栏图标的下拉菜单项 “Preferences”,打开首选项对话框,选择“Resources > ADVANCED”,稍微调大一点运行资源:

Resources > ADVANCED 配置

再在 Docker Engine 的配置脚本中,添加国内的 Docker Hub、GCR、Quay 镜像加速器地址(比如七牛云、中科大、Azure、网易云、阿里云、Docker-cn等),从而提升获取 Docker 官方镜像的速度。你可以配置一个或多个地址。

代码语言:javascript复制{ "debug": true, "experimental": false, "registry-mirrors": [ "https://xxxxxxxx.mirror.aliyuncs.com", "https://reg-mirror.qiniu.com", "https://docker.mirrors.ustc.edu.cn", "https://dockerhub.azk8s.cn", "https://hub-mirror.c.163.com", "https://registry.docker-cn.com" ] }

备注:阿里云的镜像加速器地址,参见 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors ,然后将 xxxxxxxx 变更为你获取到的地址。

Docker Engine 配置

现在,创建一个拉取 Kubernetes 镜像的脚本文件。 macOS 平台:docker-images-k8s.sh

代码语言:javascript复制#!/bin/bash set -e KUBE_VERSION=v1.19.3 KUBE_PAUSE_VERSION=3.2 ETCD_VERSION=3.4.13-0 COREDNS_VERSION=1.7.0 GCR_URL=k8s.gcr.io ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers # get images images=(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}) for imageName in ${images[@]} ; do docker pull $ALIYUN_URL/$imageName docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName docker rmi $ALIYUN_URL/$imageName done # show images docker images

接下来,我们增加文件的执行权限,并运行一下这个脚本:

代码语言:javascript复制$ chmod +x docker-images-k8s.sh $ ./docker-images-k8s.sh

看到最终的运行结果:

代码语言:javascript复制REPOSITORY TAG IMAGE ID CREATED SIZE docker/desktop-kubernetes kubernetes-v1.19.3-cni-v0.8.5-critools-v1.17.0 7f85afe431d8 4 weeks ago 285MB k8s.gcr.io/kube-proxy v1.19.3 cdef7632a242 4 weeks ago 118MB k8s.gcr.io/kube-controller-manager v1.19.3 9b60aca1d818 4 weeks ago 111MB k8s.gcr.io/kube-apiserver v1.19.3 a301be0cd44b 4 weeks ago 119MB k8s.gcr.io/kube-scheduler v1.19.3 aaefbfa906bd 4 weeks ago 45.7MB k8s.gcr.io/etcd 3.4.13-0 0369cf4303ff 2 months ago 253MB k8s.gcr.io/coredns 1.7.0 bfe3a36ebd25 4 months ago 45.2MB docker/desktop-storage-provisioner v1.1 e704287ce753 7 months ago 41.8MB docker/desktop-vpnkit-controller v1.0 79da37e5a3aa 8 months ago 36.6MB k8s.gcr.io/pause 3.2 80d28bedfe5d 9 months ago 683kB

这时候稍等片刻,就可以看到 Kubernetes 已正常运行了。

另外,如果需要网页控制台界面,创建以下脚本文件(可选): **docker-images-dashboard.sh **

代码语言:javascript复制#!/bin/bash set -e KUBE_DASHBOARD_VERSION=v2.0.3 METRICS_SCRAPER=v1.0.4 KUBENETESUI_URL=kubernetesui ALIYUN_KUBENETESUI_URL=registry.cn-hangzhou.aliyuncs.com/kubernetes_ns # get images (ui) imagesui=(dashboard:${KUBE_DASHBOARD_VERSION} metrics-scraper:${METRICS_SCRAPER}) for imageName in ${imagesui[@]} ; do docker pull $ALIYUN_KUBENETESUI_URL/$imageName docker tag $ALIYUN_KUBENETESUI_URL/$imageName $KUBENETESUI_URL/$imageName docker rmi $ALIYUN_KUBENETESUI_URL/$imageName done # show images docker images

同理,我们增加文件的执行权限,并运行一下这个脚本:

代码语言:javascript复制$ chmod +x docker-images-dashboard.sh $ ./docker-images-dashboard.sh

看到最终的运行结果:

代码语言:javascript复制REPOSITORY TAG IMAGE ID CREATED SIZE kubernetesui/dashboard v2.0.3 503bc4b7440b 3 weeks ago 225MB kubernetesui/metrics-scraper v1.0.4 86262685d9ab 3 months ago 36.9MB ...

备注:

针对老版本 Kubernetes 1.18.8 版本,请使用以下版本配置:代码语言:javascript复制KUBE_VERSION=v1.18.8 KUBE_PAUSE_VERSION=3.2 ETCD_VERSION=3.4.3-0 COREDNS_VERSION=1.6.7

Windows 平台:docker-images-k8s.ps1 使用 PowerShell 来执行脚本。 首先创建一个镜像对应表文件 images.properties:

代码语言:javascript复制k8s.gcr.io/pause:3.2=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/kube-controller-manager:v1.19.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.3 k8s.gcr.io/kube-scheduler:v1.19.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.3 k8s.gcr.io/kube-proxy:v1.19.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.3 k8s.gcr.io/kube-apiserver:v1.19.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.3 k8s.gcr.io/etcd:3.4.13-0=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/coredns:1.7.0=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0

另外,如果需要网页控制台界面可增加以下镜像(可选):

代码语言:javascript复制kubernetesui/dashboard:v2.0.3=registry.cn-hangzhou.aliyuncs.com/kubernetes_ns/dashboard:v2.0.3 kubernetesui/metrics-scraper:v1.0.4=registry.cn-hangzhou.aliyuncs.com/kubernetes_ns/metrics-scraper:v1.0.4

看官方文档,dashboard:v2.0.4 应该更兼容 kubernetes:v1.19 系列版本的,但阿里源还没有,待后续有了再更新一下。

然后在相同目录下,创建脚本 docker-images-k8s.ps1:

代码语言:javascript复制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} }

并执行脚本:

代码语言:javascript复制.\docker-images-k8s.ps1

备注:如果因为安全策略而无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。

步骤3:下载 kubectl 工具

根据你电脑的操作系统,从 github 上直接下载指定平台版本的 kubectl。 macOS 平台:

kubernetes 1.19.3 下载地址:kubernetes-client-darwin-amd64.tar.gz kubernetes 1.18.8 下载地址:kubernetes-client-darwin-amd64.tar.gz

下载后解压 kubectl 到某个目录下。然后打开终端命令行,进入这个目录,执行以下脚本,将其变更为可执行命令,同时移动到系统特定目录下。

代码语言:javascript复制$ tar zxvf kubernetes-client-darwin-amd64.tar.gz $ cd ./kubernetes/client/bin $ chmod +x kubectl && mv kubectl /usr/local/bin/kubectl

Windows 平台:

kubernetes 1.19.3 下载地址:kubernetes-client-windows-amd64.tar.gz kubernetes 1.18.8 下载地址:kubernetes-client-windows-amd64.tar.gz

下载后解压 kubectl.exe 文件到 C:\Windows\System32 目录下。

我们可以看下 kubectl 的版本号:

代码语言:javascript复制$ kubectl version Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:50:19Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:41:49Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}步骤4:启用 Dashboard(可选)

需要注意的是,因为 Dashboard 的版本是单独演进的,参见 https://github.com/kubernetes/dashboard 。当前版本为 v2.0.3。

可以在 recommended.yaml 文件查看到使用的容器镜像版本。

代码语言:javascript复制... image: kubernetesui/dashboard:v2.0.3 ... image: kubernetesui/metrics-scraper:v1.0.4 ...

接下来,我们要想启动 Kubernetes Dashboard,还得在集群中部署一下 recommended.yaml。

代码语言:javascript复制kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml namespace/kubernetes-dashboard created serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubernetes-dashboard-certs created secret/kubernetes-dashboard-csrf created secret/kubernetes-dashboard-key-holder created configmap/kubernetes-dashboard-settings created role.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created

备注 如果执行此命令有问题,可从之前网页查看的 recommended.yaml 另存为本地来执行。

部署成功后,启动 Kubernetes API Server 访问代理。

代码语言:javascript复制kubectl proxy Starting to serve on 127.0.0.1:8001

这时候,打开浏览器,通过如下 URL 访问 Kubernetes Dashboard: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

Kubernetes Dashboard 登录

通过以下脚本,配置访问控制台所需的令牌。 macOS 平台:

代码语言:javascript复制TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}') kubectl config set-credentials docker-desktop --token="${TOKEN}" echo $TOKEN

Windows 平台:

代码语言:javascript复制$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 平台:

代码语言:javascript复制$HOME/.kube/config

可以使用 “shift + command + .” 命令查看隐藏目录,并找到文件 ~/.kube/config 。

Windows 平台:代码语言:javascript复制%UserProfile%\.kube\config

找到 kubeconfig 文档后,在文档末尾就可以发现刚生成的令牌。

代码语言:javascript复制 token: eyJh....UIUT-GFkv....WDtO-XesQ....5Kwh-ONGgbgAQFIVf0MdA

好的,那就介绍到这里。 如果在使用 Docker 中还是出现各种异常,可以考虑使用状态栏图标的下拉菜单项 “Troubleshoot”,打开故障排除对话框,以解决各种疑难杂症。

Troubleshoot

如果是从旧版本升级,出现始终无法正常启动时,建议 Clear / Purge Data 一下,完全从头执行一遍。

如果要检查 Pod 是否正常运行,可以考虑使用状态栏图标的下拉菜单项 “Dashboard”,就可以查看当前运行的 Pod 情况。如果有问题可以手动将相关的镜像删除,并重新拉取后,再重启 Docker 试下。

查看 Pod 运行情况

恭喜您,成功启动 Kubernetes 的学习之路了。

附件

对于文章中提到的安装文件或脚本,下载仍有困难的,也可以使用我百度网盘中的备份。

链接: https://pan.baidu.com/s/1r4fVja9HairwIlscdnCSBw 密码: r996参考文档阿里云容器服务 k8s-for-docker-desktopcookcodeblog k8s-deploy


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3