Win10使用wsl部署k8s环境
前提
- 安装docker和go环境
- 配置wsl2
这个可以看之前的文章win10安装docker
安装kubectl
安装kubectl有几种方法,具体可以看install-kubectl-windows/
- 直接使用
curl
curl -LO https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe
如果提示curl
命令不存在,可以先安装一下curl,不过这里建议直接用github的curl
(如果你安装了github的话),目录在github安装目录/mingw64/bin
,不过使用这个需要配置到环境变量的path
里。
配置好之后curl会直接将kubectl可执行文件下载到bash的执行目录下,默认应该是c:/users/username
下,然后将这个文件配置到环境变量里就行了,我这里是直接把这个文件拷贝到之前那个curl
那个目录下了。
kubectl不用安装,配置好环境变量之后就可以在wsl(ubuntu)中执行kubectl version
will@DESKTOP-N0FI3QF:~$ kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:23:52Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
这时因为没有配置集群,所以只有客户端版本。
安装kind
具体参考这个官方博客
# Download the latest version of KinD
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-linux-amd64
# Make the binary executable
chmod +x ./kind
# Move the binary to your executable path
sudo mv ./kind /usr/local/bin/
学习一下kind的命令
will@DESKTOP-N0FI3QF:~$ kind
kind creates and manages local Kubernetes clusters using Docker container 'nodes'
Usage:
kind [command]
Available Commands:
build Build one of [base-image, node-image]
create Creates one of [cluster]
delete Deletes one of [cluster]
export exports one of [logs]
get Gets one of [clusters, nodes, kubeconfig-path]
help Help about any command
load Loads images into nodes
version prints the kind CLI version
Flags:
-h, --help help for kind
--loglevel string logrus log level [panic, fatal, error, warning, info, debug] (default "warning")
--version version for kind
Use "kind [command] --help" for more information about a command.
创建第一个集群
echo $KUBECONFIG
# Check if the .kube directory is created > if not, no need to create it
ls $HOME/.kube
# Create the cluster and give it a name (optional)
kind create cluster --name wslkind
# Check if the .kube has been created and populated with files
ls $HOME/.kube
will@DESKTOP-N0FI3QF:~$ kind create cluster --name willkind
Creating cluster "willkind" ...
✓ Ensuring node image (kindest/node:v1.13.4) 🖼
⢎⡀ Preparing nodes 📦
⠈⠁ Preparing nodes 📦
⢀⡱ Preparing nodes 📦
✓ Preparing nodes 📦
✓ Creating kubeadm config 📜
✓ Starting control-plane 🕹️
Cluster creation complete. You can now use the cluster with:
export KUBECONFIG="$(kind get kubeconfig-path --name="willkind")"
kubectl cluster-info
will@DESKTOP-N0FI3QF:~$ kubectl cluster-info
Kubernetes master is running at https://localhost:41825
KubeDNS is running at https://localhost:41825/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
will@DESKTOP-N0FI3QF:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
willkind-control-plane Ready master 12m v1.13.4
这时我们就完成了简单的单节点的集群创建
从安装打印出的输出来看,分为4步:
-
查看本地上是否存在一个基础的安装镜像,默认是 kindest/node:v1.13.4,这个镜像里面包含了需要安装的所有东西,包括了 kubectl、kubeadm、kubelet 二进制文件,以及安装对应版本 k8s 所需要的镜像,都以 tar 压缩包的形式放在镜像内的一个路径下
-
准备你的 node,这里就是做一些启动容器、解压镜像之类的工作
-
生成对应的 kubeadm 的配置,之后通过 kubeadm 安装,安装之后还会做另外的一些操作,比如像我刚才仅安装单节点的集群,会帮你删掉 master 节点上的污点,否则对于没有容忍的 pod 无法部署。
-
启动完毕
查看当前集群的运行情况
will@DESKTOP-N0FI3QF:~$ kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-86c58d9df4-6gdmr 1/1 Running 0 161m
coredns-86c58d9df4-nc7nt 1/1 Running 0 161m
etcd-willkind-control-plane 1/1 Running 0 160m
kube-apiserver-willkind-control-plane 1/1 Running 0 160m
kube-controller-manager-willkind-control-plane 1/1 Running 0 160m
kube-proxy-2b6qs 1/1 Running 0 161m
kube-scheduler-willkind-control-plane 1/1 Running 0 160m
weave-net-h2rt8 2/2 Running 0 161m
默认方式启动的节点类型是 control-plane 类型,包含了所有的组件。包括2 * coredns、etcd、api-server、controller-manager、kube-proxy、sheduler,网络插件方面默认使用的是 weave,且目前只支持 weave,不支持其他配置,如果需要可以修改 kind 代码进行定制。
基本上,kind 的所有秘密都在那个基础镜像中。下面是基础容器内部的 /kind 目录,在 bin 目录下安装了 kubelet、kubeadm、kubectl 这些二进制文件,images 下面是镜像的 tar 包,kind 在启动基础镜像后会执行一遍 docker load 操作将这些 tar 包导入。manifests 下面是 weave 的 cni。