Macos下安装Docker和Kubernutes最方便的工具就是Docker Desktop了。

安装Docker

访问Docker Desktop官网,点击下载Mac版。会跳转到dockerhub进行下载。需要注册dockerhub才可以进行下载。

下载过后双击Docker.dmg文件进行安装即可。
安装完毕后,Docker就可以正常使用了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ docker version
Client: Docker Engine - Community
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
Git commit: 9013bf5
Built: Thu Oct 17 23:44:48 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.4
API version: 1.40 (minimum version 1.12)
Go version: go1.12.10
Git commit: 9013bf5
Built: Thu Oct 17 23:50:38 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
$

安装Kubernetes

说明

原先是想按照官方推荐,安装minikube的。可折腾了一下没成功。转而尝试用Docker Desktop自带的kubernetes。
以下步骤参照了如下两篇文章结合实际的安装步骤,记录如下:

安装步骤

Docker Desktop中自带了Kubernetes,以stable 2.1.0.4为例。自带了v1.14.7的Kubernetes
kubernetes_in_docker_desktop

照道理直接在Preference中Enable Kubernetes即可使用了。可是kubernetes的安装需要去k8s.gcr.io下载镜像。国内没法直接访问。
直接Enable kubernetes的话,会一直处在Kubernetes is starting状态。

解决办法是手动先从其他地方下载kubernetes相关的image,然后再打上原始的tag。
github上有前人制作了相关的工具,k8s-docker-desktop-for-mac

git clone代码到本地

1
git clone https://github.com/gotok8s/k8s-docker-desktop-for-mac.git

然后修改images文件中kubernetes的版本号为Docker Desktop集成的Kubernetes的版本。
以v1.14.7为例,我修改后的版本如下:

1
2
3
4
5
6
7
k8s.gcr.io/kube-proxy:v1.14.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.14.7
k8s.gcr.io/kube-controller-manager:v1.14.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.14.7
k8s.gcr.io/kube-scheduler:v1.14.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.14.7
k8s.gcr.io/kube-apiserver:v1.14.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.14.7
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

修改点有两处:

  • 替换原版本为v1.14.7,
  • 修改了原文件中dockerhub上的地址为阿里云的docker镜像地址

执行./load_images.sh,安装镜像并打上k8s.gcr.io的tag。

再在Docker Desktop的Preferences中开启Enable Kubernetes,就可以启动Kubernetes了。
enable_kubernetes_in_preference.png

使用命令kubectl version来验证Kubernetes服务。如果能同时显示Client和Server的Version,就说明启动成功。

1
2
3
4
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.7", GitCommit:"8fca2ec50a6133511b771a11559e24191b1aa2b4", GitTreeState:"clean", BuildDate:"2019-09-18T14:47:22Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.7", GitCommit:"8fca2ec50a6133511b771a11559e24191b1aa2b4", GitTreeState:"clean", BuildDate:"2019-09-18T14:39:02Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
$

Unable to connect to the server的异常

在安装过程中,启动了Kubernetes,但执行命令就报Unable to connect to the server: EOF的错误。
按照Kubernetes on Mac is stuck very often. Needs restart all the time.的说明,调高了内存

memory_setting_in_kubernetes.png

再执行kubectl version,还是报Unable to connect to the server: EOF错误。多次Reset Kubernetes也还是不行。
折腾了一通,最后发现是原先Terminal中装minikube时修改了部分环境变量。重新起一个Terminal后,就可以访问到kubernetes服务了。

Reference

留言