k8s 部署tomcat完整版

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

tomcat部署要点总结: 

利用configmap实现对server.xml的挂载
利用tomcat-ingress实现对tomcat对外网络暴露 
利用pv实现对tomcat日志存储
利用statefulset创建tomcat pod。 
利用mt-math.yaml创建mt-math命名空间
注:默认已安装ingress-nginx,core-dns,NFS

1.NFS共享目录下创建tomcat 日志存放目录及项目存放目录;这里手动创建pv,当然pv也可以进行动态创建

mkdir -p /NFS/tomcat-wwwroot/ROOT/;mkdir -p /NFS/pv-tomcat-log/{01,02,03}  #创建日志目录及项目目录
echo "k8s-ingress-tomcat-nfs-pv -Wyltest">/mnt/tomcat-wwwroot/ROOT/index.jsp #创建测试首页文件jsp
mkdir -p /server/yaml/app/tomcat #在master上创建yaml文件存放目录

2.创建3个pv yaml文件 分别为目录分别绑定到目录:/NFS/pv-tomcat-log/{01,02,03}

cd /server/yaml/app/tomcat/
 cat tomcat-pv-nfs.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-tomcat01                     #创建的pv名称可创建多个.
  namespace: mt-math                    #属于的命名空间
spec:
  capacity:
    storage: 200M                        #创建的pv容量为1G
  accessModes:
  - ReadWriteMany                       #pv的访问模式:可读可写可挂在多个节点
  persistentVolumeReclaimPolicy: Recycle #回收策略
  #storageClassName: xxx
  nfs:                                  #创建的pv数据来源
    path: /NFS/pv-tomcat-log/01                     #数据源目录
    server: 192.168.0.14                #数据源ip
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-tomcat02                     #创建的pv名称可创建多个.
  namespace: mt-math                    #属于的命名空间
spec:
  capacity:
    storage: 200M                        #创建的pv容量为1G
  accessModes:
  - ReadWriteMany                       #pv的访问模式:可读可写可挂在多个节点
  #persistentVolumeReclaimPolicy: Retain #回收策略
  persistentVolumeReclaimPolicy: Recycle #回收策略 由于是持久化日志没必要删除pod保留日志。只是为了方便查看日志内容。
  #storageClassName: xxx
  nfs:                                  #创建的pv数据来源
    path: /NFS/pv-tomcat-log/02                     #数据源目录
    server: 192.168.0.14                #数据源ip
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-tomcat03                     #创建的pv名称可创建多个.
  namespace: mt-math                    #属于的命名空间
spec:
  capacity:
    storage: 200M                        #创建的pv容量为1G
  accessModes:
  - ReadWriteMany                       #pv的访问模式:可读可写可挂在多个节点
  persistentVolumeReclaimPolicy: Recycle #回收策略
  #storageClassName: xxx
  nfs:                                  #创建的pv数据来源
    path: /NFS/pv-tomcat-log/03                     #数据源目录
    server: 192.168.0.14                #数据源ip

3.创建mt-math命名空间,

cd /server/yaml/app/namespace
cat mt-math.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: mt-math

4.创建对tomcat 配置文件server.xml创建configmap yaml文件

cat tomcat-configmap.yaml 
apiVersion: v1
data:
  server.xml: |
    
    
    
    
      
      
      
      
      
      
      
      
      
      

      
      
        
        
      

      
      

        
        


        
        
        
        
        
        

        
        


        

        
        

          
          

          
          
            
            
          

          

            
            

            
            

          
        
      
    
kind: ConfigMap
metadata:
  creationTimestamp: 2019-06-05T03:04:53Z
  name: tomcat-configmap
  namespace: mt-math

5.创建tomcat pod这里创建为无头服务

apiVersion: v1
kind: Service
metadata:
  namespace: mt-math
  name: tomcat
  labels:
    app: tomcat
spec:
  ports:
  - port: 8080
    name: web
  clusterIP: None
  selector:
    app: tomcat
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: mt-math
  name: web
spec:
  serviceName: "tomcat"
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      namespace: mt-math
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: harbor.bestyunyan.club:5588/library/tomcat7:01
        ports:
        - containerPort: 8080
          name: web
        volumeMounts:
        - name: log-pvc
          mountPath: /opt/tomcat/logs
        - name: tomcat-nfs-webapps
          mountPath: /opt/tomcat/webapps
        - name: tomcat-serverxml
          mountPath: /opt/tomcat/conf/server.xml
          subPath: server.xml

      volumes:                       
      - name: tomcat-nfs-webapps             
        nfs:                         
          server: 192.168.0.14        
          path: /NFS/tomcat-wwwroot      
      - name: tomcat-serverxml
        configMap:
          name: tomcat-configmap
          items:
          - key: server.xml
            path: server.xml
    
  volumeClaimTemplates:
  - metadata:
      name: log-pvc
      namespace: mt-math
    spec:
      accessModes: [ "ReadWriteMany" ]
      resources:
        requests:
          storage: 200M

6.创建tomcat ingress 文件实现对外访问,这里写的域名为测试域名需要在客户端hosts添加进行本地解析

cat tomcat-ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-tomcat-wyl
  namespace: mt-math
  annotations: 
    kubernets.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "route"
    nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
spec:
  rules:
  - host: tomcat.bestyunyan.com  #生产中该域名应当可以被公网解析
    http:
      paths:
      - path: 
        backend:
          serviceName: tomcat
          servicePort: 8080

7.查看创建的yamal文件

k8s 部署tomcat完整版_第1张图片

14b9fdffb506cd511e4aa48a8e98b276279.jpg

8.执行创建相关服务

k8s 部署tomcat完整版_第2张图片

9.检查服务状态OK

k8s 部署tomcat完整版_第3张图片

1dacaec2dd9bdcf5c115f2be83fc4b3028e.jpg

10.测试dns解析是否OK

k8s 部署tomcat完整版_第4张图片

11.在客户端hosts中添加本地解析解析地址:

434b0a70722b026416be2391a80550b4556.jpg

k8s 部署tomcat完整版_第5张图片

12.客户端访问测试:

7d4f11ad5fbdeb654debbf9abf28cf9f63f.jpg

k8s 部署tomcat完整版_第6张图片

13.查看日志是否持久化, 为方便起见在master mnt目下挂载NFS进行查看

k8s 部署tomcat完整版_第7张图片

14.查看pod中server.xml是不是我们挂载的。

5bf7a731e851bce3b4347916416688405fc.jpg

转载于:https://my.oschina.net/wangyunlong/blog/3058693

你可能感兴趣的:(k8s 部署tomcat完整版)