使用vagrant安装虚拟机环境

安装virtualbox和vagrant

开启CPU虚拟化,win电脑开机前先进入bios查看Virtualization Support是否enable

下载安装virtualbox,记得要配置到环境变量里
https://www.virtualbox.org/wiki/Downloads

微信图片_20200805100531.png

下载安装vagrant,下载比较慢,安装包我存百度云盘了,有需要可以问我要链接
官方下载地址 https://www.vagrantup.com/downloads

安装完vagrant后重启电脑,然后打开cmd输入 vagrant -v 查看版本号,有版本号就表示安装成功。

使用vagrant快速创建virtualbox虚拟机
进入https://app.vagrantup.com/boxes/search,查看vagrant镜像。
在cmd输入 vagrant init centos/7

微信图片_20200805141259.png

$ vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

执行完上面的命令后,会在用户的家目录下生成Vagrantfile文件,接下来使用 vagrant up或者vagrant up --provider=virtualbox 命令启动虚拟环境。
结果报错了

微信图片_20200805142346.png

看样子是virtualbox版本太高了,我卸载了,重新安装了一个低版本的,再次执行 vagrant up,挂机一天,终于启动起来了。Vagrant 安装VirtualBox等虚拟机镜像.box下载缓慢问题
先用下载工具下载到本地后,然后使用“ vagrant box add ”添加,再“vagrant up”即可。

#将下载的镜像添加到virtualBox中
$ vagrant box add centos/7 E:\迅雷下载\CentOS-7-x86_64-Vagrant-1905_01.VirtualBox.box
#启动
$ vagrant up

虚拟机网络设置

在win电脑的cmd输入ipconfig命令,查看虚拟机的ip地址

微信截图_1596688701622.png

在Vagrantfile文件里打开注释,修改ip为

config.vm.network "private_network", ip: "192.168.56.10"

ip前面保持一致即可。
然后在cmd执行 vagrant reload 重启虚拟机,然后 vagrant ssh 进入虚拟机,在虚拟机执行 ip addr

微信截图_15966891635191.png

然后虚拟机里面ping windows电脑的ip,在windows电脑cmd里ping虚拟机的ip,检查宿主机和virtualBox之间的通信是否正常。

开启远程登陆,修改“/etc/ssh/sshd_config”
PermitRootLogin yes  (这个文件里好像没有,有的话就修改下)
PasswordAuthentication yes

然后重启SSHD

systemctl restart sshd

使用Xshell或SecureCRT进行远程连接。

使用vagrant安装三台虚拟机

我们搞集群环境时需要多台机器,使用vagrant可以很方便的创建出多个虚拟机。

在virtualbox的全局设定中,找到一个空间比较大的磁盘用用来存放镜像。
使用我们提供的vagrant文件,复制到非中文无空格目录下,运行vagrant up启动三个虚拟机。
下面是vagrantfile,使用它来创建三个虚拟机,分别为k8s-node1,k8s-node2和k8s-node3

Vagrant.configure("2") do |config|
   (1..3).each do |i|
        config.vm.define "k8s-node#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "centos/7"

            # 设置虚拟机的主机名
            node.vm.hostname="k8s-node#{i}"

            # 设置虚拟机的IP
            node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"

            # 设置主机与虚拟机的共享目录
            # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"

            # VirtaulBox相关配置
            node.vm.provider "virtualbox" do |v|
                # 设置虚拟机的名称
                v.name = "k8s-node#{i}"
                # 设置虚拟机的内存大小
                v.memory = 4096
                # 设置虚拟机的CPU个数
                v.cpus = 4
            end
        end
   end
end

进入到三个虚拟机,开启root的密码访问权限

Vagrant ssh k8s-node1
Vagrant ssh k8s-node2
Vagrant ssh k8s-node3

su root 密码为vagrant
vi /etc/ssh/sshd_config

修改
# PermitRootLogin yes (这个文件里好像没有,有的话就修改下)
PasswordAuthentication yes

systemctl restart sshd.service

设置完后就可以用Xshell进行连接三台虚拟机了。

关于在"网络地址转换"的连接方式下,三个节点的eth0,IP地址相同的问题。

问题描述:查看k8s-node1的路由表:

[root@k8s-node1 ~]# ip route show
default via 10.0.2.2 dev eth0 proto dhcp metric 100 
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 metric 100 
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.100 metric 101 
[root@k8s-node1 ~

能够看到路由表中记录的是,通过端口eth0进行数据包的收发。

分别查看k8s-node1,k8s-node2和k8s-node3的eth0所绑定的IP地址,发现它们都是相同的,全都是10.0.2.15,这些地址是供kubernetes集群通信用的,区别于eth1上的IP地址,是通远程管理使用的。

[root@k8s-node1 ~]# ip addr
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:8a:fe:e6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 84418sec preferred_lft 84418sec
    inet6 fe80::5054:ff:fe8a:fee6/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:a3:ca:c0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.100/24 brd 192.168.56.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fea3:cac0/64 scope link 
       valid_lft forever preferred_lft forever
[root@k8s-node1 ~]# 

原因分析:这是因为它们使用是端口转发规则,使用同一个地址,通过不同的端口来区分。但是这种端口转发规则在以后的使用中会产生很多不必要的问题,所以需要修改为NAT网络类型。

解决方法:

  • 先关闭三个节点。
  • 在virtualbox里选择三个节点,然后执行“管理”->"全局设定"->“网络”,添加一个NAT网络。
  • 分别修改每台设备的网络类型,选择NAT网络,并在高级选项中刷新重新生成MAC地址,然后再无界面启动三个节点。
  • 再次查看三个节点的IP,互相能ping通,并且ping baidu.com 也要能通。

虚拟机安装docker

https://docs.docker.com/engine/install/centos/

如果有老版本先执行卸载

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装依赖

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Optional: Enable the nightly or test repositories.可选的命令就先不执行

安装docker

$ sudo yum install -y docker-ce docker-ce-cli containerd.io
$ docker -v
$ sudo systemctl start docker

设置docker开机自动启动

sudo systemctl enable docker

配置docker镜像加速
在阿里云控制台找到容器镜像服务,找到镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://这里需要登陆阿里云获取.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker安装mysql

sudo docker pull mysql:8.0
在centos系统中先创建几个文件夹

sudo  rm -r /mydata
sudo mkdir -p /mydata/mysql/data
sudo mkdir -p /mydata/mysql/log
sudo mkdir -p /mydata/mysql/conf

启动容器

sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0 

发现启动了mysql后自动退出了,百度了下说是mysql占用内存过多,那我删除容器,重建/mydata再试一下

sudo docker ps -a
sudo docker rm 容器id

sudo docker run -it -m 300M --memory-reservation 200M \
-p 3306:3306 --name mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0 /bin/bash

进入mysql容器内部
sudo docker exec -it mysql /bin/bash
输入exit退出容器。

添加mysql配置文件 sudo vi /mydata/mysql/conf/my.cnf
重启mysql
sudo docker restart mysql
重启后进入mysql容器,发现 /etc/mysql 目录下也多了一个my.cnf文件

设置启动docker时,即运行mysql

docker update mysql --restart=always

执行 mysql -uroot -p 报下面错误,百度试了一些方法还没解决先放着。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

docker安装redis

sudo docker pull redis
sudo mkdir -p /mydata/redis/data
sudo mkdir -p /mydata/redis/conf
sudo touch /mydata/redis/conf/redis.conf
echo "appendonly yes"  >> /mydata/redis/conf/redis.conf

sudo docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis \
redis-server /etc/redis/redis.conf

sudo docker exec -it redis redis-cli

127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> get key1
"v1"
127.0.0.1:6379> 

设置redis持久化,sudo vi /mydata/redis/conf/redis.conf

appendonly yes

设置redis容器在docker启动的时候启动

docker update redis --restart=always

其他配置按需添加,然后就可以使用客户端工具进行连接。

docker安装nacos

docker pull nacos/nacos-server
docker run -d -p 8848:8848 \
-e MODE=standalone \
-v /mydata/nacos/init.d:/home/nacos/init.d \
-v /mydata/nacos/logs:/home/nacos/logs \
--restart always --name nacos nacos/nacos-server

页面访问http://你的ip地址:8848/nacos 用户名:nacos 密码:nacos

docker安装RabbitMQ

docker run -d --name rabbitmq \
-p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management

docker update rabbitmq --restart=always

启动容器后访问:http://192.168.56.10:15672,默认登录名和密码都是 guest

docker安装zipkin

docker run -d -p 9411:9411 openzipkin/zipkin

浏览器访问:192.168.56.10:9411,上面链路追踪数据默认是存在内存里的。
生产环境需要把数据存到es里,所以用以下命令启动容器。

docker run --env STORAGE_TYPE=elasticsearch \
--env ES_HOST=192.168.56.10:9200 openzipkin/zipkin-dependencies

设置防火墙

#查看防火墙状态
systemctl status firewalld  
#查看防火墙是否是开机启动
systemctl list-unit-files|grep firewalld 
#关闭开机启动防火墙
systemctl disable firewalld 
#停止防火墙
systemctl stop firewalld 

whereis mysql:查看mysql的安装位置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350