版权声明:本文为博主原创文章,可以转载,但是请注明出处。脚本搭建Docker及Kubernetes集群_JYCF的博客-CSDN博客
编写:张家豪
搭建方式:Win11、VMware虚拟机
双节点master和node节点部署,node节点可以自己根据需求创建多节点。
在配置完成IP后使用ssh登录,注意,实际比赛中是在openstack上搭建的两台主机,IP在openstack Web中设置过的,如果不是你想要的IP只需要重新分配一个即可。
a) Master节点配置主机名及IP地址,创建hosts映射
#hostnamectl set-hostname master\node
#vim /etc/sysconfig/network-scripts/ifcfg-ensXX
master地址为10.0.0.2,node节点为10.0.0.3
#echo -e “10.0.0.2 master\n10.0.0.3 node” >> /etc/hosts
#scp /etc/hosts 10.0.0.3:/etc/hosts 同步到node节点
建议将IP修改好以后直接上传镜像,因为镜像文件有点大,需要时间。
b) 关闭Selinux和防火墙
#setenforce 0
#sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
以上两条命令关闭了selinux,第一条是即时生效但重启后会恢复配置文件的设置,所以第二条设置配置文件也为disabled关闭。
#systemctl stop firewalld && systemctl disable firewalld
上面关闭了防火墙并已处理开机自启动
c) 清空iptables规则:
#iptables -F\X\Z 后面三个都分别执行
#/usr/sbin/iptables-save 保存配置
d) 上传镜像挂载并配置YUM源
在secureFX中将Chinaskill Cloud PaaS.iso和centos7 的镜像,实际比赛无需上 传centos,以为实际比赛中controller节点已经有ftp的服务器,只需要修改YUM源ftp://controller/centos,但在虚拟机中我们的controller已经删除了,没有了这台机器,所以我们需要上传的master节点再搭建一次。
#mount -o loop /root/Chinaskill Cloud PaaS.iso /mnt/
#cp -rfv /mnt/* /opt/ 拷贝到opt中用于容器云的yum仓库。
#mkdir /centos 创建一个文件夹用于搭建centos软件仓
#mount -o loop /root/centos7.iso /centos
#vim /etc/fstab 将上面的centos7挂载信息写到fstab中
#mv /etc/yum.repos.d/* /home
#vi /etc/yum.repos.d/k8s.repo
[centos]
name=centos
baseurl=file:///centos
gpgcheck=0
enabled=1
[k8s]
name=k8s
baseurl=file:///opt/kubernetes-repo
gpgcheck=0
enabled=1
:wq
#yum install vsftpd
#echo anon_root=/ >> /etc/vsftpd/vsftpd.conf
#systemctl start vsftpd && systemctl enable vsftpd
以上master节点基本搭建完成,在node 节点中配置yum源即可。
所有脚本在/opt中,现在进入opt目录在执行脚本
a) 安装docker master节点
#./k8s_harbor_install.sh
网页登陆到Harbor仓库(http: //masterIP)
b) 上传镜像
#cd /opt/
#./k8s_image_push.sh
输入仓库地址不加http/https:10.0.0.2
输入镜像仓库用户名:admin
输入镜像仓库用户密码:Harbor12345
您设置的仓库地址为:10.0.0.2,用户名admin,密码XXX
是否确定(Y/N):Y
进入网站查看镜像是否存在。
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7BDE4B27D5-8042-4E51-8148-C83BC07ABE19%7D)
c) 部署kubernetes集群
master节点:
#cd /opt/
#./k8s_master_install.sh
https: //IP:30000 为kubernetes Web界面
使用令牌登录,输入令牌(在执行完k8s_master_install.sh后会出现一个token复制下来)
没有复制到的话可以通过以下命令获取:
# kubectl -n kubernetes-dashboard describe secret $(kubectl -n Kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7B752CFDE2-8E46-465B-8A42-643DDAAC300B%7D)
输入Token后进入Dashboard仪表盘界面
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7BD31E5E9E-DE72-48C1-8845-D7F7581F90B8%7D)
d) node节点加入集群
node节点:
#k8s_node_install.sh
需要将脚本同步到node节点,目录无所谓,执行即可。
以上执行完成后openstack及k8s所有搭建完成
1.搭建wordpress博客系统
a) 需要先拉取镜像文件,点击下方复制按钮获得拉取命令。
#docker pull 192.168.200.10/library/wordpress@sha256:12ffa2afe76dc0854edcf94f4a4e23a2afc02ef8b3a7b87c0351bee40087496a
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7BDF655CA8-2F7E-4B9B-98B9-1149BAF83E9D%7D)
b) 拉取数据库地址,因为博客系统需要在数据库中获取信息。
#docker pull 192.168.200.10/library/mysql@sha256:bfcef110bc3892d329ea483fd3e69fc5162a36f1b9089275c7f8bf64717787c0
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7BBED375E2-70CD-4BFB-A9B8-BFA570B02894%7D)
c) 运行镜像文件
#docker run --name wordpress-mysql -e MYSQL_ROOT_PASSWORD=XXXXXX -d mysql:5.6
--name 后跟名字,给你的数据库赋予一个name,自定义。
-e MYSQL_ROOT_PASSWORD= 设置数据库root用户密码。
-d mysql:5.6 使用数据库:号后是tag版本号,可以在harbor中查看版本号信息。
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7BEC2F6D4D-30B4-4F65-8EA1-EBD5F172197D%7D)
d) 运行wordpress镜像并连接数据库
#docker run --name wordpress --link wordpress-mysql -p 8080:80 -d wordpress
--name 实例名称
--link 链接到数据库
-p 内部端口80,在虚拟机外访问80被harbor占用,也已内部80映射到外部8080端口访问wordpress。
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7B3F43D58E-9695-403A-B58B-ED5A7496E6BE%7D)
e) 在浏览器中使用http://YourIP:8080访问你的博客系统
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7B576A7F2B-6F1C-44EA-89CD-0791980705CE%7D)
f) 链接docker实例
#docker exec -it 实例名称 bash
![img](file:///C:/Users/Administrator/AppData/Local/Microsoft/Windows/Clipboard/HistoryData/%7BEF1CA530-D803-4E55-83DB-96F455AE7013%7D/%7B3F106F33-2C03-4FC6-A83E-801D21265E30%7D/ResourceMap/%7B35F99999-D0D1-4D8D-B64A-213207778FDE%7D)
因为docker是容器虚拟化,在docker的架构中所有实例都是共享一个内核隔离运行,所以mysql和nginx在运行的时候你是找不到/var/www/html以及数据库的配置地址,需要使用命令链接进入数据库,在这里面进行设置和查看。