本文共 2615 字,大约阅读时间需要 8 分钟。
作为目前事实上的容器编排系统标准,K8s 无疑是现代应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境
自己搭吧,要求的硬件资源太高,基本上搭建一个 K8s 集群就劝退了很多的人,因此这里最简单的方式就是直接使用 Windows or Mac 上的 Docker Desktop 内置的 K8s 来学习
然而,由于某些网络原因,如果你直接在 Dokcer 中启用这个功能的话,基本上是不可能成功开启的,因此,本篇文章是基于 进行的操作说明,希望可以帮你顺利的启用这一功能
首先,你需要在电脑上安装好 Docker Desktop,这个过程就不赘述了,一路 Next 即可。如果可以的话,推荐使用 WSL 作为宿主,后面运行 Docker 时的性能会更好些。最新版的软件在安装时也是会默认使用 WSL 作为宿主的,这里我使用的是 3.3.1 版本的 Docker,内置的 k8s 版本为 v1.19.7
PS:安装 Docker 之前需要你在 BIOS 中开启虚拟化,同时基于你的宿主程序的选择,你还需要执行如下的操作
适用于 Linux 的 Windows 子系统
,然后在 Microsoft 商城中下载一个 Linux 的发行版本Hyper-V
(没记错的话,如果你有安装别的虚拟机软件,启用 Hyper-V 后原来的虚拟机由于冲突是没办法继续使用了)Docker Desktop 中内置的 K8s 其实是依赖于相关的镜像,由于这些镜像位于 google 的服务器上,因此基本上是无法正常拉取下来的,所以这里就需要借助镜像网站将这些 docker 镜像拉取到本地
因为直接从 Docker Hub 拉取镜像的速度实在感人,所以安装完成之后我们可以配置镜像网站地址,加速 docker 镜像的拉取
找到 Docker 的设置页面,在 Docker Engine
页面,将镜像网站的地址加入到右侧配置文件的 registry-mirrors
节点下面,这里我使用的是 Docker 官方和中科大的镜像网站地址,你可以依据自己的喜好选择,调整完成之后重启 Dokcer 即可
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn",// 中科大 "https://registry.docker-cn.com"// 官方 ], "insecure-registries": [], "debug": false, "experimental": false, "features": { "buildkit": true }}
镜像地址配置完成之后,clone 下 这个项目,找到 load_images.ps1
这个 powershell 文件,打开后可以看到整个脚本其实是从阿里云拉取了相关的镜像,确保红框中的镜像版本与 Dokcer 内置的 K8s 版本保持一致,然后直接运行
因为使用到了 ps1 脚本文件来执行 powershell 命令,如果是第一次执行 powershell 的脚本文件的话,由于默认的安全策略,这里会提示没有权限执行,我们可以通过执行下面的语句来使脚本正常运行
Set-ExecutionPolicy RemoteSigned
等待命令的执行完成,可以看到我们本地的 Docker 中已经包含了 images.properties
文件中列到的镜像
打开 Docker 的设置页面,找到 Kubernetes 页面,选中 Enable Kubernetes,然后点击 Apply & Restart,这个执行过程有个一两分钟,稍等一会等待 K8s 的启动完成
当左下角出现 K8s 的 logo,并逐步变为绿色,整个 K8s 的环境也就运行起来了,此时我们就可以通过 kubectl 来操作集群,可以看到这里已经可以打印出整个“集群”的信息
集群启动之后,虽然我们可以通过 kubectl 来操作集群,但是如果能够通过可视化页面的方式进行访问,则会更加便捷
在上文 clone 下的 repo 中有个 kubernetes-dashboard.yaml
文件,你可以直接通过 kubectl apply 命令运行,然后启用代理进行访问
-- 创建 dashboard 资源kubectl apply -f kubernetes-dashboard.yaml-- 查看 Deployment 的运行状态 kubectl get deployment -n kuberenetes-dashboard-- 查看 Pod 的运行状态kubectl get pods -n kuberenetes-dashboard-- 通过代理的方式访问 dashboardkubectl proxy
这里是使用 API Server 的形式访问的 dashboard ,具体的地址为:
我们可以使用下面的 powershell 命令打印出 token,然后登录到 dashboard 中查看整个集群的信息
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]kubectl config set-credentials docker-for-desktop --token="${TOKEN}"echo $TOKEN
当然,这里访问 dashboard 的方式不是最优解,后续每一次访问时,都需要执行 kubectl proxy
,正常的做法应该是通过 ingress
进行代理访问。由于 K8s 我也是刚刚入门,对于 ingress
的使用没有过多的了解,所以这里留下一个 topic,后续再进行补充
转载地址:http://wezuz.baihongyu.com/