Docker for Mac 部署 Kubernetes

docker for mac 安装kubernetes本来是很方便的, 但是国内玩家要折腾一下, 因为 gcr.io 这个域被墙了…

目前来看前辈们已经把坑给淌的差不多了, 我老早的时候也被折腾的头秃, 这里就做个总结

通过代理翻墙下载镜像

这个方法相对来说一劳永逸, 缺点是每个月有vpn的花费, 我代理用的shadowsockets, 就拿这个来举例:

首先安装

1
brew install privoxy

添加配置:

1
vi /usr/local/etc/privoxy/config

配置内容:

1
2
listen-address 0.0.0.0:8118
forward-socks5 / localhost:1080 .

监听本地8118端口, 转发到 localhost:1080, 这也是ss的客户端的转发端口

启动:

1
brew services start privoxy

转发部分完成, 接下来在 docker for mac配置

docker for mac > preferences > Proxies > 点击 Manual proxy configuration

Web Server(HTTP)Secure Web Server (HTTPS) 都填入 http://{你机器IP}:8118 比如: ‘http://192.168.110.203:8118'

不能用 127.0.0.1, 因为 docker for mac 启动后, docker 是运行在一个虚拟机中,而不是macOS下, 因此这个地址代表的意义不一样

点保存, 这样就能正常安装k8s了, 可以通过活动监视器看一下他们的流量是否正常

教程来源

自己预先加载一套镜像来

找个目录, 新建 images.properties

1
2
3
4
5
6
7
8
9
10
k8s.gcr.io/pause-amd64:3.1=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1
k8s.gcr.io/kube-controller-manager-amd64:v1.10.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.10.3
k8s.gcr.io/kube-scheduler-amd64:v1.10.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.10.3
k8s.gcr.io/kube-proxy-amd64:v1.10.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.10.3
k8s.gcr.io/kube-apiserver-amd64:v1.10.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.10.3
k8s.gcr.io/etcd-amd64:3.1.12=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.1.12
k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.8=registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-sidecar-amd64:1.14.8
k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.8=registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-kube-dns-amd64:1.14.8
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.8=registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.8
k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3=registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.8.3

新建脚本: kubernetes.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#/bin/bash

file="./images.properties"

if [ -f "$file" ]
then
echo "$file found."

while IFS='=' read -r key value
do
#echo "${key}=${value}"
docker pull ${value}
docker tag ${value} ${key}
docker rmi ${value}
done < "$file"

else
echo "$file not found."
fi

运行就行

教程来源
k8s-docker-for-mac

找个gcr.io的国内镜像

这个是利用了dockerHub 因为都是国外的, 先让dockerHub给build一下, 然后直接拉dockerHub的镜像来迂回一下

Google Container Registry(gcr.io) 中国可用镜像(长期维护)
gcr.io_mirror
基于Docker for macOS的Kubernetes本地环境搭建与应用部署