K8S
基础
示例
工具
运行 File Brower 文件管理器

运行 File Brower 文件管理器

File Browser (opens in a new tab) 是一款流行的文件管理器,可以挂载其它应用申请的 PVC 来进行文件传输和预览等。

下面例子是演示如何使用 File Browser 挂载上一节示例的 PVC 然后提供一个 Web 文件管理器服务。

前提

存储 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
 

运行示例

  1. 部署

    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
    kubectl apply -f ingress.yaml
  2. 查看已创建 Pod

    kubectl get pods

    等待 Pod 进入 Running 状态.

    如果 Pod 一直不能进入 Running,可以通过下面的命令查看 Pod 的详细信息

    kubectl describe pod [pod-name]
  3. 查看 Ingress

    kubectl get ing

    如果 Ingress 准备好,一般在输出 ADDRESS 字段会分配一个 IP 地址

  4. 访问服务

    使用从 Ingress 获取 Hosts 地址,然后在浏览器中访问。其中用户名为 admin, 密码为 Deployment 设置的原始值。

    🎉 恭喜!您已在 Kubernetes 上部署一个 File Browser 文件管理器!