运行 File Brower 文件管理器
File Browser (opens in a new tab) 是一款流行的文件管理器,可以挂载其它应用申请的 PVC 来进行文件传输和预览等。
下面例子是演示如何使用 File Browser 挂载上一节示例的 PVC 然后提供一个 Web 文件管理器服务。
前提
- 本地已经安装命令行工具 kubectl (opens in a new tab)
- 获取了 kubeconfig
存储 PVC
使用 运行带 Pytorch 的 JupyterLab 开发环境 的申请 PVC
部署 Deployment
部署一个 2 核 4Gi 的 File Browser 容器。
其中 password
使用 filebrowser hash <password>
命令行工具生成。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: filebrowser
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
name: filebrowser
template:
metadata:
labels:
name: filebrowser
spec:
containers:
- name: filebrowser
image: filebrowser/filebrowser:v2.30.0
args:
- --address=0.0.0.0
- --root=/data
- --password=$2a$10$vxvHgyw34uwxlm0Xbbhlz.ISLM4CJDP1NhSje.bIM4hxIwQQst7pu
ports:
- name: http
containerPort: 80
protocol: TCP
resources:
limits:
cpu: 2
memory: 4Gi
securityContext:
runAsUser: 0
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: jupyter
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node.kubernetes.io/cpu
operator: In
values:
- epyc-7452
服务 Service
service.yaml
apiVersion: v1
kind: Service
metadata:
name: filebrowser
spec:
type: ClusterIP
selector:
name: filebrowser
ports:
- port: 80
name: http
targetPort: http
protocol: TCP
入口 Ingress
ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: filebrowser
annotations:
cert-manager.io/cluster-issuer: zerossl-prod
nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
ingressClassName: nginx
tls:
- hosts:
- filebrowser.poc1-be9e3e9b62c8.ing.zw1.paratera.com
secretName: filebrowser-tls
rules:
- host: filebrowser.poc1-be9e3e9b62c8.ing.zw1.paratera.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: filebrowser
port:
number: 80
运行示例
-
部署
kubectl apply -f deployment.yaml kubectl apply -f service.yaml kubectl apply -f ingress.yaml
-
查看已创建 Pod
kubectl get pods
等待 Pod 进入 Running 状态.
如果 Pod 一直不能进入 Running,可以通过下面的命令查看 Pod 的详细信息
kubectl describe pod [pod-name]
-
查看 Ingress
kubectl get ing
如果 Ingress 准备好,一般在输出 ADDRESS 字段会分配一个 IP 地址
-
访问服务
使用从 Ingress 获取 Hosts 地址,然后在浏览器中访问。其中用户名为
admin
, 密码为 Deployment 设置的原始值。🎉 恭喜!您已在 Kubernetes 上部署一个 File Browser 文件管理器!