在k8s上面部署fastdfs文件存储服务器
之前项目需要在在k8s上面部署fastdfs文件存储服务器,在网上找了好多文章都没有相关的说明和部署文件,就找到过一篇这样的文章,根据那篇文章做了些改动,最后完成了相关的部署,但是我自己也还是不太清楚这样部署是不是正确并安全的。如果有什么错误请大家提出来,互相学习。
- 首先是tracker容器的部署文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tracker-deploy # 部署的容器名称
namespace: fastdfs # 部署到的命名空间
labels:
name: tracker-deploy
spec:# 该 Deployment 的规格说明
replicas: 1 # 副本数
template:
metadata:
labels:
app: tracker
spec:
nodeSelector:
fastdfs: tracker # 选择器,nodeSelector根据 label 指定pod起在哪台机器上,根据自身所需进行修改,必须先在节点上面定义此标签
terminationGracePeriodSeconds: 0
containers:
- name: tracker
image: luhuiguo/fastdfs
imagePullPolicy: Always #获取镜像的策略 Always表示下载镜像 IfNotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像
ports:
- containerPort: 22122
protocol: TCP #端口协议,支持TCP和UDP,默认TCP
volumeMounts:
- name: tracker-volume
mountPath: /var/fdfs
command: ["/usr/bin/start.sh","tracker"]
volumes:
- name: tracker-volume
hostPath:
path: /home/data/fastdfs/tracker # 在宿主机上存储的地址
- storage容器的部署文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: storage0-deploy
namespace: fastdfs
labels:
name: storage0-deploy
spec:
replicas: 1
template:
metadata:
labels:
app: storage0
spec:
nodeSelector:
fastdfs: storage0
terminationGracePeriodSeconds: 0
containers:
- name: storage0
image: luhuiguo/fastdfs # 表示引用镜像的地址
imagePullPolicy: Always
ports:
- containerPort: 22122
protocol: TCP #端口协议,支持TCP和UDP,默认TCP
volumeMounts:
- name: storage0-volume
mountPath: /var/fdfs
env:
- name: TRACKER_SERVER
value: 10.96.0.110:22122
command: ["/usr/bin/start.sh","storage"]
volumes:
- name: storage0-volume
hostPath:
path: /home/data/fastdfs/storage0 # 在宿主机上存储的地址,可自行配置
- tracker服务和storage服务的部署文件,此处配置的服务类型为NodePort,便是可以通过外网访问,因为是在java代码中进行文件的操作,所以配置为外网访问,防止出现连接超时的情况。
apiVersion: v1
kind: Service
metadata:
name: tracker
labels:
app: tracker
namespace: fastdfs
spec:
selector:
app: tracker # 这里选择器一定要选择容器的标签
type: NodePort # 此处可以是ClusterIP,但ClusterIP只能在集群内部调用,外网访问不了
clusterIP: 10.96.0.110
ports:
- name: "22122"
port: 22122
targetPort: 22122
nodePort: 22122
---
apiVersion: v1
kind: Service
metadata:
name: storage0
labels:
app: storage0
namespace: fastdfs
spec:
selector:
app: storage0
type: NodePort
ports:
- name: "23000"
port: 23000
targetPort: 23000
nodePort: 23000
我之前就是参照这篇文章写的,如果有需要可以参照:docker、kubernetes安装部署fastdfs文件集群系统