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
總結
這次的親身體驗雖然是困難重重,但是總體是快樂而且有收穫的。
下面就奉上我們幾個小菜鳥經歷的過程圖吧,哈哈哈