宿主机部署方案
Java环境 + 可运行的jar包 + 配置文件
一般情况下,我们部署微服务的时候,先安装Java环境,然后将jar包和配置文件上传到服务器
,然后启动服务,查看服务日志
Docker部署方案
制作镜像
基于java基础镜像,将前端包拷贝到镜像中nginx指定的位置。
- 创建Dockerfile文件:
vim Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| FROM java:8
MAINTAINER okami
LABEL authors="okami"
ARG port=80 ENV JAVA_OPTS="" SERVER_NAME=okami-service NACOS_SERVER=nacos-headless.nacos:8848
EXPOSE $port
RUN mkdir -p /opt/app/rms_fg/$SERVER_NAME
ADD $SERVER_NAME-1.0.0-SNAPSHOT.jar /opt/app/rms_fg/$SERVER_NAME/$SERVER_NAME-1.0.0-SNAPSHOT.jar
COPY config /opt/app/rms_fg/$SERVER_NAME/config
ENTRYPOINT ["sh", "-c", "cd /opt/app/rms_fg/$SERVER_NAME/ && java $JAVA_OPTS -jar /opt/app/rms_fg/$SERVER_NAME/$SERVER_NAME-1.0.0-SNAPSHOT.jar" ]
|
1
| export serverName=okami-service && imageVersion=v1 && sudo docker build -t $serverName:$imageVersion .
|
- 编辑结束后,可以通过
docker images
查看镜像
将镜像上传到镜像仓库
1 2 3 4 5 6 7 8 9
| imageVersion=v1 serverName=okami-service harbor_address=harbor.test-okami.com harborProjectName=service-test
sudo docker login $harbor_address sudo docker tag $serverName:$imageVersion $harbor_address/${harborProjectName}/${serverName}:${imageVersion} sudo docker push $harbor_address/$harborProjectName/$serverName:$imageVersion
|
启动
检查docker进程
- 通过
docker ps
命令即可查看docker进程
k8s部署方案
使用k8s部署服务,前提需要在镜像仓库中有镜像
制作镜像并上传仓库
编写yaml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| apiVersion: v1 kind: ServiceAccount metadata: name: okami-service --- apiVersion: apps/v1 kind: Deployment metadata: name: okami-service spec: replicas: 2 selector: matchLabels: app: okami-service template: metadata: labels: app: okami-service spec: terminationGracePeriodSeconds: 0 serviceAccountName: okami-service containers: - name: okami-service image: harbor.test-okami.com/service-test/okami-service:v1 imagePullPolicy: Always volumeMounts: - mountPath: "/opt/app/rms_fg/logs" name: okami-service-pv ports: - containerPort: 80 securityContext: runAsUser: 0 runAsGroup: 0 allowPrivilegeEscalation: true capabilities: add: ["NET_ADMIN", "SYS_TIME"] env: - name: NACOS_SERVER valueFrom: configMapKeyRef: name: okami-service key: nacos-server volumes: - name: okami-service-pv persistentVolumeClaim: claimName: service-pvc --- apiVersion: v1 kind: Service metadata: name: okami-service spec: type: LoadBalancer ports: - port: 80 selector: app: okami-service
--- apiVersion: v1 kind: ConfigMap metadata: name: okami-service data: nacos-server: "nacos-headless.nacos:8848" --- apiVersion: v1 kind: PersistentVolume metadata: name: service-volume labels: type: local spec: storageClassName: manual capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/opt/app/k8s/hostpath/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: service-pvc spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
|
部署
- 通过
kubectl apply -f app.yaml -n <namespace>
,将微服务署到k8s环境中
查看服务
查看Deployment
1
| $ kubectl get deployment -n <namespace>
|
查看service
1
| $ kubectl get svc -n <namespace>
|
查看pods
1
| $ kubectl get pods -n <namespace>
|
查看pod的日志
1
| $ kubectl logs -f pod/<pod_name> -n <namespace>
|
进入pod的命令行
1
| $ kubectl exec -it pod/<pod_name> -n <namespace> -- bash
|