6266d004ac83e0d4a3388aa702914b44.jpeg

家里老的台式机已经被淘汰掉了,之前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即可。

133660710ea961cecee1929ceefade6c.png

到这一步就尴尬了,一直处于Starting...状态。

总结了下网上的解决办法:

  1. 卸载重装下docker  需要注意的是: 卸载重装之后Docker Engine配置脚本中的镜像配置就被重置了,卸载前注意备份。

  2. 检查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
  1. 删除相关文件 (操作时最好做下备份)

rm -rf ~/.docker
rm -rf ~/.kube
rm -rf ~/Library/Group\ Containers/group.com.docker/pki/
  1. 下载Kubernetes镜像

绝大多数处于Starting状态的原因都是因为下载不下来Kubernetes镜像导致的,原因都懂。好在有人帮忙准备好了一份脚本,传送门:(https://github.com/AliyunContainerService/k8s-for-docker-desktop)

使用起来也比较简单,先确定自己安装的Kubernetes的版本

20757f88f721cd0b90e954288e3a47ae.png

docker desktop

然后执行下面命令即可。

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来进行登录

57cd49b74437fe37a63a47103dff1c38.png

dashboard 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主界面:

dbee3305eff10c9ac2a99a5729acbf5c.png

kubernetes dashboard

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

ce63dea9cbd07492cc92af848e1f3ee2.png

troubleshoot

如果在使用 Docker 中还是出现各种异常,可以考虑使用状态栏图标的下拉菜单项 “Troubleshoot”,打开故障排除对话框,以解决各种疑难杂症。比如:如果是从旧版本升级,出现始终无法正常启动时,可以 Clear / Purge Data 一下,完全从头再执行一遍。

这种方式安装的Kubernetes缺点是只有单个节点,无法体验Kubernetes完整的功能。好处是对于新手学习和测试比较方便。

如果阅读过程中发现本文存疑或错误的地方,可以关注公众号留言。点赞在看人灿烂😁

dfa136df295d9aae6a5e1feca89bc4d0.jpeg

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐