『中级篇』Vagrant在本地搭建多节点K8S集群(65)

这次说说service,service和网络有非常密切的 关系,为了能让大家很好的理解和直观的展示,重新搭建一个环境,之前用minikube搭建是单节点的环境,但是不够直观,这次coreos搭建一个多节点的。源码:https://github.com/limingios/docker/tree/master/No.9
https://github.com/limingios/docker/tree/master/No.10

Tectonic

  • Tectonic介绍,注册后可以免费试用节点数小于10个的

https://coreos.com/tectonic/docs/latest/tutorials/

  • 账号注册

  • 垃圾邮件里面有

  • 注册成功

PS:遗憾的是:Tectonic已经sandbox下架了,我在网上找了一份直接传到github了,自己下载吧。直接通过vagantfile的方式搭建。

  • 通过vagrantfile安装
    >具体vagrant的安装看我(六)和(七)两节。关于mac和window下的安装。
    整个安装过程用了40分钟。
vagrant up

出现下面的错误,你需要翻墙了兄弟。
Installing the ‘vagrant-ignition’ plugin. This can take a few minutes…
Vagrant failed to load a configured plugin source. This can be caused
by a variety of issues including: transient connectivity issues, proxy
filtering rejecting access to a configured plugin source, or a configured
plugin source not responding correctly. Please review the error message
below to help resolve the issue:

开启翻墙后

因为目前Tectonic 已经没有sandbox 保持通用,我还是用传统的方式安装吧。

shell vagrant的方式安装k8s集群

源码:https://github.com/limingios/docker/tree/master/No.10

  • 下载源码
    >https://github.com/limingios/docker/tree/master/No.10

  • 本地开发机
    >所有的部署工作都是在开发机(dev)上进行的。我已经准备好了在源码中提供。

  • 虚机vagrantfile已经编译好
Vagrant.configure(2) do |config|

  # 设置dev虚机环境(下面还要写dev.vm,好扯淡)
  config.vm.define "dev" do |dev|

    # 设置虚拟机的Box
    dev.vm.box = "centos7"

    # 设置虚拟机的主机名
    dev.vm.hostname = "dev"

    # 设置虚拟机的IP
    dev.vm.network "private_network", ip: "192.168.0.2"

    # VirtaulBox相关配置
    dev.vm.provider "virtualbox" do |vb|

        # 设置虚拟机的内存大小
        vb.memory = 512

        # 设置虚拟机的CPU个数
        vb.cpus = 1
    end

    # 挂载失败了,mount: unknown filesystem type 'vboxsf'
    # config.vm.synced_folder ".", "/home/vagrant/deployk8s"
    # 使用默认挂载

    # 使用shell脚本进行软件安装和配置
    dev.vm.provision "shell", path: "dev.sh"
  end

  # ssh配置
  config.ssh.username = "vagrant"
  config.ssh.private_key_path = "~/.vagrant.d/insecure_private_key"
  config.ssh.insert_key = false

end

  • 把Vagrantfile中的box名与box镜像关联起来
# vagrant box add centos7 path_to_your_centos7
# 例如:
vagrant box add centos7 centos7.box

  • 启动开发机(dev)
    >以后就使用dev来指代开发机了。
    图方便我已经把不安全的公钥添加到集群机器的/root/.ssh/authorized_keys中了,
    为了让root能从dev远程登录到集群机器,需要把insecure_private_key弄到dev的~/.ssh/id_rsa中,可以scp,如果使用的是xshell那就用xshell自带的sftp
vagrant up dev

  • 启动集群 要安装6个机器 老铁你准备好空间
cd vagrant-cluster
vagrant up master1
vagrant up master2
vagrant up master3
vagrant up node1
vagrant up node2
vagrant up node3
# 可以直接vagrant up来启动所有机器
  • 进入dev的虚拟主机
vagrant ssh dev
#这一步的目的是把压缩包直接放在vagrant共享目录下解压,
#结果在最后报软连接错误,直接放入虚拟机的自身目录就不会爆这个错误这个很重要
cp -r deployk8s-master deployk8s
cd deployk8s
  • 进入dev的虚拟主机通过SecureCRT
  1. 找到insecure_private_key
  2. 输入192.168.0.2 选择红色框



  • 需要把insecure_private_key弄到dev的~/.ssh/id_rsa中,借助git bash
scp -i ~/.vagrant.d/insecure_private_key \
~/.vagrant.d/insecure_private_key \
vagrant@192.168.0.2:~/.ssh/id_rsa
#这个id_rsa的权限是644,需要改为600,在dev机中执行:
chmod 600 ~/.ssh/id_rsa

  • 进入dev的虚拟主机
vagrant ssh dev
#这一步的目的是把压缩包直接放在vagrant共享目录下解压,
#结果在最后报软连接错误,直接放入虚拟机的自身目录就不会爆这个错误这个很重要
cp -r deployk8s-master deployk8s
cd deployk8s
  • 进入dev的虚拟主机

  • 如果可以翻墙,用下面的脚本。如果翻墙不了,我已经下载到源码里面了 进入vagrant里面下载。

# 下载cfssl
curl -O https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
curl -O https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
curl -O https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

# 下载keepalived v2.0.6
curl -O http://www.keepalived.org/software/keepalived-2.0.6.tar.gz

# 下载etcd v3.3.8
curl -O https://github.com/coreos/etcd/releases/download/v3.3.8/etcd-v3.3.8-linux-amd64.tar.gz

# 下载flannel v0.10.0
curl -O https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz

# 下载kubernetes v1.11.0
curl -O https://dl.k8s.io/v1.11.0/kubernetes-server-linux-amd64.tar.gz
最后就开始执行脚本进行部署吧。

  • 部署集群
./deployk8s.sh 2>&1 | tee deployk8s.log

image.png

https://vagrantcloud.com/centos/boxes/7/versions/1804.02/providers/virtualbox.box
https://dl.k8s.io/v1.11.0/kubernetes-server-linux-amd64.tar.gz
https://github.com/coreos/etcd/releases/download/v3.3.8/etcd-v3.3.8-linux-amd64.tar.gz
https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz
https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
http://www.keepalived.org/software/keepalived-2.0.6.tar.gz
https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
#下载后还放到No.10的deployk8s-master下就可以了。

PS:这种方式感觉很受用,感谢xujintao 的技术指导和他的github的思路引导成功部署的https://github.com/xujintao/deployk8s的一键部署!

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:『中级篇』Vagrant在本地搭建多节点K8S集群(65)
上一篇: 下一篇:

评论 (3)

  • chiocai| 2018年11月19日

    求帮忙,折腾的我快疯了。。。。

    ==========分发keepalived配置文件及启动========
    >>> 192.168.0.11
    分发keepalived二进制
    分发keepalived的systemd unit文件
    分发keepalived启动文件
    分发keepalived配置文件
    启动keepalived服务,检查服务
    验证keepalived服务
    wait 10s for setting vip
    Active: inactive (dead) since 一 2018-11-19 13:54:29 CST; 10s ago
    Device “eth1” does not exist.
    PING 192.168.0.10 (192.168.0.10) 56(84) bytes of data.
    From 192.168.0.11 icmp_seq=1 Destination Host Unreachable
    From 192.168.0.11 icmp_seq=2 Destination Host Unreachable
    From 192.168.0.11 icmp_seq=3 Destination Host Unreachable

    — 192.168.0.10 ping statistics —
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2000ms
    pipe 3
    启动keepalived服务失败,退出脚本
    第6步,部署keepalived和haproxy高可用失败

    • liming| 2018年11月19日

      有没有具体的配置,直接给个这个有点不太明白

      • chiocai| 2018年11月20日

        我是折腾的差点就放弃了,还好硬啃了两天你这一堆脚本,终于发现问题所在,是网卡名称环境变量导致(env.sh文件里的VIP_IF这个环境变量),这个地方建议作者要注明一下,否则新手在这里直接卡死;

        脚本一次能跑通的就没事,如果显示我上面出现的192.168.0.10 ping不通导致退出,则可以看看我下面的解决方式:

        1、进dev虚拟机,ip a 查看网卡相关信息,找到192.168.0.2这个网卡的名字,例如我的是enp0s8,有些是eth开头的;
        2、进入env.sh文件找到VIP_IF环境变量,将作者的VIP_IF=eth1改为VIP_IF=enp0s8(第1条查到的网卡名称)
        3、保存退出,重新运行脚本,完美搞定~~!

        另外之前还有一个问题,作者也最好注明一下:在下载相关包时curl -O下载显示完成,但实际文件并未完全下载,解压会出错,这时建议换成wget+网址这种方式,这就可以顺利下载并解压;(当然要在下载前设置代理环境变量FQ哦,如果源文件已经有了这些包可以忽略这个下载步骤)

        最后表达感谢作者写出这么多教程文章,真心向作者学习,谢谢。

  • 发表评论

    电子邮件地址不会被公开。 必填项已用*标注