• 在wsl2中部署kubernertes集群


    1、查看windows中是否有其它程序占用53端口,如果存在先停掉,否则Ubuntu启动错误,它需要监听这个端口;

    2、在ubuntu中启动ssh,并在windows中设置端口转发,就将本机ip和127.0.0.1对ssh端口的请求转发到localhost,否则除了本机通过localhost能访问外,其它地址和机器都是拒绝。
    (netsh interface portproxy reset all)

    (netsh interface portproxy add v4tov4 listenaddress=192.168.31.146 listenport=22222 connectaddress=127.0.0.1 connectport=22222)
    (netsh interface portproxy add v4tov4 listenaddress=localhost listenport=22222 connectaddress=127.0.0.1 connectport=22222)

    (netsh interface portproxy show all)

    以上命令在powershell中以管理员权限执行。

    先启动ubuntu里的ssh监听后再执行上述命令,如果还是不行请重启机器再执行一遍。

    3、启动docker服务

    由于wsl2中无法启动systemd,所以也就无法执行systemctl start docker。

    但kubernetes初始化需要docker service,而且通过service start docker方式启动的不行,提示必须要systemctl start docker。

    此时可以通过大牛提供的其它方式来实现,不知道他是怎么实现的,但确实有效,就安装个一个东西,再创建两个个脚本并赋予权限就行。

    https://kubernetes.io/blog/2020/05/21/wsl-docker-kubernetes-on-the-windows-desktop/

    上面文章是使用了大牛的解决方案,搜索“enabling SystemD”就可找到怎么使用的介绍。

    大牛的原始文章地址:

    https://forum.snapcraft.io/t/running-snaps-on-wsl2-insiders-only-for-now/13033

    4、初始化kubernetes

    可以指定kubernetes的版本,因为有时候阿里镜像没有最新的版本,可以通过修改版本号采用老版本镜像。

    可以指定镜像仓库为本地地址,这样就可以将之前pull来的镜像存在本地,以供其它机器使用。

    必须将apiserver地址指定为ubuntu中eth0的ip,而不是windows的真实网卡ip,否则初始化不成功。

    kubeadm init --image-repository 192.168.31.151:5000/google_containers --kubernetes-version v1.18.2 --apiserver-advertise-address 172.19.20.236 --pod-network-cidr=192.168.0.0/16

    5、安装网络插件

    初始化完成后,查看kubelet的日志,会发现一直提示本地node找不到,并且提示/etc/cni/net.d里内容为空,无法初始化。这时候就可安装网络插件了。

    calico是其中的一个,现在github上维护的比较勤。

    https://docs.projectcalico.org/getting-started/kubernetes/quickstart

    查看提供的calico.yaml发现,其启动了几个自己的容器,并且挂在了主机的/etc/cni/net.d和/opt/cni目录。

    这样关于网络启动这块的过程就比较清楚了,kubeadm初始完后,由于没有容器网络接口cni,导致本地node无法运行,然后去/etc/cni/net.d下找网络插件配置,发现是空的就报错无法初始化cni。

    通过kubectl apply部署网络插件后,网络插件容器启动并向主机的两个cni目录里写入配置及执行程序。

    这期间kubelet一直不停的扫描目录/etc/cni/net.d,当发现被灌入内容后立马执行,然后网络有了,node也正常了,一切成功。

    6、swap问题

    官方资料:https://docs.microsoft.com/en-us/windows/wsl/wsl-config

    image

    1608821238(1)

    7、网络问题

    双网卡可以操作,因为中间会导致网络中断,没有另一个网卡的话是没法在通过远程桌面连上操作的。

    image

    右键管理员打开Hyper-V管理器。

    1608821898

    需要先打开wsl,才会在虚拟交换机列表看到wsl。

    必须管理员权限才能应用成功,并且可能会失败,失败后多尝试几次就行了。

    成功后这个网卡就暂时不能用了,需要通过另外一个网卡的IP远程连上。

    1608822554(1)

    通过Windows Terminal登录到wsl后执行上面的命令,操作过程是将wsl里的网卡eth0的ip地址改为局域网地址。

    这样就不用忍受wsl的ip地址是虚拟的、飘忽不定的,且还需要端口转发才能访问。

    但这样有个问题就是没法在wsl里访问带域名的网址,也就没法访问apt、github、yum、dockerhub等这些默认地址。

    但也不是没办法解决,在局域网的其它主机建立一个代理服务器,然后将wsl的访问方式改为通过这个内网代理就可以。

    通过这种方式设置的内网ip,在wsl重启后会被还原,所以每重启一次都要重复一遍,除设置代理外。

  • 相关阅读:
    Python编码和文件操作
    Python的list和tuple及dictionary
    Python代码对比
    python的基础知识
    day2 springcloud组件(nacos注册/配置中心 feign组件请求调用 gateway网关)
    springcloud与springboot版本对应关系
    git配置
    day1 分布式基础概念
    spring中的依赖注入(DI)笔记
    20210223 爱生气的书店老板(滑动窗口)
  • 原文地址:https://www.cnblogs.com/StarkBrothers/p/13054158.html
Copyright © 2020-2023  润新知