Kubernetes-javaWeb應用編排

mysql服務配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-mysql
spec:
  replicas: 1
  template:
    metadata:
      name: my-mysql
      labels:
        app: my-mysql
    spec:
      containers:
      - image: mysql:5.6
        name: custommysql
        env:
         - name: MYSQL_ROOT_PASSWORD
           value: "12345678"
---
apiVersion: v1
kind: Service
metadata:
  name: my-mysql
spec:
  type: NodePort
  selector:
    app: my-mysql
  ports:
  - port: 3307
    targetPort: 3306
    nodePort: 30125

redis服務配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-redis
spec:
  replicas: 1
  template:
    metadata:
      name: my-redis
      labels:
        app: my-redis
    spec:
      containers:
      - image: redis:4.0
        name: redis4.0
        ports:
        - containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
  name: my-redis
spec:
  type: my-redis
  selector:
    app: my-redis
  ports:
  - port: 6379
    targetPort: 6379
    nodePort: 6379

分別構建 war 、tomcat鏡像,將其組合到同一個 pod 中,將 war容器的 war 文件通過 pod 的數據卷 共享到 tomcat 容器中。

構建war鏡像

vim Dokcerfile

FROM  centos
MAINTAINER niugang
ADD weeklyreport.war /

使用 configmaps 共享配置文件

kubectl create configmap weeklyreport-conifgmapfiles --from-file=/home/xdja/conf/weeklyreport/

查看config信息

kubectl create configmap weeklyreport-conifgmapfiles --from-file=/home/xdja/conf/weeklyreport/

kubectl get configmaps weeklyreport-conifgmapfiles -o yaml

編寫服務的配置文件

# ------------------- weeklyreport Deployment ------------------- #
kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    app: weeklyreport-war
  name: weeklyreport-war
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: weeklyreport-war
  template:
    metadata:
      labels:
        app: weeklyreport-war
    spec:
      initContainers:
      - name: weeklyreportwar
        image: weeklyreport:1.0
        imagePullPolicy: IfNotPresent
        command: ["cp","/weeklyreport.war","/app"]
        volumeMounts:
          - mountPath: /app
            name: weeklyreport-vol-webapps
      containers:
      - name: weeklyreporttomcat
        image: tomcat:7.0.96
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /usr/local/tomcat/webapps
          name: weeklyreport-vol-webapps
        - name: weeklyreport-config
          mountPath: /home/xdja/conf/weeklyreport/
        - name: weeklyreport-log
          mountPath: /home/logs/weeklyreport/
        - name: weeklyreport-tomcat-log
          mountPath: /usr/local/tomcat/logs
      volumes:
      - name: weeklyreport-vol-webapps
        emptyDir: {}
      - name: weeklyreport-config
        configMap:
          name: weeklyreport-conifgmapfiles
          items:
          - key: application.properties
            path: application.properties
          - key: logback.xml
            path: logback.xml
          - key: month_4.xlsx
            path: month_4.xlsx
          - key: month_5.xlsx
            path: month_5.xlsx
          - key: redis.properties
            path: redis.properties
          - key: week_template.xlsx
            path: week_template.xlsx
      - name: weeklyreport-log
        hostPath:
          path: /home/logs/weeklyreport
      - name: weeklyreport-tomcat-log
        hostPath:
          path: /home/logs/weeklyreport-tomcat/
# -------------------weeklyreport Service ------------------- #
---
kind: Service
apiVersion: v1
metadata:
  labels:
    app: weeklyreport-war
  name: weeklyreport-war
spec:
  type: NodePort
  ports:
    - port: 8081
      targetPort: 8080
      nodePort: 30036
  selector:
    app: weeklyreport-war

如果使用自定義的命名空間

如果不是默認命名空間,default,自定義命名空間的,在執行命名的時候記得添加–namespace

創建命名空間

kubectl create namespace weeklyreport-war

創建configmap

kubectl create configmap weeklyreport-conifgmapfiles --from-file=/home/xdja/conf/weeklyreport/ --namespace=weeklyreport-war

查看config信息

kubectl create configmap weeklyreport-conifgmapfiles --from-file=/home/xdja/conf/weeklyreport/ --namespace=weeklyreport-war

kubectl get configmaps weeklyreport-conifgmapfiles --namespace=weeklyreport-war -o yaml

創建deployment

kubectl apply -f weeklyreport-war.yaml

獲取創建的pod

kubectl get pods --namespace=weeklyreport-war

查看具體信息

kubectl describe pods podName

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

後續優化

mysql redis需要改爲有狀態的服務,或者是將存儲中間件全部放到物理機

在這裏插入圖片描述

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