记一次mac安装Kubernetes

家里老的台式机已经被淘汰掉了,之前kubeadm方式按照的k8s集群也不复存在,打算在mac上使用Docker Desktop安装了一下单节点的Kubernetes尝尝鲜,果然又踩坑了,随手记录下。
安装Docker Desktop
传送门(https://www.docker.com/products/docker-desktop)按照提示安装即可,这里不再赘述。
因为有些镜像国内访问需要加速,所以可以配置下镜像,这里推荐七牛云、中科大、Azure、网易云、阿里云、Docker-cn的源。Preferencs->Docker Engine
{
  "registry-mirrors": [
    "https://xxx.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com/",
    "https://reg-mirror.qiniu.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://dockerhub.azk8s.cn",
    "https://registry.docker-cn.com"
  ],
  "experimental": false,
  "features": {
    "buildkit": true
  }
}
启用kubernetes
在Docker Desktop设置中选中Enable Kubernetes选项,Apply&Restart即可。

到这一步就尴尬了,一直处于Starting...状态。
总结了下网上的解决办法:
卸载重装下docker 需要注意的是: 卸载重装之后 Docker Engine配置脚本中的镜像配置就被重置了,卸载前注意备份。检查hosts 
cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1             localhost
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
删除相关文件 (操作时最好做下备份) 
rm -rf ~/.docker
rm -rf ~/.kube
rm -rf ~/Library/Group\ Containers/group.com.docker/pki/
下载Kubernetes镜像 
绝大多数处于Starting状态的原因都是因为下载不下来Kubernetes镜像导致的,原因都懂。好在有人帮忙准备好了一份脚本,传送门:(https://github.com/AliyunContainerService/k8s-for-docker-desktop)
使用起来也比较简单,先确定自己安装的Kubernetes的版本

然后执行下面命令即可。
git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git
cd k8s-for-docker-desktop
# 根据自己版本选择分支
git checkout $targetBranch
./load_images.sh
等待下载完毕,重启Docker和Kubernetes即可
$ docker images
REPOSITORY                           TAG                                                     IMAGE ID       CREATED         SIZE
docker/desktop-kubernetes            kubernetes-v1.19.7-cni-v0.8.5-critools-v1.17.0-debian   93b3398dbfde   2 months ago    285MB
k8s.gcr.io/kube-proxy                v1.19.7                                                 9d368f4517bb   3 months ago    118MB
k8s.gcr.io/kube-controller-manager   v1.19.7                                                 67b3bca112d1   3 months ago    111MB
k8s.gcr.io/kube-apiserver            v1.19.7                                                 c15e4f843f01   3 months ago    119MB
k8s.gcr.io/kube-scheduler            v1.19.7                                                 4fa642720eea   3 months ago    45.6MB
k8s.gcr.io/etcd                      3.4.13-0                                                0369cf4303ff   7 months ago    253MB
k8s.gcr.io/coredns                   1.7.0                                                   bfe3a36ebd25   10 months ago   45.2MB
k8s.gcr.io/pause                     3.2                                                     80d28bedfe5d   14 months ago   683kB
启用 Dashboard(可选)
Kubernetes Dashboard是一个管理Kubernetes集群的全功能Web界面,其旨在以UI的方式完全替代命令行工具(kubectl 等)。需要注意的是,因为 Dashboard 的版本是单独演进的,参见 https://github.com/kubernetes/dashboard 。当前版本为 v2.2.0。
安装
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
或者你也可以选择使用Helm来安装
https://artifacthub.io/packages/helm/k8s-dashboard/kubernetes-dashboard
要从你的本地工作站访问Dashboard,你必须创建一个通往Kubernetes集群的安全通道。运行以下命令:
$ 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/#/login
此时会提示你需要一个token来进行登录

创建一个认证token(RBAC)
Kubernetes Dashboard 登录
通过以下脚本,配置访问控制台所需的令牌。macOS 平台:
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN
复制生成的令牌字符串,并在登录对话框中选择“令牌”方式登录后,粘贴到输入框中,登录即可。
要想重新找到令牌字符串,可以查看 kubeconfig 文件。macOS 平台:
~/.kube/config
然后你就可以进入dashborad主界面:

值得一提的是,Docker Desktop还为我们提供了Troubleshoot的功能

如果在使用 Docker 中还是出现各种异常,可以考虑使用状态栏图标的下拉菜单项 “Troubleshoot”,打开故障排除对话框,以解决各种疑难杂症。比如:如果是从旧版本升级,出现始终无法正常启动时,可以 Clear / Purge Data 一下,完全从头再执行一遍。
这种方式安装的Kubernetes缺点是只有单个节点,无法体验Kubernetes完整的功能。好处是对于新手学习和测试比较方便。
如果阅读过程中发现本文存疑或错误的地方,可以关注公众号留言。点赞在看人灿烂😁
