栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

k8s使用StatefulSet部署fastdfs和测试上传下载

Java 更新时间:发布时间: 百科书网 趣学号
一、fastdfs简介


        FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
 

二、kubernetes部署fastdfs


1. 创建命名空间

cat fastdfs.yaml
---
apiVersion: v1
kind: Namespace
metadata:
  # 创建命名空间的名
  name: fastdfs
  labels:
    name: fastdfs
 
# kubectl apply -f fastdfs.yaml

2. 给fastdfs分配持久存储卷并且分配存储卷大小。

# cat fastdfs-pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fastdfs-pvc
  namespace: fastdfs
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: jyy-cephfs-sc
  resources:
    requests:
      storage: 2Gi
 
 
# kubectl apply -f fastdfs-pvc.yaml
 三、fastdfs部署分为两部分,一个是tracker一个是storage,下面我们先部署tracker 

 1. 创建tracker deployment以及创建tracker-service

# cat tracker.yaml
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: fastdfs
  labels:
    app: tracker
  #statefulset名为tracker创建的pod名以该名为基础按顺序为tacker-0 1 2 3...
  name: tracker
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tracker
  #serviceName名为tracker不要与statefulset名混淆,pod的解析需要在pod名后加该名例如tracker-0.tracker.default即$pod名.$serviceName.$命名空间
  serviceName: "tracker"
  template:
    metadata:
      labels:
        app: tracker
    spec:
      containers:
      - image: jinyuyun.top/fastdfs:v6
        name: fastdfs
        #容器启动命令本次为使用tracker
        command: ["/bin/bash", "/usr/bin/start.sh","tracker"]
        volumeMounts:
          - name: tracker-oss-pvc
            #mountPath: "/dfsfile"
            mountPath: /dfsfile
            subPath: dfsfile
      volumes:
        - name: tracker-oss-pvc
          persistentVolumeClaim:
            claimName: fastdfs-pvc
---
apiVersion: v1
kind: Service
metadata:
  namespace: fastdfs
  labels:
    app: tracker
  name: tracker
spec:
  ports:
  - port: 22122
    protocol: TCP
    targetPort: 22122
  clusterIP: None
  selector:
    app: tracker
---

# kubectl apply -f tracker.yaml

2. 创建storage deployment以及创建storage-service

# cat storage.yaml
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: fastdfs
  labels:
    app: storage
  name: storage
spec:
  replicas: 1
  selector:
    matchLabels:
      app: storage
  serviceName: "storage"
  template:
    metadata:
      labels:
        app: storage
    spec:
      containers:
      - image: jinyuyun.top/fastdfs:v6
        name: fastdfs
        #该容器启动为storage服务
        command: ["/bin/bash", "/usr/bin/start.sh","storage"]
        env:
        #定义环境变量
        - name: TRACKER_SERVER
          #tracker服务器地址及IP DNS解析地址为$pod名.$serviceName.$命名空间
          value: tracker-0.tracker.fastdfs:22122
          #定义存储组名
        - name: GROUP_NAME
          value: group1
        volumeMounts:
          - name: storage-oss-pvc
            mountPath: /dfsfile
            subPath: dfsfile
          #- name: storage-oss-pvc
            #mountPath: /etc/fdfs
            #subPath: fdfs
      volumes:
        - name: storage-oss-pvc
          persistentVolumeClaim:
            claimName: fastdfs-pvc
---
apiVersion: v1
kind: Service
metadata:
  namespace: fastdfs
  labels:
    app: storage
  name: storage
spec:
  ports:
  - port: 23000
    name: storage # 指定端口的名称
    protocol: TCP
    targetPort: 23000
  - port: 80
    name: nginx # 指定端口的名称
    protocol: TCP
    targetPort: 80  
  clusterIP: None
  selector:
    app: storage
  type: ClusterIP
---
# kubectl apply -f storage.yaml

4. 查看deployment和pod部署状态

[root@master fastdfs]# kubectl get pod -n fastdfs 
NAME        READY   STATUS    RESTARTS   AGE
storage-0   1/1     Running   4          5h38m
tracker-0   1/1     Running   0          5h56m

5.  创建Ingress服务在外部访问

# cat fastdfs-ingress.yaml
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: fastdfs-nginx
  namespace: fastdfs #命名空间 接下来的部署都会使用这个命名空间
spec:
  rules:
    - host: jyy.ldky.com #外部访问的域名
      http:
        paths:
        - path: /group1
          backend:
            serviceName: storage #服务对应的service名称
            servicePort: 80 #对应service的端口

# kubectl apply -f fastdfs-ingress.yaml

# 查看fastdfs-ingress部署状态
[root@master fastdfs]# kubectl get ingress -n fastdfs 
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
NAME            CLASS    HOSTS          ADDRESS          PORTS   AGE
fastdfs-nginx      jyy.ldky.xyz   10.106.253.180   80      6h12m
四、fastdfs上传文件以及测试 

1. 进入storage-0查看服务运行。命令:kubectl exec -it storage-0 -n kgf-dev /bin/sh

[root@master fastdfs]# kubectl exec -it storage-0 -n fastdfs /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
sh-4.2# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 02:49 ?        00:00:00 /bin/bash /usr/bin/start.sh storage
root        14     1  0 02:49 ?        00:00:05 fdfs_storaged /etc/fdfs/storage.conf start
root        18     1  0 02:49 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
root        21     1  0 02:49 ?        00:00:04 /bin/bash /usr/bin/start.sh storage
root        23     1  0 02:49 ?        00:00:00 tail -f /var/fdfs/logs/storaged.log
root        46     0  0 02:50 pts/0    00:00:00 /bin/sh
nobody     398    18  0 03:01 ?        00:00:00 nginx: worker process
nobody     399    18  0 03:01 ?        00:00:00 nginx: worker process
root     10292     0  0 08:31 pts/1    00:00:00 /bin/sh
root     10303    21  0 08:31 ?        00:00:00 sleep 10
root     10304 10292  0 08:31 pts/1    00:00:00 ps -ef

2. 查看storage是否和tracker通信。 命令:fdfs_monitor /etc/fdfs/storage.conf

 3. 测试文件上传

sh-4.2# echo 20200926 > today.txt
sh-4.2# cat today.txt
20200926
sh-4.2# fdfs_upload_file /etc/fdfs/client.conf today.txt 
group1/M00/00/00/ZELRyGFP4OeARNO8AAAACfH9icw880.txt
sh-4.2# curl 127.0.0.1/group1/M00/00/00/ZELRyGFP4OeARNO8AAAACfH9icw880.txt
20210926

4.访问刚刚上传的文件

5. 参考

 GitHub happyfish100/fastdfs

 nginx官方包

 k8s部署fastdfs

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/270351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号