在 macOS 上使用 Docker Desktop 启动 Kubernetes 踩坑全记录

安装 Docker

下载 Docker Desktop 按提示进行安装。html

安装 Kubernetes

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

Kubernetes 配置页

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

踩坑一:Kubernetes is starting

这样就大功告成了?每每事情并不会这么顺利。因为众所周知的缘由,启动 Kubernetes 所需的镜像每每会下载失败,因而点击 Apply 后,该配置页面的右下角始终显示 Kubernetes is starting,没法正常启动。docker

Docker Desktop for Mac 开启并使用 Kubernetes 为该问题提供了解决方案。编程

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

git clone git@github.com:maguowei/k8s-docker-desktop-for-mac.git
复制代码

而后确认一下 Docker Desktop 自带的 Kubernetes 的版本。点击 Docker 图标,选择 About Docker Desktop,看到以下界面:bash

About Docker Desktop

能够看到 Kubernetes 的版本是 v1.14.6。app

以后咱们打开 k8s-docker-desktop-for-mac 项目下的 images 文件:curl

$ 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 版本号一致后,执行命令:ui

./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

最终的解决方案是在 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

参考资料


欢迎关注个人公众号:编程拯救世界。在编程世界一块儿冒险,一块儿成长!

相关文章
相关标签/搜索