前言


  这周对于小编来说真的是忙碌的一周,学校迎来了实训周,每天都要奔波在来去的路上,最重要的是总感觉没学到啥,最最重要的是,真的是太热了,太阳真的太毒。
  实训结束后第一天就接到了马上要考试的消息,要在学校部署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


总结

  这次的亲身体验虽然是困难重重,但是总体是快乐而且有收获的。

  下面就奉上我们几个小菜鸟经历的过程图吧,哈哈哈

这里写图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐