apiVersion: apps/v1 kind: Deployment metadata: name: qbittorrent namespace: default spec: replicas: 1 selector: matchLabels: app: qbittorrent strategy: type: Recreate template: metadata: labels: app: qbittorrent spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: kubernetes.io/hostname operator: In values: - iris weight: 100 containers: - env: - name: PUID value: '1000' - name: PGID value: '1000' - name: TZ value: Etc/UTC - name: WEBUI_PORT value: '4300' - name: TORRENTING_PORT value: '6881' image: lscr.io/linuxserver/qbittorrent:5.0.4 imagePullPolicy: Always name: qbittorrent ports: - containerPort: 4300 name: webui-port protocol: TCP - containerPort: 6881 name: qbit-tcp protocol: TCP - containerPort: 6881 name: qbit-udp protocol: UDP resources: limits: cpu: '1' memory: 512Mi requests: cpu: 200m memory: 256Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /config name: qbittorrent-config - mountPath: /nas name: nas-storage dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: qbittorrent-config persistentVolumeClaim: claimName: qbittorrent-config - name: nas-storage nfs: path: /export/Storage server: 192.168.15.99 status: availableReplicas: 1 conditions: - lastTransitionTime: '2026-05-19T01:51:48Z' lastUpdateTime: '2026-07-22T10:14:39Z' message: ReplicaSet "qbittorrent-56dbf5f6c" has successfully progressed. reason: NewReplicaSetAvailable status: 'True' type: Progressing - lastTransitionTime: '2026-08-28T06:04:17Z' lastUpdateTime: '2026-08-28T06:04:17Z' message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: 'True' type: Available observedGeneration: 100 readyReplicas: 1 replicas: 1 terminatingReplicas: 0 updatedReplicas: 1 --- apiVersion: v1 kind: Service metadata: name: qbittorrent namespace: default spec: externalTrafficPolicy: Cluster internalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - name: webui nodePort: 30948 port: 4300 protocol: TCP targetPort: webui-port - name: torrent-tcp nodePort: 30183 port: 6881 protocol: TCP targetPort: qbit-tcp - name: torrent-udp nodePort: 30183 port: 6881 protocol: UDP targetPort: qbit-udp selector: app: qbittorrent sessionAffinity: None type: NodePort status: loadBalancer: {} --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: qbittorrent namespace: default spec: ingressClassName: nginx rules: - host: qbittorrent.haven http: paths: - backend: service: name: qbittorrent port: number: 4300 path: / pathType: Prefix status: loadBalancer: ingress: - ip: 192.168.20.204 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: qbittorrent-config namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfs-client volumeMode: Filesystem status: accessModes: - ReadWriteOnce capacity: storage: 1Gi phase: Bound