![f4241048b7d954d213b432acad357394.png](https://i-blog.csdnimg.cn/blog_migrate/a53b8b95980af909a61df29df991cac1.jpeg)
下面是经过踩坑之后的 windows10 单机部署 docker k8s 步骤,其中有几处比较关键的地方需要注意,后面加粗标注,下面就开始吧!
0、下载cmder
在 windows 上有一个趁手的命令行工具非常有必要,推荐 Cmder,下面是下载地址:
https://cmder.net/
安装完成后,一定要右键使用管理员权限打开,否则后续操作会失败。
1、下载安装配置docker
下载 docker.exe 安装文件:
https://www.docker.com/get-started
下载完成后直接安装,注意安装完成后,右键使用管理员权限启动。一定要使用管理员权限启动,否则 k8s 无法启动,启动后不要开启 k8s,否则会陷入无限等待当中,因为默认的源不可用(长城),只需要启动docker即可。
在 docker 桌面小图标上右键选择 【About Docker Desktop】,会出现下面界面,记住自己的 k8s 版本,后面会用到,从图中看到我的版本是 v1.16.5。
![159528d6bc700f230e18a7b8590af55b.png](https://i-blog.csdnimg.cn/blog_migrate/4b9ea0f16c7498eaa245627b095a9ced.jpeg)
下面还是在 docker 桌面小图标上右键选择 【Dashboard】,进入下图中的界面,然后填入如下内容,然后点击【Apply & Restart】:
{
![d8f5a7776acbc4ea07fda360ae1071f0.png](https://i-blog.csdnimg.cn/blog_migrate/d220e2c934f9a8ecb32ab24b01de9fcf.png)
从上图中可以看到,我的 k8s 已经处于启动状态,请暂时忽略。
下面开始重要的步骤。
2、下载必要的镜像
注意,下面的所有操作都要在以管理员权限打开的命令行中执行
# 首先预先从阿里云 Docker 镜像服务下载 k8s 所需要的镜像:
git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git
# 切换至对应自己安装的 k8s 版本的分支
git checkout v1.16.5
# 执行下面命令以允许脚本的执行
Set-ExecutionPolicy RemoteSigned
# 然后执行命令开始下载 k8s 所需镜像
.load_images.ps1
下图是可以选择的分支,找到和所安装的 k8s 版本相同的分支即可。
![4d1db76b5ace12e54c888288df79b8f4.png](https://i-blog.csdnimg.cn/blog_migrate/9901aeab9f8ff32417c13be563d1478a.jpeg)
完成上面的操作之后,在命令行输入 docker images 应该可以看到下图的镜像列表中的一部分,只要自己的列表中 http://k8s.gcr.io 开头的镜像都存在即可。
![0a41f39a8c2399b330f03fbb06a2af3c.png](https://i-blog.csdnimg.cn/blog_migrate/829de5f76bf0fdca4b1f8f31d695a4be.jpeg)
3、启动 k8s
在镜像下载完成后,启动 k8s 之前,还需要修改 hosts 文件,增加下面内容,否则会启动失败。
# 命令执行下面操作,注意这里用的命令行工具是 Cmder
# 如果使用 PowerShell 是没有 vim 的,只能自己手动打开目录修改文件
vim C:WindowsSystem32driversetchosts
# 打开后,按下 i 符号进入编辑状态另起一行,写入下面内容
127.0.0.1 kubernetes.docker.internal
# 接着按下 ESC 键进入 vim 命令行状态,输入 :qw! 保存退出即可
这个时候回到【Dashboard】界面,选中 Enable Kubernetes,然后应用。
![eb8993a64fb4f9b2f228e5225c87a5a6.png](https://i-blog.csdnimg.cn/blog_migrate/5244e627d5c6c2f11c72c5f24faf311c.jpeg)
下面等待 k8s 启动即可,可以通过查看主界面看是否有容器已经启动,如下图:
![8f40ae9b8da26cf9db063bfb0c1376f7.png](https://i-blog.csdnimg.cn/blog_migrate/ce3a87995ec99768afb5816ff703a651.jpeg)
可以通过下图中两个命令查看运行情况:
![7a025892e575844b048b62d9097beae8.png](https://i-blog.csdnimg.cn/blog_migrate/04d0a89d1a4a32734a5903edbbabe22b.png)
4、配置 Kubernetes 控制台
直接用浏览器打开下面的地址,然后按 Ctrl+s 将文件保存到某个位置。
https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml
然后用编辑器打开这个文件,找到对应的 kind 并修改为下面的状态,注意,这一步非常重要,否则安装好的控制台无法使用。
kind
修改完成后执行下面的命令:
kubectl create -f recommended.yaml
会输出如下内容:
![766c24b0554e636eb06a68dba0c09abb.png](https://i-blog.csdnimg.cn/blog_migrate/939ee0c679037babec8919135542a0fc.png)
在登录之前先用命令获取到登录所需 Token:
# 使用下面命令拿到访问令牌
kubectl -n kubernetes-dashboard get secret
# NAME TYPE DATA AGE
# default-token-924zv kubernetes.io/service-account-token 3 52s
# kubernetes-dashboard-certs Opaque 0 52s
# kubernetes-dashboard-csrf Opaque 1 52s
# kubernetes-dashboard-key-holder Opaque 0 52s
# kubernetes-dashboard-token-68h2b kubernetes.io/service-account-token 3 52s
kubectl describe secrets -n kubernetes-dashboard kubernetes-dashboard-token-68h2b | grep token | awk 'NR==3{print $2}'
会输出一个很长的字符串,复制的这个字符串,然后打开浏览器,输入 localhost:30000 访问这个地址,正常情况下会打开下面所示的界面,输入刚刚拿到的 Token 点击登录即可,但如果是 Chrome 可能会存在访问策略问题,解决方法:
- 换 Firefox 浏览器
- 直接键盘打字 thisisunsafe 这个字符串,页面会自动刷新并进入图中页面
![6e780c941c178fb7fc7e5fef335b5828.png](https://i-blog.csdnimg.cn/blog_migrate/8214963b7e389b8c32f7ab3d0de946d7.png)
接着就能看到管理界面了,✿✿ヽ(°▽°)ノ✿,经过很长的步骤终于完成了所有操作。
![d31d9ff32b2b0a0a5cbde8a98145f7e3.png](https://i-blog.csdnimg.cn/blog_migrate/32f46e07e277ffa646e59e48446b2366.jpeg)
![07a03130496d2875254406042e6089a1.png](https://i-blog.csdnimg.cn/blog_migrate/c935731972afdcf95ccbbb0731b1a350.jpeg)
5、安装 Rancher
Rancher是一个开源的集群管理工具,安装非常简单,只需要命令行输入下面命令即可:
docker run -d --restart=unless-stopped -p 10001:80 -p 10002:443 rancher/rancher
等待安装完成后,打开浏览器 https://localhost:10002,Chrome会提示不安全,忽略即可,就可以进入下面界面了:
![d0b77ba90f943d57ba0895536c4b1fe8.png](https://i-blog.csdnimg.cn/blog_migrate/9f29df032d5809450a88e8797a224cab.jpeg)
接下来就是自由探索的时间,踩坑结束。