k8s集羣基於PV運行tomcat

1. 準備

1. k8s集羣

已經搭建了一個master節點和兩個node節點的k8s集羣
搭建過程見我另一篇博客
https://blog.csdn.net/weixin_42183854/article/details/105107897

2. jdk1.8和tomcat8.5

將jdk1.8和tomcat8.5的包上傳到master節點
在這裏插入圖片描述

3. nfs(pv和pvc)已有

nfs服務和pv服務已經搭建好,並且能使用
搭建過程見參照:PV PVC

2. 基礎鏡像

1. 編寫dockerfile文件

編寫dockerfile文件,製作基礎鏡像
vim dockerfile

# Centos7 image
# VERSION 2
# Author:  sixmillions

# 指定基於的容器鏡像
FROM centos:7

# 維護者信息
MAINTAINER sixmillions

# 鏡像的操作指令
# 設置時間
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && echo 'Asia/Shanghai' >/etc/timezone
# 指定jdk1.8
add jdk-8u221-linux-x64.tar.gz /usr/local/
add apache-tomcat-8.5.34.tar.gz /usr/local/
# RUN rm -f /usr/local/apache-tomcat-8.5.34/webapps/ROOT/favicon.ico
RUN mkdir -p /data
env JAVA_HOME=/usr/local/jdk1.8.0_221
env PATH=${JAVA_HOME}/bin:$PATH
env LC_ALL=en_US.UTF-8
# 一會我們做pv存儲,直接將webapps目錄映射出來.
# ADD helloworld.war /usr/local/apache-tomcat-8.5.34/webapps/
# RUN chmod +x /usr/local/apache-tomcat-7.0.68/bin/*
expose 8080

# 容器啓動時執行指令
ENTRYPOINT [ "/usr/local/apache-tomcat-8.5.34/bin/catalina.sh", "run" ]

啓動命令一定要設置爲catalina.sh,不然啓動起來就死了.
在這裏插入圖片描述

2. 打包基礎鏡像

docker build -t helloworldtomcat8 .

在這裏插入圖片描述

docker images

在這裏插入圖片描述

3. 上傳到私有倉庫

將打包好的鏡像上傳到私有倉庫,方便其他節點獲取
私有倉庫不會的參照我另一篇博客:
https://blog.csdn.net/weixin_42183854/article/details/105107985

1. master節點

# 改個名字
docker tag helloworldtomcat8 192.168.31.252:5000/helloworldtomcat8:latest
# 上傳
docker push 192.168.31.252:5000/helloworldtomcat8:latest
# 查看
curl http://192.168.31.252:5000/v2/_catalog

在這裏插入圖片描述

2. node節點

下載鏡像

docker pull 192.168.31.252:5000/helloworldtomcat8:latest

3. 構建PV

1. 創建目錄

1. master(或者文件服務器)

主機ip:192.168.31.252
/k8s/data 已經掛載

mkdir -p /k8s/data/log
mkdir -p /k8s/data/webapps

2. node節點

mkdir /k8s/data/webapps
mkdir /k8s/data/logs
showmount -e 192.168.31.252 
mount -t nfs 192.168.31.252:/sixmillions/data/k8s/logs /k8s/data/logs
mount -t nfs 192.168.31.252:/sixmillions/data/k8s/webapps /k8s/data/webapps/

3. 很重要(注意)

因爲我們要掛載tomcat的webapps目錄,
但是這個目錄有很多tomcat的自帶的文件,
我們要是直接掛載一個空的,那麼容器中的也是空的,
所以爲了讓我們可以訪問tomcat,可以解壓一份放到們主機的webapps目錄下.

tar -axvf apache-tomcat-8.5.34.tar.gz 
cp -r apache-tomcat-8.5.34/webapps/* /sixmillions/data/k8s/webapps/

 jieya

2. 構建log的pv

mkdir -p /sixmillions/data/k8s/logs

vim pv_tomcat_logs.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name:  pv-tomcat-logs
  labels:
    app: tomcatlogsnfs
spec:
  capacity: 
    storage: 3Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /sixmillions/data/k8s/logs
    server: 192.168.31.252
kubectl create -f pv_tomcat_logs.yaml

在這裏插入圖片描述

3. 構建webapps的pv

mkdir -p /sixmillions/data/k8s/webapps

vim pv_tomcat_webapps.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name:  pv-tomcat-webapps
  labels:
    app: tomcatwebappsnfs
spec:
  capacity: 
    storage: 2Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /sixmillions/data/k8s/webapps
    server: 192.168.31.252
kubectl create -f pv_tomcat_webapps.yaml

在這裏插入圖片描述

4. 查看

kubectl get pv

在這裏插入圖片描述

4.構建PVC

1. 構建logs的pvc

vim pvc_tomcat_logs.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: tomcat-pvc-logs
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
    selector:
  selector:
    matchLabels:
      app: tomcatlogsnfs
kubectl create -f pvc_tomcat_logs.yaml

在這裏插入圖片描述

2. 構建webapps的pvc

vim pvc_tomcat_webapps.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: tomcat-pvc-webapps
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
    selector:
  selector:
    matchLabels:
      app: tomcatwebappsnfs
kubectl create -f pvc_tomcat_webapps.yaml

在這裏插入圖片描述

3. 查看

kubectl get pvc

kubectl get pvc

5. 構建tomcat

1. 編寫yaml

vim tomcat.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata: 
  name: tomcattest
spec:
  selector:
    matchLabels:
      app: tomcattest
  template: 
    metadata: 
      labels: 
        app: tomcattest
    spec: 
      containers: 
        - name: tomcattest
          image: 192.168.31.252:5000/helloworldtomcat8:latest
          imagePullPolicy: Always
          ports: 
            - containerPort: 8080
          volumeMounts:
            - name: logs
              mountPath: /usr/local/apache-tomcat-8.5.34/logs
            - name: webapps
              mountPath: /usr/local/apache-tomcat-8.5.34/webapps
      volumes:
        - name: logs
          persistentVolumeClaim:
            claimName: tomcat-pvc-logs
        - name: webapps
          persistentVolumeClaim:
            claimName: tomcat-pvc-webapps

2.構建

kubectl create -f tomcat.yaml

在這裏插入圖片描述
查看

kubectl get pod

在這裏插入圖片描述

3.查看

看一下映射的log

ls /sixmillions/data/k8s/logs/

在這裏插入圖片描述

6. 構建service

1. 編寫yaml文件

vim tomcat-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: tomcattest-service
spec:
  type: NodePort
  ports:
  - port: 8080
    name: tomcat
    targetPort: 8080
    nodePort: 32012
    protocol: TCP
  selector:
    app: tomcattest

2. 構建Service

kubectl create -f tomcattest-svc.yaml 
kubectl get svc

在這裏插入圖片描述

3.查看

在這裏插入圖片描述

7. 測試

1. 上傳一個helloworld.war包

將war包移動到我們映射目錄

mv helloworld.war data/k8s/webapps/

在這裏插入圖片描述

2. 訪問這個war包

在這裏插入圖片描述

3.增加一個界面在映射文件

cd data/k8s/webapps/helloworld
vim index.html
K8s-homework-successful!

在這裏插入圖片描述

4.訪問

在這裏插入圖片描述

8.成功

總結: 成功了就簡單了.過程很艱辛.
碼字不易,且行且珍惜.

歡迎留言評論.
聯繫方式 Potato通訊賬號:sixmillions

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章