ITOO-K8s部署总括
前言 这周对于小编来说真的是忙碌的一周,学校迎来了实训周,每天都要奔波在来去的路上,最重要的是总感觉没学到啥,最最重要的是,真的是太热了,太阳真的太毒。 实训结束后第一天就接到了马上要考试的消息,要在学校部署K8s,这对于小编来说,还是很激动的,毕竟学了一段时间,在自己电脑的虚拟机上总是不过瘾的,毕竟没有很好的条件,集群想到达到的效果一直都不是太好。 开始对K8s的整体了解都...
前言
这周对于小编来说真的是忙碌的一周,学校迎来了实训周,每天都要奔波在来去的路上,最重要的是总感觉没学到啥,最最重要的是,真的是太热了,太阳真的太毒。
实训结束后第一天就接到了马上要考试的消息,要在学校部署K8s,这对于小编来说,还是很激动的,毕竟学了一段时间,在自己电脑的虚拟机上总是不过瘾的,毕竟没有很好的条件,集群想到达到的效果一直都不是太好。
开始对K8s的整体了解都不是太好,散散的,通过这次学习还是成长不少的。
下面就言归正传吧。
正文
NO1:搭建集群
由于之前就用过K8s,所以基础的环境都有,证书部分都已经可以直接使用,有关证书的部分小编在之前的博客中也有解释到。
高可用集群所需节点配置如下:(本次使用中是用到了10台机器)
·部署节点——x1 : 运行这份 ansible 脚本的节点
· etcd节点——x3 : 注意etcd集群必须是1,3,5,7…奇数个节点(运用了Raft算法)
· master节点—-x2 : 根据实际集群规模可以增加节点数,需要额外规划一个master VIP(虚地址,此VIP并不占用服务器)
· lb节点——–x2 : 负载均衡节点两个,安装 haproxy+keepalived
· node节点——x3 : 真正应用负载的节点
为每个节点安装依赖工具:(这里因为已经运用了SSH协议,只需要再一台机器上操作即可)
Ubuntu 16.04 请执行以下脚本:
# 文档中脚本默认均以root用户执行
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
# 安装python2
apt-get install python2.7
# Ubuntu16.04可能需要配置以下软连接
ln -s /usr/bin/python2.7 /usr/bin/python
CentOS 7 请执行以下脚本:
# 文档中脚本默认均以root用户执行
# 安装 epel 源并更新
yum install epel-release -y
yum update
# 安装python
yum install python -y
在deploy节点安装及准备ansible:(这里也可以直接在本地电脑上下载好,然后传到服务器上,也很快哦)
# Ubuntu 16.04
apt-get install git python-pip -y
# CentOS 7
yum install git python-pip -y
# pip安装ansible(国内如果安装太慢可以直接用pip阿里云加速)
#pip install pip --upgrade
#pip install ansible
pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
在deploy节点编排k8s安装:(可以自己在本地下载,再clone)
4.1 下载项目源码
#使用git clone
git clone https://github.com/gjmzj/kubeasz.git
mkdir -p /etc/ansible
mv kubeasz/* /etc/ansible
4.2
tar zxvf k8s.1-9-8.tar.gz # 以安装k8s v1.9.8为例
mv bin/* /etc/ansible/bin
4.3 下载离线docker镜像 服务器使用内部yum源/apt源,但是无法访问公网情况下,请下载离线docker镜像完成集群安装;从百度云盘把basic_images_kubeasz_x.y.tar.gz 下载解压到/etc/ansible/down 目录
tar zxvf basic_images_kubeasz_0.2.tar.gz -C /etc/ansible/down
4.4 配置集群参数
cd /etc/ansible
cp example/hosts.m-masters.example hosts
vim hosts # 根据实际情况修改此hosts文件,文本中显示集群中各服务器承担什么职位
4.5 一键安装
ansible-playbook 90.setup.yml
4.5.1 也可以分步安装,并且可以每一步都得到验证。
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml
NO2:自定义镜像构建
因为ITOO项目分为六个服务,要分别部署到K8s中,考虑到都要用镜像问题,并且有些镜像使用相同,为了一些重复性工作,所以使用了Harbor(Harbor构建小编会在今后的博客中体现),把ITOO使用到的镜像先放到Haobor上,然后各服务再去拉取各自需要的镜像。
在ITOO中一共使用了两种镜像,一种是为所有基础模块提供的镜像,这种镜像可以直接使Tomcat中的镜像即可,一种是为了考评模块提供的镜像,因为使用了session共享,所以这种镜像是由我们自己自定义的镜像。
这次是用DockerFile来制作一个自定义的镜像。
1. 制作自己的Dockerfile:
#基础镜像为harbor上pull下来的基础镜像
from reg.dynamicharbor.com/web/tomcat:8.5-jre8-alpine #这里就是基础模块使用的公共的镜像
#设置环境变量
ENV WORK_PATH /usr/local/tomcat
#删除/usr/local/tomcat/conf下面的相关xml文件
RUN rm $WORK_PATH/conf/context.xml
RUN rm $WORK_PATH/conf/web.xml
RUN rm $WORK_PATH/conf/server.xml
#替换成我们本地已经设置好的配置文件(将这些文件放在dockerfile同一目录下)
COPY ./context.xml $WORK_PATH/conf
COPY ./web.xml $WORK_PATH/conf
COPY ./server.xml $WORK_PATH/conf
COPY ./redis-data-cache.properties $WORK_PATH/conf
COPY ./commons-logging-1.2.jar $WORK_PATH/lib
COPY ./commons-pool2-2.4.2.jar $WORK_PATH/lib
COPY ./jedis-2.9.0.jar $WORK_PATH/lib
COPY ./tomcat-cluster-redis-session-manager-2.0.2.jar $WORK_PATH/lib
#这些在之前考评Tomcat中的拉取下来的
#设置中央时区(上海)
RUN apk update && apk add curl bash tree tzdata \
&& cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo -ne "Alpine Linux 3.4 image. (`uname -rsv`)\n" >> /root/.built
2.进入当前目录:cd /home/examtomcat
制作docker镜像:docker build -t mytomcat:1.0 .
3.查看制作好的镜像:docker images
4.运行该镜像:docker run -it -d -- mytomcat:1.0 /bin/sh
5.查看运行的容器:docker ps
6.进入该容器:docker exec -it ******容器名 /bin/bash
7.将该容器推到harbor上:
docker tag mytomcat:1.0 (镜像名 )reg.dynamicharbor.com/web/mytomcat:1.0(自己命名)
docker push reg.dynamicharbor.com/web/mytomcat:1.0
到此,自定义的镜像就做好了。
NO3:部署ITOO
ITOO整体结构图
前端部署:
1、把nginx.conf放在my.yaml的指定目录下。/home/nginx.conf
2、把前端打包dist放在my.yaml指定目录下。/usr/local/dist
3、创建my.yaml直接在dashbord右上角点击creat即可。具体详解见<前端.zip>
4、创建mynginx.yaml
前后端nginx部署:
1、将nginxlink.conf放在指定目录下:/home/nginxlink.conf
2、创建nginxlink.yaml 和nginxlinkSer.yaml
后端部署:
1、将war包放在指定目录下
2、创建Deployment
3、创建service
总结
这次的亲身体验虽然是困难重重,但是总体是快乐而且有收获的。
下面就奉上我们几个小菜鸟经历的过程图吧,哈哈哈
更多推荐
所有评论(0)