K8s部署springboot

1 Docker部署SpringBoot

1.1 部署

(1) springboot项目概述
在这里插入图片描述

(2) 打成jar包

(3) 上传至Docker服务器,制作Dockerfile

FROM java:8
ADD springboot-web-1.0-SNAPSHOT.jar  app.jar
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
RUN bash -c 'touch /app.jar'
EXPOSE 9000
ENTRYPOINT ["java","-jar","/app.jar"]

(4) 制作镜像

docker build -f Dockerfile -t 192.168.38.100/library/springboot:v1.0 .

(5) 运行容器

docker run -d -p 9000:9000 --name springboot  192.168.38.100/library/springboot:v1.0

(6) 访问
在这里插入图片描述

1.2 缺点

(1) 如果当前springboot容器挂了或Dokcer服务器挂了当前项目无法访问。
(2) 如果把当前项目部署到多台Docker服务器上,重复步骤太多,又要手动实现负载均衡。

2 K8s 部署SpringBoot

2.1 环境概述

192.168.38.50 master
192.168.38.51 node1
192.168.38.52 node2
192.168.38.100 harbor/nfs(数据持久卷,搭建过程略)

2.2 nfs-springboot-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-springboot-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: "/usr/local/kubernetes/volumes/logs/"
    server: 192.168.38.100
    readOnly: false


#创建pv
kubectl apply -f nfs-springboot-pv.yaml
#查看
kubectl get pv

在这里插入图片描述

2.3 springboot-pvc.yaml

vim springboot-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc-springboot
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi


 kubectl apply -f springboot-pvc.yaml

在这里插入图片描述

2.4 springboot-deployment.yaml

vim springboot-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: springboot
  name: springboot
spec:
  replicas: 1
  selector:
    matchLabels:
      app: springboot
  template:
    metadata:
      labels:
        app: springboot
    spec:
      containers:
        - name: springboot
          image: 192.168.38.100/library/springboot:v1.0
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /logs
              name: springboot-volumes
      volumes:
        - name: springboot-volumes
          persistentVolumeClaim:
            claimName: nfs-pvc-springboot

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: springboot
  name: springboot
spec:
  ports:
    - port: 9000
      protocol: TCP
      targetPort: 9000
  selector:
    app: springboot
  type: ClusterIP

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: springboot
spec:
  rules:
    - host: rosh.springboot.com
      http:
        paths:
          - backend:
              serviceName: springboot
              servicePort: 9000


kubectl apply -f springboot-deployment.yaml 
#查看pod,svc
kubectl get pod
kubectl get svc

在这里插入图片描述

2.5 通过ingress访问

在这里插入图片描述
在这里插入图片描述
查看nfs日志挂载
在这里插入图片描述

3 实验

3.1 当部署服务器挂了

(1) 查看运行节点
在这里插入图片描述
(2) 关闭node1节点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 动态扩容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问时发现已经是负载均衡了:
在这里插入图片描述
在这里插入图片描述
多访问几次查看挂载日志:
在这里插入图片描述

你可能感兴趣的:(java,java,后端)