1. 程式人生 > >ITOO-K8s部署總括

ITOO-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


總結

  這次的親身體驗雖然是困難重重,但是總體是快樂而且有收穫的。

  下面就奉上我們幾個小菜鳥經歷的過程圖吧,哈哈哈

這裡寫圖片描述