前言
Kubernetes成为事实上的云原生平台,用于在分布式环境中运行容器化服务和应用程序。尽管可以在在云环境(公有云,私有云或混合云)或裸机环境中部署Kubernetes,但有时仍然需要在本地部署和运行Kubernetes进行开发测试。
Kubernetes最初被设计为在Linux环境中部署和使用。但是,大量用户是使用Windows OS作为其日常驱动程序,本文探讨利用windows10的WLS2功能,使用Kind或Minikube在本地运行Kubernetes集群。
在安装windows版kubernetes集群时,需要先在win10上面开启WSL2功能和安装docker,可以参考这篇文章的姊妹篇- win10利用WSL2安装docker的2种方式,链接地址:https://www.toutiao.com/i6838436149912928772/
部署安装
kind方式
-
启动docker服务(可选)
#使用的为linux原生docker方式,如果使用docker desktop for windows,此步骤可选 service docker start
-
下载kind二进制文件
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.8.1/kind-$(uname)-amd64 #标记为可执行文件 chmod +x ./kind #移动到 PATH 目录下去 mv ./kind /usr/bin/
-
开始创建集群
kind create cluster --name wsl2-k8s
-
检查启动kubernetes集群的容器启动正常
docker ps
我们发现kind下载了kindest/node:v1.18.2镜像并用此镜像启动容器,kubernetes集群运行在此容器内,这也是kind名字的由来(kubernetes in docker)。如上图,kube-apiserver的6443端口暴露到docker宿主机的37293端口。
exec到该容器,我们发现容器内启动的kubernetes进程。
-
拷贝kubectl二进制文件到docker宿主机
id=$(docker ps |grep "kindest\/node"|awk '{print $1}') docker cp $id:/kind/bin/kubectl /usr/bin/ kubectl get node
如上图,一个单节点的kubernetes集群就创建好了,那如何创建多节点kubernetes集群呢
-
创建多节点kubernetes集群
-
删除现有集群
#获取创建的集群名字 kind get clusters #删除集群 kind delete cluster --name wsl2-k8s
-
创建一个3节点集群的配置文件
cat << EOF > kind-3nodes.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker EOF
-
使用配置文件创建新的集群
kind create cluster --name wsl2-3nodes --config ./kind-3nodes.yaml
在实际创建中,会报错“ docker: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown”问题,这是因为使用的linux原生的docker会有此问题,如果使用docker desktop for windows,没有此问题出现,可以通过如下办法解决:
-