一、下载源码
项目地址:https://gitee.com/macrozheng/mall
参考文章:
- mall学习教程 - WorldLink资源网
- mall-swarm项目后端开发环境搭建 | mall-swarm学习教程
- 在kubernetes上部署mall-swarm微服务项目 - 麦子稻草
- https://github.com/mairoot/kubernetes/tree/main
二、准备环境
1、主机
OS | Version | Comment |
---|---|---|
CentOs Linux | 7.9/2009 | 4核4g |
CentOs Linux | 7.9/2009 | 4核4g |
CentOs Linux | 7.9/2009 | 4核4g |
为了测试部署,这里去掉了ELK架构
2、基础服务
mysql 结构化数据库
redis 键值对缓存存储
mongodb 非结构化文件存储
nfs服务
三、mall-swarm架构
四、基础服务部署
使用nfs作为持久卷
1.k8s内部安装nfs驱动
https://github.com/kubernetes-csi/csi-driver-nfs
1.解压
2.替换加速器地址
[csi-driver-nfs-4.9.0]#sed -i 's#registry.k8s.io#k8s.m.daocloud.io#g' deploy/v4.9.0/*.yaml
3.安装
[csi-driver-nfs-4.9.0]#./deploy/install-driver.sh v4.9.0 local
4.查看nf控制器状态
# kubectl -n kube-system get pod -o wide -l app=csi-nfs-controller
# kubectl -n kube-system get pod -o wide -l app=csi-nfs-node
5.mster上部署nfs服务
# yum install -y nfs-utils rpcbi
# mkdir -p /data/nfs
# chown -R nfsnobody:nfsnobody /data/nfs/
# vim /etc/exports
/data/nfs *(rw,no_subtree_check,sync)
# systemctl enable --now rpcbind
# exportfs -v
6.创建存储类型sc
# vim nfs-sc.yaml
kind: StorageClass
metadata:
name: nfs-sc # 此处指定了csidrivers的名称
provisioner: nfs.csi.k8s.io
parameters:
# NFS的Server
server: 192.168.200.2
# NFS的存储路径
share: /data/nfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- nfsvers=4.1
# kubectl apply -f nfs-sc.yaml
7.创建pvc
# vim nfs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
namespace: dev
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs-cs
resources:
requests:
storage: 1Gi
# kubectl apply -f nfs-pvc.yaml
# kubectl -n dev get pvc
# ls /data/nfs/
8.修改nginx configmap,使用nfs存储站点数据
# vim nginx-configmap.yaml
apiVersion: v1
kind: Namespace
metadata:
name: dev
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-conf
namespace: dev
data:
nginx.conf: |
server {
listen 8080;
listen 443 ssl;
server_name www.web01.com;
ssl_certificate /etc/nginx/tls/tls.crt;
ssl_certificate_key /etc/nginx/tls/tls.key;
port_in_redirect off;
location /hostpath {
alias /usr/share/nginx/html;
index index.html index.htm;
}
location /localpv {
alias /usr/share/nginx/localpv;
index index.html index.htm;
}
location /nfspv {
alias /usr/share/nginx/nfspv;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
# kubectl apply -f nginx-configmap.yaml
mysql服务
需要修改限制资源(自行修改)
将sql放入存储的pvc路径里
进入pod并导入数据库
redis服务
限制资源
mongodb服务
containers:
- name: mongodb
image: mongo:4.2.1
command:
- sh
- -c
- "exec mongod -f /mongodb/conf/mongodb.conf"
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: "500m"
memory: "128Mi"
requests:
cpu: "100m"
memory: "128Mi"