使用K8s部署开源项目

项目介绍

该项目为自己在学习k8s的过程中,做的一个小的部署项目,完全在k8s中部署mayday项目。
mayday项目是一个开源的项目,前后端不分离,打包即可部署,项目地址:https://gitee.com/song_haozhi/mayday,我这里已经将其打包为jar包,只需要JDK环境才能进行运行,JDK采用1.8版本,数据库采用MYSQL5.7.41数据库。

一、Mayday项目部署

由于此次需要在k8s集群中部署项目,因此将jar包和数据库都打包为docker镜像并上传到Harbor中,使用k8s集群从Harbor中拉取镜像进行部署。

1、生成MYSQL镜像

编辑Dockerfile文件
注意这里需要使用到mayday的初始化数据库文件,在gitee上面可以获取.sql文件

[root@localhost mysql]# cat Dockerfile 
FROM mysql:5.7.41
ENV TZ=Asia/Shanghai
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8
ENV MYSQL_ROOT_PASSWORD=123456
ENV MYSQL_DATABASE=mayday
COPY ./mayday.sql /docker-entrypoint-initdb.d/mayday.sql          # 使用mysql的初始化文件
EXPOSE 3306
CMD ["mysqld"]

mysql初始化文件与Dockerfile在同一文件夹内:
在这里插入图片描述

生成镜像

[root@localhost mysql]# docker build -t mysql .

推送镜像到Harbor

镜像所在地址与Harbor在同一台服务器,使用本机IP即可。另外需要事先在Harbor中创建对应的项目

[root@localhost mysql]# docker tag mysql:latest 127.0.0.1/mysql/mysql:v1
[root@localhost mysql]# docker push 127.0.0.1/mysql/mysql:v1    

在这里插入图片描述

2、生成jar镜像

mayday是开源项目,项目中的数据库地址、用户名、密码为默认密码,需要更改为实际的数据库名、用户和密码。

更改jar包的数据库连接信息

使用vim编辑器编辑jar包,搜索application.yaml文件,更改对应信息即可,或者在打包之前更改applicaiton.yml文件

在这里插入图片描述

注意:mysql的端口使用的为非默认端口,因为后续需要以NodePort形式部署Mysql,更改为k8s的Mysql服务对应的IP和端口

编辑jar包对应的Dockerfile文件

[root@localhost mayday]# cat Dockerfile 
FROM centos:7
MAINTAINER "xxx" <xxx>
ENV TZ=Asia/Liaoning
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en.US.UTF-8
ADD jdk-8u211-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_211 /usr/local/java
ENV JAVA_HOME /usr/local/java/
ENV PATH $PATH:$JAVA_HOME/bin
COPY mayday.jar /usr/local
EXPOSE 8091
CMD java -jar /usr/local/mayday.jar

jar包运行使用centos7的基础镜像,在镜像内安装jdk1.8即可满足运行环境。

在这里插入图片描述

生成镜像

[root@localhost myday]# docker build -t mayday .

推送镜像到Harbor

镜像所在地址与Harbor在同一台服务器,使用本机IP即可。另外需要事先在Harbor中创建对应的项目

[root@localhost mysql]# docker tag mayday:latest 127.0.0.1/mayday/mysql:v1
[root@localhost mysql]# docker push 127.0.0.1/mayday/mayday:v1    

3、部署

从Harbor拉取项目镜像和数据库镜像,并创建对应的工作负载和服务。

创建mayday部署文件
mayday提供的对外访问的端口为30051,mysql为30050,由于为测试环境,并没有使用statefulset部署mysql。

[root@master mayday]# cat mayday.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: mayday

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: mayday
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: 192.168.253.25/mysql/mysql:v1
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        - name: MYSQL_DATABASE
          value: "mayday"
        ports:
        - containerPort: 3306

---
apiVersion: v1
kind: Service
metadata:
  namespace: mayday
  name: mysql
spec:
  selector:
    app: mysql
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 30050

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mayday
  namespace: mayday
  labels:
    app: mayday
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mayday
  template:
    metadata:
      labels:
        app: mayday
    spec:
      containers:
      - name: mayday
        image: 192.168.253.25/mayday/mayday:v1
        imagePullPolicy: Always
        ports:
        - containerPort: 8091

---
apiVersion: v1
kind: Service
metadata:
  name: mayday
  namespace: mayday
spec:
  selector:
    app: mayday
  type: NodePort
  ports:
  - port: 8091
    targetPort: 8091
    nodePort: 30051

应用yaml文件

[root@master mayday]# kubectl apply -f mayday.yaml 
namespace/mayday created
deployment.apps/mysql created
service/mysql created
deployment.apps/mayday created
service/mayday created

查看对应的pod信息

所有的资源对应和工作负载都是在mayday的命名空间下,因此需要指定命名空间查看

[root@master mayday]# kubectl get pods -n mayday
NAME                      READY   STATUS    RESTARTS   AGE
mayday-5f4cdf4c5b-qrlnl   1/1     Running   0          14s
mysql-fb8fbfc5b-xq498     1/1     Running   0          14s

访问测试

使用宿主机访问mayday服务的IP和端口,直接访问k8s集群中任意一个ip+30051端口,即可访问

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值