2019独角兽企业重金招聘Python工程师标准>>>
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文件
8.执行创建相关服务
9.检查服务状态OK
10.测试dns解析是否OK
11.在客户端hosts中添加本地解析解析地址:
12.客户端访问测试:
13.查看日志是否持久化, 为方便起见在master mnt目下挂载NFS进行查看
14.查看pod中server.xml是不是我们挂载的。