【云原生之kubernetes实战】在k8s环境下部署jpress开源网站

一、jpress介绍

1.jpress简介

JPress 是一个使用 Java 开发的、开源免费 的建站神器,灵感来源于 WordPress。可以作为一款安全舒心的开源CMS系统。

2.jpress功能

  • 内容相关:文章管理、页面管理、评论管理、附件管理
  • 电商相关:产品管理、会员管理、订单管理、分销管理、提现管理、优惠券管理、支付配置、物流配置
  • 用户相关:用户管理、会员管理、权限管理、订单管理、用户标签、短信群发、邮件群发
  • 系统相关:模板管理、插件管理、微信管理、系统管理

二、检查本地k8s环境

1.检查工作节点状态

检查本地的k8s环境,确保所有节点都正常运行。

[root@k8s-master ~]# kubectl get nodes -owide
NAME         STATUS   ROLES                  AGE    VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
k8s-master   Ready    control-plane,master   153d   v1.23.1   192.168.3.201   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6
k8s-node01   Ready    <none>                 153d   v1.23.1   192.168.3.202   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6
k8s-node02   Ready    <none>                 153d   v1.23.1   192.168.3.203   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6

2.检查系统pod状态

检查k8s集群中的系统pod状态,确保所有系统pod都在正常运行中。

[root@k8s-master ~]# kubectl get pods -owide -n kube-system 
NAME                                       READY   STATUS    RESTARTS      AGE    IP               NODE         NOMINATED NODE   READINESS GATES
calico-kube-controllers-7bc6547ffb-2nf66   1/1     Running   7 (30m ago)   153d   10.244.235.216   k8s-master   <none>           <none>
calico-node-8c4pn                          1/1     Running   7 (30m ago)   153d   192.168.3.202    k8s-node01   <none>           <none>
calico-node-f28qq                          1/1     Running   7 (30m ago)   153d   192.168.3.203    k8s-node02   <none>           <none>
calico-node-wmc2j                          1/1     Running   7 (29m ago)   153d   192.168.3.201    k8s-master   <none>           <none>
coredns-6d8c4cb4d-6gm4x                    1/1     Running   7 (29m ago)   153d   10.244.235.214   k8s-master   <none>           <none>
coredns-6d8c4cb4d-7vxlz                    1/1     Running   7 (29m ago)   153d   10.244.235.215   k8s-master   <none>           <none>
etcd-k8s-master                            1/1     Running   7 (29m ago)   153d   192.168.3.201    k8s-master   <none>           <none>
kube-apiserver-k8s-master                  1/1     Running   7 (29m ago)   153d   192.168.3.201    k8s-master   <none>           <none>
kube-controller-manager-k8s-master         1/1     Running   7 (29m ago)   153d   192.168.3.201    k8s-master   <none>           <none>
kube-proxy-8dfw8                           1/1     Running   7 (30m ago)   153d   192.168.3.201    k8s-master   <none>           <none>
kube-proxy-ghzrv                           1/1     Running   7 (30m ago)   153d   192.168.3.203    k8s-node02   <none>           <none>
kube-proxy-j867z                           1/1     Running   7 (30m ago)   153d   192.168.3.202    k8s-node01   <none>           <none>
kube-scheduler-k8s-master                  1/1     Running   7 (29m ago)   153d   192.168.3.201    k8s-master   <none>           <none>

三、编辑jpress.yaml文件

1.创建安装目录

在master节点,我们新建一个安装目录,用于存放jpress.yaml部署文件。

[root@k8s-master ~]# mkdir /data/jpress
[root@k8s-master ~]# cd /data/jpress/

2.编辑jpress.yaml文件

编辑jpress应用的部署yaml文件

jpress.yaml 
---
apiVersion: v1
kind: Namespace
metadata:
  name: jpress
---
kind: Service
apiVersion: v1
metadata:
  name: jpress-db
  namespace: jpress
spec:
  ports:
    - port: 3306
      targetPort: 3306
      name: mysql
      protocol: TCP
      nodePort: 30033
  type: NodePort
  selector:
    app: mysql
    deploy: jpress 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
  namespace: jpress
spec:
  selector:
    matchLabels:
      app: mysql
      deploy: jpress
  template:
    metadata:
      labels:
        app: mysql
        deploy: jpress
    spec:
#      nodeName: k8s-db
      containers:
        - name: jpress-mysql
          image: mysql:5.7
          livenessProbe:   #存活性检查
            tcpSocket:
              port: 3306
          readinessProbe:   #就绪性检查
            tcpSocket:
              port: 3306
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "admin"
            - name: MYSQL_DATABASE     
              value: "jpress"
            - name: TZ
              value: "Aisa/Shanghai"
            - name: MYSQL_USER
              value: jpress
            - name: MYSQL_PASSWORD
              value: jpress
          volumeMounts:     
            - name: jpress-db
              mountPath: /var/lib/mysql
      volumes:
        - name: jpress-db
          hostPath:
            path: /data/jpress/db   

---
########################## Aplication#####################################################



apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: jpress
    deploy: jpress
  name: jpress
  namespace: jpress
spec:
  replicas: 2
  selector:
    matchLabels:
      app: jpress
  template:
    metadata:
      labels:
         app: jpress
         deploy: jpress
    spec:
      volumes:
      - name: attachment
        hostPath:
         path:  /data/jpress/attachment
      - name: addons
        hostPath:
         path: /data/jpress/webapp/addons
      - name: inf
        hostPath:
         path: /data/jpress/webapp/WEB-INF/addons
      - name: content
        hostPath:
         path: /data/jpress/webapp/wp-content
      - name: dockers
        hostPath:
         path: /data/jpress/webapp/templates/dockers

      containers: 
      - image: fuhai/jpress:v5.0.7
        name: jpress-it
        ports:
        - name:  web 
          protocol: "TCP"
          containerPort: 8080
#        - name : 443
#          protocol: "TCP"
#          containerPort: 443
        env:
         - name: TZ
           value: "Asia/Shanghai"
         - name: PUID
           value: "1000"
         - name: PGID
           value: "1000"
         - name: JPRESS_DB_NAME
           value: "jpress"
         - name: JPRESS_DB_USER
           value: "root"
         - name:   JPRESS_DB_PASSWORD
           value: "admin"
         - name: JPRESS_DB_HOST
           value: 192.168.3.202:30033
#         - name: APP_KEY
#           value: "base64:5U/KPKw1GN/Rz0fWYO/4FsSOqjmjvDAQzMCqwcAqstc="
        resources:         
         requests:
             cpu: 0.5
             memory: 128Mi
         limits:
             cpu: 0.6
             memory:  512Mi
        volumeMounts:
        - name: attachment
          mountPath: /opt/jpress/webapp/attachment
        - name: addons
          mountPath: /opt/jpress/webapp/addons
        - name: inf
          mountPath: /opt/jpress/webapp/WEB-INF/addons
        - name: content
          mountPath:  /opt/jpress/webapp/wp-content
        - name: dockers
          mountPath: /opt/jpress/webapp/templates/dockers
      
---
apiVersion: v1
kind: Service
metadata:
  name: jpress-it
  namespace: jpress
spec:
  ports:
      - port: 8080
        nodePort: 30016
  selector:
      app: jpress
      deploy: jpress
  type: NodePort 

四、部署jpress应用

1.应用jpress.yaml

开始使用jpress.yaml文件部署jpress应用

[root@k8s-master jpress]# kubectl apply -f jpress.yaml 
namespace/jpress unchanged
service/jpress-db unchanged
deployment.apps/mysql-deployment unchanged
deployment.apps/jpress created
service/jpress-it unchanged

2.查看pod资源

查看jpress应用的pod状态,确保每一个pod状态都处在正常状态中,若有异常状态,可通过pod的描述及日志信息进行排错。

[root@k8s-master jpress]# kubectl get pods -n jpress 
NAME                                READY   STATUS    RESTARTS   AGE
jpress-bc7989f7-pwsmj               1/1     Running   0          12m
jpress-bc7989f7-zt54q               1/1     Running   0          12m
mysql-deployment-54657d77f8-drwgm   1/1     Running   0          12m

3.查看pod详细信息

查看jpress应用的某个pod详细信息,可以看到事件中pod的启动过程,可以初步判断jpress的服务运行情况。如果需要详细查看pod日志,使用kubectl logs jpress-bc7989f7-zt54q -n jpress 命令,其中 jpress-bc7989f7-zt54q 为pod名随机生成,使用自己查询的即可。

[root@k8s-master jpress]# kubectl describe pods -n jpress jpress-bc7989f7-zt54q 
Name:         jpress-bc7989f7-zt54q
Namespace:    jpress
Priority:     0
Node:         k8s-node01/192.168.3.202
Start Time:   Sat, 03 Dec 2022 14:42:56 +0800
Labels:       app=jpress
              deploy=jpress
              pod-template-hash=bc7989f7
Annotations:  cni.projectcalico.org/containerID: 0a0c7488687276bc5e2eb097adcef32b2030203ef230572e9db02d9438fe201a
              cni.projectcalico.org/podIP: 10.244.85.215/32
              cni.projectcalico.org/podIPs: 10.244.85.215/32
Status:       Running
IP:           10.244.85.215
IPs:
  IP:           10.244.85.215
Controlled By:  ReplicaSet/jpress-bc7989f7
Containers:
  jpress-it:
    Container ID:   containerd://306b29bdb5f6ef5e6c52954a89129b8beecfe3be0b416528c64f458f531c9271
    Image:          fuhai/jpress:v5.0.7
    Image ID:       docker.io/fuhai/jpress@sha256:74653433017956793a01fcfa4858526d465cfbcec08c686317d374242f66eb06
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Sat, 03 Dec 2022 14:45:55 +0800
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     600m
      memory:  512Mi
    Requests:
      cpu:     500m
      memory:  128Mi
    Environment:
      TZ:                  Asia/Shanghai
      PUID:                1000
      PGID:                1000
      JPRESS_DB_NAME:      jpress
      JPRESS_DB_USER:      root
      JPRESS_DB_PASSWORD:  admin
      JPRESS_DB_HOST:      192.168.3.202:30033
    Mounts:
      /opt/jpress/webapp/WEB-INF/addons from inf (rw)
      /opt/jpress/webapp/addons from addons (rw)
      /opt/jpress/webapp/attachment from attachment (rw)
      /opt/jpress/webapp/templates/dockers from dockers (rw)
      /opt/jpress/webapp/wp-content from content (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-trvj7 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  attachment:
    Type:          HostPath (bare host directory volume)
    Path:          /data/jpress/attachment
    HostPathType:  
  addons:
    Type:          HostPath (bare host directory volume)
    Path:          /data/jpress/webapp/addons
    HostPathType:  
  inf:
    Type:          HostPath (bare host directory volume)
    Path:          /data/jpress/webapp/WEB-INF/addons
    HostPathType:  
  content:
    Type:          HostPath (bare host directory volume)
    Path:          /data/jpress/webapp/wp-content
    HostPathType:  
  dockers:
    Type:          HostPath (bare host directory volume)
    Path:          /data/jpress/webapp/templates/dockers
    HostPathType:  
  kube-api-access-trvj7:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  12m    default-scheduler  Successfully assigned jpress/jpress-bc7989f7-zt54q to k8s-node01
  Normal  Pulling    12m    kubelet            Pulling image "fuhai/jpress:v5.0.7"
  Normal  Pulled     9m24s  kubelet            Successfully pulled image "fuhai/jpress:v5.0.7" in 2m58.74207719s
  Normal  Created    9m24s  kubelet            Created container jpress-it
  Normal  Started    9m24s  kubelet            Started container jpress-it

4.查看service

查看jpress应用的web和mysql的对外映射端口,mysql服务对外映射的为30033端口,jpress服务对外映射的为30016端口。

[root@k8s-master jpress]# kubectl get service -n jpress 
NAME        TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
jpress-db   NodePort   10.110.25.22   <none>        3306:30033/TCP   13m
jpress-it   NodePort   10.106.42.44   <none>        8080:30016/TCP   13m

五、jpress的初始化安装

1.进入jpress的安装界面

我们使用k8s集群的某个工作节点IP进行访问,本次使用工作节点IP:192.168.3.202进行访问,访问地址:http://192.168.3.202:30016,将IP替换为自己集群中工作节点的IP地址。

在这里插入图片描述

2.连接数据库

在连接数据库配置界面中,我们需要填写数据库相关信息:

  • 数据库名:jpress;
  • 用户名:root;
  • 密码:admin;
  • 主机:工作节点的IP地址,这里填写的是192.168.3.202;
  • 端口号:30033,这里填写的是数据库对外暴露的端口30033。
  • 下一步即可。

在这里插入图片描述

3.网站设置

设置网站名和登录账号密码,自定义设置即可。

在这里插入图片描述

六、登录jpress的后台管理

在这里插入图片描述
在这里插入图片描述

七、访问jpress的首页

访问地址:http://192.168.3.202:30016,将IP换为自己工作节点的IP地址,此时,已成功访问到jpress的首页。

在这里插入图片描述

八、jpress的后台设置

1.设置主题模板

访问地址:http://192.168.3.202:30016/admin,填写刚设置的管理员账号和密码,进入到jpress的后台管理页面,在系统管理——所有模板界面,可以设置主题模板。

在这里插入图片描述

2.查看模板效果

设置完模板后,我们返回jpress的前台首页,可以看到已经成功更换主题了。

在这里插入图片描述

3.文章导入功能

在jpress的后台管理中,我们可以将不同平台的文章进行导入。

在这里插入图片描述

4.用户管理功能

在用户管理页面中,我们可以对用户进行基本管理,包括新建、查询用户等。

在这里插入图片描述

5.插件安装

在插件管理页面,可以安装一些基本插件。

在这里插入图片描述

6.编辑文本内容

在jpress的后台管理中,可以直接在编辑器中编辑文章,进行发布。

在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖有缘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值