您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
k8s部署discuz的步骤教程
元柏2025-07-21Discuz教程已有人查阅
导读一,基础部署加上ingress1.http部署mysql.yaml不变2.https部署二、k8s部署discuz要求有存储卷(hostpath)下载discuz安装包,并解压,同步到所有节点上
一,基础部署
加上ingress1.http部署mysql.yaml不变
2.https部署
要求:
2、要求有https
3、要求有存储卷(hostpath)
1、下载discuz安装包,并解压,同步到所有节点上
3、部署并调试
1、创建HTTPS证书
wordpress[root@node k8s]# vim mysql.yaml
apiVersion: v1
kind: Namespace
metadata:
name: mysql
---
kind: Service
apiVersion: v1
metadata:
name: mysql
namespace: mysql
spec:
ports:
- name: http
port: 3306
targetPort: 3306
selector:
app: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: name-mysql
namespace: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
[root@node k8s]# cat wordpress.yaml
apiVersion: v1
kind: Namespace
metadata:
name: wordpress
---
apiVersion: v1
kind: Service
metadata:
name: wordpress
namespace: wordpress
spec:
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
selector:
app: wordpress
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
namespace: wordpress
spec:
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: php
image: alvinos/php:wordpress-v2
- name: nginx
image: alvinos/nginx:wordpress-v2
[root@node k8s]# kubectl get pods -n mysql
NAME READY STATUS RESTARTS AGE
name-mysql-56f8cdb464-b2klq 1/1 Running 0 40m
[root@node k8s]# kubectl exec -it -n mysql name-mysql-56f8cdb464-b2klq -- bash
root@name-mysql-56f8cdb464-b2klq:/# mysql -uroot -p
Enter password: 123456
...
mysql> create database wordpress;
Query OK, 1 row affected (0.01 sec)
mysql> exit
[root@node k8s]# kubectl get svc -n wordpress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress NodePort 10.104.183.253 <none> 80:30311/TCP,443:31933/TCP 30m
访问ip:30311加上ingress1.http部署mysql.yaml不变
[root@k8s-n1 k8s]# cat wordpree.yaml
apiVersion: v1
kind: Namespace
metadata:
name: wordpress
---
apiVersion: v1
kind: Service
metadata:
name: wordpress
namespace: wordpress
spec:
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
selector:
app: wordpress
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
namespace: wordpress
spec:
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: php
image: alvinos/php:wordpress-v2
- name: nginx
image: alvinos/nginx:wordpress-v2
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: wordpress
namespace: wordpress
spec:
rules:
- host: " .wordpress.com" # 要绑定的域名
http:
paths:
- path: / # 请求的路径
pathType: Prefix #自由匹配
backend:
service:
name: wordpress # 必须和service的名字一致才可以绑定
port:
number: 80 # 服务的端口号
[root@k8s-n1 k8s]# kubectl get ingress -n wordpress
NAME CLASS HOSTS ADDRESS PORTS AGE
wordpress <none>.wordpress.com 80 8m19s
[root@k8s-n1 k8s]# kubectl get svc -n wordpress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress NodePort 10.99.151.6 <none> 80:32379/TCP,443:32121/TCP 24m
访问 域名:323792.https部署
# 生成证书
[root@m01 k8s]# openssl genrsa -out tls.key 2048
[root@m01 k8s]# openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=ShangHai/L=ShangHai/O=Ingress/CN= .wordpress.com
# 查看
[root@m01 k8s]# ll
-rw-r--r-- 1 root root 1289 Aug 12 22:46 tls.crt
-rw-r--r-- 1 root root 1679 Aug 12 22:46 tls.key
# 绑定证书
kubectl -n [名称空间] create secret tls [secretname] --cert=[证书.crt] --key=[证书.key]
kubectl -n wordpress create secret tls ingress-tls --cert=tls.crt --key=tls.key
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: wordpress
spec:
tls:
- secretName: ingress-tls
rules:
- host: " .wordpress.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: wordpress
port:
number: 80
# 部署
kubectl apply -f
# 配置hosts访问
.wordpress.com:30542
二、k8s部署discuz要求:
ingress ---> headless service ---> pod
1、要有健康检查2、要求有https
3、要求有存储卷(hostpath)
1、下载discuz安装包,并解压,同步到所有节点上
[root@k8s-m-01 /opt/discuz]# for i in m2 m3;do ssh root@$i "mkdir -pv /opt/discuz" && scp discuz.tar.gz root@$i:/opt/discuz/; ssh root@$i "cd /opt/discuz && tar -xf discuz.tar.gz -C /opt/discuz && chmod -R o+w /opt/discuz/upload"; done
2、构思架构,并且编写配置清单3、部署并调试
1、创建HTTPS证书
[root@k8s-m-01 /opt/discuz]# openssl genrsa -out tls.key 2048
Generating RSA private key, 2048 bit long modulus
.+++
.................................................................................+++
e is 65537 (0x10001)
[root@k8s-m-01 /opt/discuz]# openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=ShangHai/L=ShangHai/O=Ingress/CN= .discuz.cluster.local.com
2、部署证书
[root@k8s-m-01 /opt/discuz]# kubectl create namespace discuz
namespace/discuz created
[root@k8s-m-01 /opt/discuz]# kubectl -n discuz create secret tls discuz-secret --cert=tls.crt --key=tls.key
secret/discuz-secret created
配置清单#########################################################################################
# 1、部署MySQL集群
# 1、创建命名空间
# 2、创建service提供负载均衡
# 3、使用控制器部署MySQL实例
###
# 2、部署Discuz应用
# 1、创建命名空间
# 2、创建Service提供负载均衡(Headless Service)
# 3、创建服务并挂载代码
# 4、创建Ingress,用于域名转发(https)
###
# 3、服务之间的互连
# 1、Discuz连接MySQL ---> mysql.mysql.svc.cluster.local
#########################################################################################
apiVersion: v1
kind: Namespace
metadata:
name: mysql
---
kind: Service
apiVersion: v1
metadata:
name: mysql-svc
namespace: mysql
spec:
ports:
- port: 3306
targetPort: 3306
name: mysql
protocol: TCP
selector:
app: mysql
deploy: discuz
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
namespace: mysql
spec:
selector:
matchLabels:
app: mysql
deploy: discuz
template:
metadata:
labels:
app: mysql
deploy: discuz
spec:
nodeName: k8s-m-02
containers:
- name: mysql
image: mysql:5.7
livenessProbe: #存活性检查
tcpSocket:
port: 3306
readinessProbe: #就绪性检查
tcpSocket:
port: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_DATABASE #默认创建的数据库
value: "discuz"
#lifecycle: #启动回调钩子,和默认创建数据库value的方式2选1,推荐,因可以指定字符编码
# postStart:
# exec:
# command:
# - "/bin/bash"
# - "-c"
# - "mysql -uroot -p123456 -e 'create database discuz charset utf8;'"
volumeMounts: #挂载
- mountPath: /var/lib/mysql #挂载的路径,容器内
name: mysql-data
volumes:
- name: mysql-data
hostPath:
path: /opt/discuz/mysql #宿主主机的路径
---
kind: Namespace
apiVersion: v1
metadata:
name: discuz
---
kind: Service
apiVersion: v1
metadata:
name: discuz-svc
namespace: discuz
spec:
clusterIP: None
ports:
- port: 80
targetPort: 80
name: http
selector:
app: discuz
deploy: discuz
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: discuz-deployment
namespace: discuz
spec:
selector:
matchLabels:
app: discuz
deploy: discuz
template:
metadata:
labels:
app: discuz
deploy: discuz
spec:
containers:
- name: php
image: alvinos/php:wordpress-v2
livenessProbe:
tcpSocket:
port: 9000
readinessProbe:
tcpSocket:
port: 9000
volumeMounts:
- mountPath: /usr/share/nginx/html #挂载在容器的路径
name: discuz-data
- name: nginx
image: alvinos/nginx:wordpress-v2
livenessProbe:
httpGet:
port: 80
path: /
readinessProbe:
httpGet:
port: 80
path: /
volumeMounts:
- mountPath: /usr/share/nginx/html
name: discuz-data
volumes:
- name: discuz-data
hostPath:
path: /opt/discuz/upload
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: discuz-ingress
namespace: discuz
spec:
tls:
- hosts:
-.discuz.cluster.local.com
secretName: discuz-secret
rules:
- host:.discuz.cluster.local.com
http:
paths:
- backend:
serviceName: discuz-svc
servicePort: 80
本文标签:
很赞哦! ()
下一篇:Discuz目录结构文件注释
相关教程
图文教程
Discuz!X插件开发教程
Discuz按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。
Discuz!NT聚合功能页面程序架构的方法
鉴于前一阵子所写的关于Discuz!NT文章在园子中有些朋友存在疑惑这里先做一下声明:这些关于Discuz!NT的文章不是要帮助大家把这个项目中所有的程序逻辑都解释一遭
discuz控制弹框显示的方法
本文实现功能:控制弹框的显示与否在之前的一篇文章写道,discuz实现自动注册登录。但是我们又不想让那个提示信息出来。
discuz插件开发入门教程
作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程。现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西
相关源码
-
(自适应响应式)刷卡机POS机无线支付设备pbootcms网站源码下载本模板基于PbootCMS系统开发,为支付终端设备企业设计,特别适合POS机、移动支付终端、刷卡设备等金融科技产品展示。采用响应式布局技术,确保各类支付终端产品在不同设备查看源码 -
自适应APP应用程序介绍推广落地页pbootcms网站源码下载移动应用开发商设计的营销型落地页模板,基于PbootCMS内核深度开发采用前沿响应式架构,无缝适配手机端操作习惯与PC端展示需求。查看源码 -
(自适应响应式)个人作品技术文章博客网站模板下载基于PbootCMS内核开发的响应式博客模板,为数字营销、技术分享类内容打造。采用前沿设计理念,兼顾内容展示与阅读体验,适配各类终端设备。通过本模板可快速构建专业级行业博客,有效传播专业知识与案例成果。查看源码 -
(PC+WAP)蓝色低碳环保隔断板装修装饰类网站pbootcms源码下载本款基于PbootCMS开发的网站模板为活动隔断板、装修装饰行业打造,特别适合移动隔断、环保隔断、办公分区等产品的展示与推广。查看源码 -
响应式艺考培训学校机构pbootcms模板html5源码基于PbootCMS免费开源内核开发,为艺考培训学校与艺术机构设计,替换图文即可快速适配全行业需求。响应式布局兼容手机/PC端,数据实时同步,运维效率提升300%。查看源码 -
(自适应响应式)环保水净化处理设备阀门等网站源码下载基于PbootCMS内核开发的响应式模板,为水处理设备、空气净化器等环保企业设计,自适应手机端浏览。通过简洁高效的后台管理系统,助力环保科技企业快速建立专业在线展示平台。查看源码
| 分享笔记 (共有 篇笔记) |
