- 搭建主节点
- 获取主节点的token和ip
- 搭建工作节点
- 将工作节点加入主节点集群
本文前置条件是安装minikuber,安装minikuber之前要安装kubectl
kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
minikube:https://kubernetes.io/docs/tasks/tools/install-minikube/
本文将讨论在win10以hyper-v为k8s虚拟机为docker desktop for windows (linux模式)创建k8s
1.搭建主节点
当我们的docker for windows在linux容器模式下,hyper-v虚拟机会有一个名为DockerDesktopVM的linux虚拟机,须知此时host是DockerDesktopVM的虚拟网卡ip,不是你的windows 127.0.0.1,如果要设置代理需get this point
如果之前你已经运行过minikube start ,需要先执行minikube stop和delete ,到用户文件夹下删除.minikube文件夹和.kube文件夹,以便于重头开始.
在hyper v里创建一个虚拟网卡,名为k8s-net,给将创建的集群使用,确保这个网络正常
minikube.exe start -p k8s-master --image-mirror-country cn --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.5.1.iso --registry-mirror=https://80gnjwff.mirror.aliyuncs.com --vm-driver=hyperv --memory=4096 --cpus=2 --hyperv-virtual-switch=k8s-net
-p 是设置配置文件名称,不填写将默认为minikube
----image-mirror-country 和--registry-mirror 以及 --iso-url是因为国内下将镜像包时被墙改为阿里的源
--vm-driver 虚拟机驱动 win10自带hyper-v
--memory --cpus 内存cpu
--virtual-switch 虚拟交换机填写刚才我们创建的k8s-net
打开有管理猿权限的powersheel 运行
PS C:\WINDOWS\system32> minikube.exe start -p k8s-master --image-mirror-country cn --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.5.1.iso --registry-mirror=https://**********.mirror.aliyuncs.com --vm-driver=hyperv --memory=2048 --cpus=2 --hyperv-virtual-switch=k8s-net
* minikube 1.5.2 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.5.2
* To disable this notice, run: 'minikube config set WantUpdateNotification false'
! Microsoft Windows 10 Pro 10.0.18362 Build 18362 上的 [k8s-master] minikube v1.5.1
! 您所在位置的已知存储库都无法访问。正在将 registry.cn-hangzhou.aliyuncs.com/google_containers 用作后备存储库。
* 正在下载 VM boot image...
> minikube-v1.5.1.iso: 143.76 MiB / 143.76 MiB [-] 100.00% 2.72 MiB p/s 53s
* 正在创建 hyperv 虚拟机(CPUs=2,Memory=4096MB, Disk=20000MB)...
! VM is unable to connect to the selected image repository: command failed: curl -sS https://k8s.gcr.io/
stdout:
stderr: curl: (7) Failed to connect to k8s.gcr.io port 443: Connection timed out
: Process exited with status 7
* 正在 Docker 18.09.9 中准备 Kubernetes v1.16.2…
* 正在下载 kubelet v1.16.2
* 正在下载 kubeadm v1.16.2
* 拉取镜像 ...
* 正在启动 Kubernetes ...
* Waiting for: apiserver
* 完成!kubectl 已经配置至 "k8s-master"
! C:\Program Files\Docker\Docker\Resources\bin\kubectl.exe is version 1.14.7, and is incompatible with Kubernetes 1.16.2. You will need to update C:\Program Files\Docker\Docker\Resources\bin\kubectl.exe or use 'minikube kubectl' to connect with this cluster
PS C:\WINDOWS\system32>
上面提示了kubectl版本不匹配不要慌 之后用minikube kubectl 代替 kubectl运行就可以了,运行后会下载匹配版权的kubectlg到\.minikube\cache\ 这个目录,复制去覆盖原来的版本即可.
虚拟机创建好了node后多了一个k8s-mast的linux虚拟机
hyper-v 需要关掉动态内存
Set-VMMemory -VMName 'k8s-master' -DynamicMemoryEnabled $false
查看一下节点 发现名字不太对,应该显示k8s-master才对,..先不管它
2.获取主节点的token和IP
获取token需要用到kubeadm ,所以我们要把kubeadm从缓存的镜像里面复制到k8s-master的bin目录 并且给予执行的权限
开启虚拟机的来宾服务 以便 以用powersheel指令复制文件到linux vm
复制kubeadm 和kubelet到 linux bin目录
Copy-VMFile -Name k8s-master -SourcePath 'C:\Users\hbb\.minikube\cache\v1.16.2/kubeadm' -DestinationPath '/bin' -FileSource Host
Copy-VMFile -Name k8s-master -SourcePath 'C:\Users\hbb\.minikube\cache\v1.16.2/kubelet' -DestinationPath '/bin' -FileSource Host
然后给权限
minikube -p k8s-master ssh "sudo chmod 777 /bin/kubelet"
minikube -p k8s-master ssh "sudo chmod 777 /bin/kubeadm"
拿token 和IP
k1jnm3.5sqvduqe59vl184b
192.168.1.108
3.搭建工作节点
也是start指令 -p k8s-master 换成-p k8s-Slave而已
杀掉动态内存
Set-VMMemory -VMName 'k8s-Slave' -DynamicMemoryEnabled $false
也是和前面一样的操作
开启vm开宾服务
复制文件
给权限
4.将工作节点加入主节点集群
minikube -p k8s-Slave ssh
进入到vm ssh画面
k1jnm3.5sqvduqe59vl184b
192.168.1.108
TOKEN=k1jnm3.5sqvduqe59vl184b
MASTER_IP=192.168.1.108
kubeadm join --token ${TOKEN} ${MASTER_IP}:8443 \
--discovery-token-unsafe-skip-ca-verification \
--ignore-preflight-errors=all
当当当当,结果最后一步出现了错误,但是到了出门看电影的时间了, 下次再继续更新吧