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需要改为有状态的服务,或者是将存储中间件全部放到物理机