k8s环境部署fstdfs单机

1、环境

k8s版本1.18.6

2、部署tracker服务

(1)tracker-statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: fastdfs-tracker
  #statefulset名为tracker创建的pod名以该名为基础按顺序为tacker-0 1 2 3...
  name: fastdfs-tracker
  namespace: uat-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fastdfs-tracker
  #serviceName名为tracker不要与statefulset名混淆,pod的解析需要在pod名后加该名例如tracker-0.tracker.default即$pod名.$serviceName.$命名空间
  serviceName: "fastdfs-tracker"
  template:
    metadata:
      labels:
        app: fastdfs-tracker
    spec:
      containers:
      - image: 172.16.43.156/app/fastdfs:1.2
        name: fastdfs-tracker
        #容器启动命令本次为使用tracker
        command: ["/entrypoint.sh","tracker"]
        #track数据挂载在pvc上默认容器的数据目录为/var/fdfs
        volumeMounts:
        - name: tracker-data
          mountPath: /fastdfs/tracker/data
      #创建挂载pvc claimName对应名称需要与创建pvc配置文件的名称相同
  volumeClaimTemplates:
    - metadata:
        name: tracker-data
        annotations:
          volume.beta.kubernetes.io/storage-class: "uat-nfs-storage"
      spec:
        accessModes: [ "ReadWriteMany" ]
        resources:
          requests:
            storage: 1Gi

(2)tracker-cluster-svc.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    app: fastdfs-tracker
  name: fastdfs-tracker
  namespace: uat-app
spec:
  ports:
  - port: 22122
    protocol: TCP
    targetPort: 22122
  clusterIP: None
  selector:
    app: fastdfs-tracker
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: fastdfs-tracker
  name: fastdfs-tracker-client
  namespace: uat-app
spec:
  ports:
  - port: 22122
    protocol: TCP
    targetPort: 22122
    nodePort: 42122
  selector:
    app: fastdfs-tracker
  type: NodePort

执行shell命令

kubectl   apply   -f  tracker-statefulset.yaml 
kubectl   apply   -f  tracker-cluster-svc.yaml 

2、部署storage、nginx服务

(1)mod_fastdfs.conf

#include http.conf
connect_timeout=2
network_timeout=30
base_path=/tmp
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=fastdfs-tracker-0.fastdfs-tracker.uat-app:22122
storage_server_port=23000
group_name=group1
url_have_group_name=true
store_path_count=1
store_path0=/fastdfs/store_path
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 0

(2)nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    sendfile        on;
 
    keepalive_timeout  65;
 
#    upstream fastdfs {
#       server fastdfs-storage-0.fastdfs-storage.uat-app:8888;
#    }
 
    server {
        listen       8888;
        server_name  localhost;
 
        location /group1/M00 {
            root /fastdfs/store_path/data;  
#            proxy_pass http://fastdfs;
            ngx_fastdfs_module;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 }
}

执行shell,创建cm

kubectl   create  cm  fastdfs-nginx-config  --from-file=nginx.conf  -n uat-app
kubectl   create  cm   mod-fastdfs  --from-file=mod_fastdfs.conf  -n uat-app

 

 (3)storage-statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: fastdfs-storage
  name: fastdfs-storage
  namespace: uat-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fastdfs-storage
  serviceName: "fastdfs-storage"
  template:
    metadata:
      labels:
        app: fastdfs-storage
    spec:
      volumes:
      - name: fastdfs-nginx-config
        configMap:
          name: fastdfs-nginx-config
      - name: mod-fastdfs
        configMap:
          name: mod-fastdfs
      containers:
      - image: 172.16.43.156/app/fastdfs:1.2
        name: fastdfs-storage
        #该容器启动为storage服务
        command: ["/entrypoint.sh","storage"]
#        args: ["storage","nginx"]
#        - '/entrypoint.sh  storage'
#        - '/entrypoint.sh  nginx'
        env:
        #定义环境变量
        - name: TRACKER_SERVER
          #tracker服务器地址及IP DNS解析地址为$pod名.$serviceName.$命名空间
          value: fastdfs-tracker-0.fastdfs-tracker.uat-app:22122
          #定义存储组名
        - name: GROUP_NAME
          value: group1
        volumeMounts:
        - name: storage-data
          mountPath: /fastdfs/storage/data
          subPath: data
        - name: storage-data
          mountPath: /fastdfs/store_path
          subPath: store
      - name: fastdfs-nginx
        image: 172.16.43.156/app/fastdfs:1.2
        #该容器启动为storage服务
        command: ["/entrypoint.sh","nginx"]
        env:
        #定义环境变量
        - name: TRACKER_SERVER
          #tracker服务器地址及IP DNS解析地址为$pod名.$serviceName.$命名空间
          value: fastdfs-tracker-0.fastdfs-tracker.uat-app:22122
          #定义存储组名
#        - name: GROUP_NAME
#          value: group1
        volumeMounts:
        - name: storage-data
          mountPath: /fastdfs/store_path
          subPath: store
        - name: fastdfs-nginx-config
          mountPath: /etc/nginx/conf/nginx.conf
          subPath: nginx.conf
        - name: mod-fastdfs
#          mountPath: /etc/fdfs/mod_fastdfs.conf
          mountPath: /fdfs_conf/mod_fastdfs.conf
          subPath: mod_fastdfs.conf
  volumeClaimTemplates:
    - metadata:
        name: storage-data
        annotations:
          volume.beta.kubernetes.io/storage-class: "uat-nfs-storage"
      spec:
        accessModes: [ "ReadWriteMany" ]
        resources:
          requests:
            storage: 10Gi

(4) storage-cluster-svc.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: fastdfs-storage
  name: fastdfs-storage
  namespace: uat-app
spec:
  ports:
  - port: 23000
    protocol: TCP
    targetPort: 23000
  clusterIP: None
  selector:
    app: fastdfs-storage
  type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: fastdfs-nginx
  name: fastdfs-nginx
  namespace: uat-app
spec:
  ports:
  - port: 8888
    protocol: TCP
    targetPort: 8888
    nodePort: 48888
  selector:
    app: fastdfs-storage
  type: NodePort

执行shell脚本,创建storage

kubectl   apply   -f  storage-statefulset.yaml 
kubectl   apply   -f  storage-cluster-svc.yaml 

3、验证可用性

1、准备client.conf文件,进入容器并执行

cat  <<  EOF > client.conf
> connect_timeout=30
> network_timeout=60
> base_path=/fastdfs/tracker
> tracker_server=fastdfs-tracker-0.fastdfs-tracker.uat-app:22122
> log_level=info
> use_connection_pool = false
> connection_pool_max_idle_time = 3600
> load_fdfs_parameters_from_tracker=false
> use_storage_id = false
> storage_ids_filename = storage_ids.conf
> http.tracker_server_port=80
> EOF

2、上传文件测试

# echo testtestetsttets  > 1.txt
# fdfs_upload_file  client.conf  1.txt
group1/M00/00/00/CvQA4mJT-ROAG3tiAAAAEQsEHlw303.txt

3、浏览器访问

http://172.16.43.156:48888/group1/M00/00/00/CvQA4mJT-ROAG3tiAAAAEQsEHlw303.txt

 

posted @ 2022-04-11 18:09  灰蓝色的白云梦想  阅读(374)  评论(1)    收藏  举报