『中级篇』Vagrant在本地搭建多节点K8S集群(65)
2018-10-19 07:47:51
李明
  • 访问次数: 379
  • 注册日期: 2018-07-09
  • 最后登录: 2020-03-30

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

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

Tectonic

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

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

16689938320e68e4?w=1240&h=677&f=png&s=25

  • 账号注册

166899383229fd32?w=985&h=145&f=png&s=158
1668993832177ce5?w=613&h=435&f=png&s=370
16689938332abff9?w=479&h=352&f=png&s=152
1668993833938cfa?w=932&h=221&f=png&s=231

  • 垃圾邮件里面有

166899383382461a?w=1240&h=570&f=png&s=17
166899397e96c20f?w=790&h=433&f=png&s=229
166899397ed73581?w=966&h=831&f=png&s=653
166899397efb7640?w=741&h=781&f=png&s=145

  • 注册成功

166899398251203e?w=1240&h=766&f=png&s=15

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

1668993983fe1cb6?w=1240&h=323&f=png&s=10
16689939887d9e73?w=850&h=236&f=png&s=189

  • 通过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:

1668993a8b349e98?w=811&h=448&f=png&s=143

开启翻墙后

1668993a8df4fe9f?w=1192&h=602&f=png&s=91

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

shell vagrant的方式安装k8s集群

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

  • 下载源码

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

1668993a90d7ad26?w=851&h=179&f=png&s=115

  • 本地开发机

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

1668993a925d154c?w=1115&h=833&f=png&s=48

  • 虚机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

1668993a93039a4e?w=1032&h=773&f=png&s=10

  • 把Vagrantfile中的box名与box镜像关联起来

# vagrant box add centos7 path_to_your_centos7 # 例如: vagrant box add centos7 centos7.box

1668993a94b52f88?w=1071&h=234&f=png&s=11

  • 启动开发机(dev)

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

vagrant up dev

1668993b1e2a55c4?w=1103&h=555&f=png&s=23

  • 启动集群 要安装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


    1668993b1f2045b3?w=969&h=350&f=png&s=338

  2. 输入192.168.0.2 选择红色框


    1668993b32141568?w=631&h=643&f=png&s=386

    1668993baf552eb9?w=1240&h=652&f=png&s=20

    1668993bb2eaea43?w=660&h=542&f=png&s=347

    1668993bba1281be?w=622&h=115&f=png&s=252

  • 需要把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

1668993bb9f80596?w=731&h=272&f=png&s=320

  • 进入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 最后就开始执行脚本进行部署吧。

1668993c350992e7?w=1220&h=565&f=png&s=90

  • 部署集群

./deployk8s.sh 2>&1 | tee deployk8s.log

1668993c321af320?w=978&h=453&f=png&s=175
1668993c36439de0?w=573&h=148&f=png&s=641
1668993c38e0b123?w=610&h=185&f=png&s=536

本来想吧几个文件上传到github让懒人老铁不直接下载了,确实上传太慢了我放弃了我直接大家网址,他们通过迅雷下载也很快的。

image.png
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下就可以了。

有老铁问我,dev,master,node,他们之间的关系dev 就是锤子,node 就是房子,master就是打开房子的大门。用锤子打造了一个建筑,但是锤子不属于建筑物,所以ping 什么一系列的操作都ping不通pod的。

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

1668993c4b61485a?w=1080&h=541&f=png&s=45