k8s之使用statefulset部署FastDFs
FastDFS是一个开源的分布式文件系统,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。Statefulset简介:应用程序与用户、设备、其他应用程序或外部
FastDFS是一个开源的分布式文件系统,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
Statefulset简介:
应用程序与用户、设备、其他应用程序或外部组件进行通信时,根据其是否需要记录前一次或多次通信中的相关信息以作为下一次通信的分类标准,可以将那些需要记录信息的应用程序称为有状态(stateful)应用,而无须记录的则称为无状态(stateless)应用。
无状态意味着一个进程不必跟踪过去的交互操作,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数(服务端自身不存储跟请求相关的任何数据,不包括数据库存储信息)本质上可以说它是一个纯粹的功能性行为。相应地,有状态则意味着进程存储了以前交互过程的记录,并且可以基于它对新的请求进行响应。至于状态信息被保存在内存中。
由StatefulSet控制器创建的pod资源拥有固定、唯一的标识符和专用存储卷,即便重新调度或终止后重建,其名称也依然保持不变,且此前的存储卷及其数据不会丢失。
使用statefulset部署的服务svc会有个“服务名-hs”,全称为headless Service,也叫无头服务,对这 headless Service 并不会分配 Cluster IP,kube-proxy 不会处理它们,而且平台也不会为它们进行负载均衡和路由,而是直接走 DNS 记录。
Headless Services 应用场景
第一种:自主选择权,有时候 client 想自己来决定使用哪个Real Server,可以通过查询DNS来获取 Real Server 的信息。
第二种:Headless Service 的对应的每一个 Endpoints,即每一个Pod,都会有对应的DNS域名,这样Pod之间就可以互相访问。
Kem部署FastDFs:
部署使用的是hostpath,所以需要先把配置文件放到对应的主机目录下,本次实例使用的目录为/apps/fdfs-conf,配置文件只需要修改storage.conf中的tracker地址,根据实例数进行配置。
#部署需要注意事项,部署服务的时候使用的hostpath,并且已经给主机打上标签,所以pod只会部署在这几台主机上,tracker和storage部署在相同主机上。
tracker.yaml
appName: tracker
version: v2
notes: tracker
services:
- version: v2
name: tracker
serviceMesh: 'false'
serviceMeshType: istio
type: StatefulSet
updateStrategy: RollingUpdate
describe: ''
replica: '2'
proxyMode: None
hostNetwork: 'false'
terminationGracePeriodSecond: '30'
logCollect: false
labels: {}
hostAlias: []
volumes:
- name: tracker-persistent-storage
path: /tracker
type: hostPath
servicePorts:
- port: 22122
targetPort: 22122
name: http-c-0-p-0-auto
protocol: TCP
containers:
- selectedImageName: fastdfs
selectedImageVersion: '6.04'
imagePullPolicy: Always
containerPorts:
- containerPort: 22122
name: http-c-0-p-0
protocol: TCP
quotas_cpu: ''
quotas_memory: ''
request_cpu: ''
request_memory: ''
confmaps: []
secrets: []
volumes:
- name: tracker-persistent-storage
path: /var/fdfs/
subPath: ''
logCollect: false
readOnly: 'false'
envVariables:
- name: TZ
value: Asia/Shanghai
command: []
lifecyclePreStopCommand: []
initContainers: []
storage.yaml
appName: storage
version: v2
notes: storage
services:
- version: v2
name: storage
serviceMesh: 'false'
serviceMeshType: istio
type: StatefulSet
updateStrategy: RollingUpdate
describe: ''
replica: '3'
proxyMode: None
hostNetwork: 'false'
terminationGracePeriodSecond: '30'
logCollect: false
labels: {}
hostAlias: []
volumes:
- name: storage-persistent-storage
path: /storage
type: hostPath
- name: storage-conf
path: /fdfs-conf
type: hostPath
servicePorts:
- port: 23000
targetPort: 23000
name: http-c-0-p-0-auto
protocol: TCP
- port: 8888
targetPort: 8888
name: http-c-1-p-0
protocol: TCP
containers:
- selectedImageName: fastdfs
selectedImageVersion: '6.04'
imagePullPolicy: Always
containerPorts:
- containerPort: 23000
name: http-c-0-p-0
protocol: TCP
quotas_cpu: ''
quotas_memory: ''
request_cpu: ''
request_memory: ''
confmaps: []
secrets: []
volumes:
- name: storage-persistent-storage
path: /var/fdfs/
subPath: ''
logCollect: false
readOnly: 'false'
- name: storage-conf
path: /etc/fdfs
subPath: ''
logCollect: false
readOnly: 'false'
envVariables:
- name: TZ
value: Asia/Shanghai
- name: GROUP_NAME
value: group1
command:
- /bin/sh
- '-c'
- /usr/bin/start.sh storage
lifecyclePreStopCommand: []
- selectedImageName: fastdfs-nginx
selectedImageVersion: '6.04'
imagePullPolicy: Always
containerPorts:
- containerPort: 8888
name: http-c-1-p-0
protocol: TCP
quotas_cpu: ''
quotas_memory: ''
request_cpu: ''
request_memory: ''
confmaps: []
secrets: []
volumes:
- name: storage-persistent-storage
path: /var/fdfs/
subPath: ''
logCollect: false
readOnly: 'false'
- name: storage-conf
path: /etc/fdfs
subPath: ''
logCollect: false
readOnly: 'false'
envVariables:
- name: TZ
value: Asia/Shanghai
command: []
lifecyclePreStopCommand: []
initContainers: []
更多推荐
所有评论(0)