前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >踩坑 | 在 macOS 上使用 Docker Desktop 启动 Kubernetes

踩坑 | 在 macOS 上使用 Docker Desktop 启动 Kubernetes

作者头像
江不知
发布2019-12-12 15:47:52
4.9K0
发布2019-12-12 15:47:52
举报
文章被收录于专栏:编程拯救世界编程拯救世界

安装 Docker

前往官网[1]下载 Docker Desktop 按提示进行安装。

安装 Kubernetes

点击 Docker 图标,选择 Preferences… > Kubernetes 进入 Kubernetes 配置页:

Kubernetes 配置页

然后勾选 Enable Kubernetes,点击下方 Apply 按钮,启动 Kubernetes。

踩坑一:Kubernetes is starting

这样就大功告成了?往往事情并不会这么顺利。

由于众所周知的原因,启动 Kubernetes 所需的镜像会下载失败,因此点击 Apply 后,该配置页面的右下角始终显示 Kubernetes is starting,无法正常启动。

《Docker Desktop for Mac 开启并使用 Kubernetes》[2]为该问题提供了解决方案。

我们先将该仓库拉取到本地:

git clone git@github.com:maguowei/k8s-docker-desktop-for-mac.git

然后确认一下 Docker Desktop 自带的 Kubernetes 的版本。

点击 Docker 图标,选择 About Docker Desktop,看到如下界面:

About Docker Desktop

可以看到 Kubernetes 的版本是 v1.14.6。

之后我们打开 k8s-docker-desktop-for-mac 项目下的 images 文件:

$ cat images
k8s.gcr.io/kube-proxy:v1.14.6=gotok8s/kube-proxy:v1.14.6
k8s.gcr.io/kube-controller-manager:v1.14.6=gotok8s/kube-controller-manager:v1.14.6
k8s.gcr.io/kube-scheduler:v1.14.6=gotok8s/kube-scheduler:v1.14.6
k8s.gcr.io/kube-apiserver:v1.14.6=gotok8s/kube-apiserver:v1.14.6
k8s.gcr.io/coredns:1.3.1=gotok8s/coredns:1.3.1
k8s.gcr.io/pause:3.1=gotok8s/pause:3.1
k8s.gcr.io/etcd:3.3.10=gotok8s/etcd:3.3.10

确保文件中的 Kubernetes 版本号与 Docker Desktop 自带的 Kubernetes 版本号一致后,执行命令:

./load_images.sh

该命令会帮助我们拉取启动 Kubernetes 所需的所有镜像。

命令执行完毕后,点击 Docker 图标,在 Preferences.. > Reset 界面中点击 Reset Kubernetes cluster,重启 Kubernetes。大功告成!

踩坑二:unexpected EOF

执行 kubectl 命令时出现报错:

Unable to connect to the server: unexpected EOF

在 Github 上摸到了一个相关的 Issue:Kubernetes on Mac is stuck very often. Needs restart all the time[3]。

最终的解决方案是在 Advanced 配置界面中将 Memory 调大,然后重启 Docker。

Advanced

切换 Kubernetes 集群

由于可能会存在多个集群,我们需要把集群切换为 Docker Desktop 所带的集群。

先看下有哪些集群:

kubectl config get-contexts

切换集群:

kubectl config use-context docker-for-desktop

安装 Dashboard

Kubernetes Dashboard 是 Kubernetes 集群可视化的仪表盘。

一般来说我们直接通过一行 kubectl 命令进行安装就好了:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

但由于众所周知的原因,镜像还是会下载失败,pod 始终显示 ImagePullBackOff这需要我们手动拉取所需镜像

下载 yaml 文件

先把 yaml 配置文件下载下来:

$ curl -O https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

查看镜像版本

查看 yaml 文件中的镜像版本:

$ cat kubernetes-dashboard.yaml | grep kubernetes-dashboard

这是我们需要的信息:

- name: kubernetes-dashboard
  image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

可以看到镜像版本为 v1.10.1。

拉取镜像

使用 docker pull 手动拉取镜像:

$ docker pull gcrxio/kubernetes-dashboard-amd64:v1.10.1

使用 docker tag 修改镜像名称,让镜像名与配置文件中的镜像名保持一致:

$ docker tag gcrxio/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

这样一来,配置文件所需要的镜像就已经下载到本地了。

修改镜像获取策略

但由于配置文件默认的镜像拉取方式还是从远程拉取,于是我们要在配置文件中 image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 一行后添加:

imagePullPolicy: IfNotPresent

重新安装 Dashboard

如果刚才你已经执行了:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

那么先把这个启动的 pod 删除:

$ kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

接着使用我们修改过的配置文件重新安装 Dashboard:

$ kubectl delete -f kubernetes-dashboard.yaml

启动 Dashboard 并访问

使用 kubectl 命令启动 Dashboard:

$ kubectl proxy

启动成功后,可以通过该地址访问 Dashboard:

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

进入 Dashboard 需要令牌,可以通过以下命令获取令牌:

$ kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}'

使用令牌进入 Dashboard 就可以看到如下界面啦:

Dashboard

至此,所有安装任务都已完成!

Reference

文中引用

  • [1] https://www.docker.com/products/docker-desktop
  • [2] https://user-gold-cdn.xitu.io/2019/11/9/16e4ffff3c9d77d2?w=736&h=510&f=png&s=77575
  • [3] https://github.com/docker/for-mac/issues/2717

参考资料

  • Github - Kubernetes Dashboard: https://github.com/kubernetes/dashboard
  • Issue: kubectl version can't connect to local k8s master: https://github.com/docker/for-mac/issues/2379
  • kubernetes 安装 dashboard 步骤: https://www.jianshu.com/p/073577bdec98
  • 如何启动mac版docker自带的k8s: https://www.cnblogs.com/luoluoshidafu/p/11214456.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程拯救世界 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 Docker
  • 安装 Kubernetes
    • 踩坑一:Kubernetes is starting
      • 踩坑二:unexpected EOF
      • 切换 Kubernetes 集群
      • 安装 Dashboard
        • 下载 yaml 文件
          • 查看镜像版本
            • 拉取镜像
              • 修改镜像获取策略
                • 重新安装 Dashboard
                  • 启动 Dashboard 并访问
                  • Reference
                    • 文中引用
                      • 参考资料
                      相关产品与服务
                      容器镜像服务
                      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档