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