K8s 集群 Windows 安装部署指南
# 前言
官方中文文档:Kubernetes 文档 | Kubernetes (opens new window)
注:本次使用版本为 v 1.28 (当前最新稳定版本)
本文将会主要讲解如何在 Windows 平台搭建部署 K8s 集群的全流程
# Docker
# 安装
对于 Windows 平台,可以使用 Docker Desktop 来使用 Docker,当然如果有 WSL,在 WSL 中安装也是可以的
官方下载链接:Install Docker Desktop on Windows | Docker Docs (opens new window)
然后按照步骤安装即可,需要注意的就是要开启 Hyper-V 功能(如果已经安装 WSL 2 可以忽略此句)
# 配置加速
阿里云镜像加速地址:容器镜像服务_镜像构建_镜像授权_镜像托管-阿里云 (aliyun.com) (opens new window)
复制图中的地址,然后替换 Docker Desktop 中的配置地址,之后点击右下角 Apply & restart
即可
之后使用 docker version
查看是否成功即可
# Minikube
Minikube 是一种轻量级的 Kubernetes 实现,可在本地计算机上创建 VM 并部署仅包含一个节点的简单集群。 Minikube 可用于 Linux、macOS 和 Windows 系统。 Minikube CLI 提供了用于引导集群工作的多种操作,包括启动、停止、查看状态和删除
# 环境要求
- 至少2 个 CPU
- 至少2GB 可用内存
- 至少 20 GB 可用硬盘存储
- 已连接互联网
- 至少安装了下列容器或虚拟机管理软件中的一种,如:Docker、QEMU、Podman、VirtualBox 或 VMware Workstation
# 安装
官方文档:minikube start | minikube (k8s.io) (opens new window)
下载链接:latest release (storage.googleapis.com) (opens new window)
执行 minikube-installer.exe
后,然后添加minikube.exe
到 PATH 中(一般是安装脚本中默认添加)
# 启动
启动集群(需要具有管理员权限)
该命令将会下载镜像并创建一个单节点 k8s 集群
minikube start
之后启动集群成功可以使用 minikube ssh
进入集群,并使用 docker ps
查看运行容器实例
然后我们退出集群之后,执行 minikube dashboard
即可查看仪表盘
# 问题
# 镜像拉取过慢
如果镜像拉取过慢,可以使用如下命令
注:下面这种做法实测失效,可能是因为 minikube 版本过新(旧版本是可行的),国内阿里云镜像未同步更新,导致一直使用失败,所以成功做法还是使用
minikube start
,使用国外谷歌镜像仓库,不过可以开全局代理加速访问
minikube start --image-mirror-country='cn' --driver='docker'
这里国内还是国外唯一区别就是 --image-mirror-country='cn'
参数,如果之前配置默认为国内可以省略,国内默认镜像为 registry.cn-hangzhou.aliyuncs.com/google_containers
--driver='docker'
是把所有的镜像 pull 到 minikube 内部的 docker,而 --driver='none'
而 none 则直接使用宿主机 docker。导致的结果:docker 驱动需要用 minikube cache add registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v5
结果发现启动失败,找不到这个基础镜像
那么就指定这个为基础镜像,然后启动即可,然后依旧失败
minikube start --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --driver='docker' --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.42'
# GUEST_STATUS 问题
使用 minikube ssh
进入集群爆出 Exiting due to GUEST_STATUS: state: unknown state "minikube": docker container inspect minikube --format=: exit status 1
如果是 linux 用户解决方案如下
sudo chmod 666 /var/run/docker.sock
sudo usermod -aG docker ${USER}”
2
但是很明显 windows 用户并不行
# kubectl
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具,kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能
# 安装
官方文档:在 Windows 上安装 kubectl | Kubernetes (opens new window)
注:kubectl 版本和集群版本之间的差异必须在一个小版本号内。例如:v 1.24 版本的客户端能与 v 1.23、 v 1.24 和 v 1.25 版本的控制面通信
kubectl 1.28.4 下载地址:kubectl 1.28.4 (k8s.io) (opens new window)
将 kubectl
二进制文件夹追加或插入到你的 PATH
环境变量中,测试一下,确保此 kubectl
的版本和期望版本一致
注:某些版本 Docker Desktop 会将其自带版本的
kubectl
添加到PATH
,可能需要把此PATH
条目置于 Docker Desktop 安装的条目之前,或者直接删掉 Docker Desktop 的kubectl
kubectl version --client
# 配置
为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 kubeconfig 文件, 该文件在 kube-up.sh 创建集群时,或成功部署一个 Minikube 集群时,均会自动生成。 通常,kubectl 的配置信息存放于文件 ~/.kube/config 中
kubectl 默认会从$HOME/.kube 目录下查找文件名为 config 的文件,也能通过设置环境变量 KUBECONFIG 或者通过设置去指定其它 kubeconfig 文件,kubeconfig 就是为访问集群所作的配置。我们也可以把线上 kubernetes 集群的配置信息放入 config 文件中去,这样我们就可以用 kubectl 直接访问 kubernetes 集群
# 进入当前用户目录
cd
# 创建目录 .kube
mkdir .kube
# 切换到新创建的目录 .kube
cd .kube
2
3
4
5
6
7
8
# 问题
如果出现 Unable to load cached images
问题,可能是没有配置国内阿里云镜像,或是在配置镜像仓库之前执行 minikube start
需要先清除缓存,然后再配置镜像,最后再启动
如果是使用的是 Docker Desktop 的话,直接上面图形化配置镜像即可,然后执行如下
# 必须清除缓存
minikube delete
minikube start
2
3
如果是命令行可以参考如下
minikube delete # 必需先清除缓存后再继续
minikube start --image-mirror-country='cn' --driver docker
2
参考官方链接:在 Windows 上安装 kubectl | Kubernetes (opens new window)
# 补充
# 镜像缓存
# Docker
单独清除镜像命令 docker rm i
,但是该命令无法删除docker build
的缓存镜像,即 Build Cache
我们可以使用 docker system df
查看缓存情况,然后执行如下命令清除所有未使用的镜像(包括 Build Cache)
docker system prune -a --force
# Minikube
使用 minikube 时间比较长,就会发现~/.minikube
占用空间很大,这其中占用空间比较大的就是镜像缓存,位置在 ~/.minikube/cache/images
查看本地镜像缓存
minikube cache list
删除指定缓存
minikube cache delete <image name>
# 参考链接
- 在Windows 10平台下搭建k8s+docker开发环境 - 掘金 (juejin.cn) (opens new window)
- Windows10 Docker安装详细教程 - 知乎 (zhihu.com) (opens new window)
- Unable to load cached images_unable to load cached images (opens new window)
- Windows配置kubectl - 掘金 (juejin.cn) (opens new window)
- 在 Windows 上安装 kubectl - makalo - 博客园 (cnblogs.com) (opens new window)
- minikube镜像缓存 - 简书 (jianshu.com) (opens new window)
- Docker 深度清除镜像缓存 (overlay2) - 掘金 (juejin.cn) (opens new window)
- minikube start 国内服务器无法启动_unable to find image (opens new window)
- Exiting due to GUEST_STATUS: state: unknown state "minikube" (opens new window)