kube-plex

Scalable Plex Media Server on Kubernetes -- dispatch transcode jobs as pods on your cluster!

  • 所有者: munnerz/kube-plex
  • 平台:
  • 許可證: Apache License 2.0
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

kube-plex

kube-plex is a scalable Plex Media Server solution for Kubernetes. It
distributes transcode jobs by creating pods in a Kubernetes cluster to perform
transcodes, instead of running transcodes on the Plex Media Server instance
itself.

How it works

kube-plex works by replacing the Plex Transcoder program on the main PMS
instance with our own little shim. This shim intercepts calls to Plex
Transcoder, and creates Kubernetes pods to perform the work instead. These
pods use shared persistent volumes to store the results of the transcode (and
read your media!).

Prerequisites

  • A persistent volume type that supports ReadWriteMany volumes (e.g. NFS,
    Amazon EFS)
  • Your Plex Media Server must be configured to allow connections from
    unauthorized users for your pod network, else the transcode job is unable to
    report information back to Plex about the state of the transcode job. At some
    point in the future this may change, but it is a required step in order to make
    transcodes work right now.

Setup

This guide will go through setting up a Plex Media Server instance on a
Kubernetes cluster, configured to launch transcode jobs on the same cluster
in pods created in the same 'plex' namespace.

  1. Obtain a Plex Claim Token by visiting plex.tv/claim.
    This will be used to bind your new PMS instance to your own user account
    automatically.

  2. Deploy the Helm chart included in this repository using the claim token
    obtained in step 1. If you have pre-existing persistent volume claims for your
    media, you can specify its name with --set persistence.data.claimName. If not
    specified, a persistent volume will be automatically provisioned for you.

➜  helm install plex ./charts/kube-plex \
    --namespace plex \
    --set claimToken=[insert claim token here] \
    --set persistence.data.claimName=existing-pms-data-pvc \
    --set ingress.enabled=true

This will deploy a scalable Plex Media Server instance that uses Kubernetes as
a backend for executing transcode jobs.

  1. Access the Plex dashboard, either using kubectl port-forward, or using
    the services LoadBalancer IP (via kubectl get service), or alternatively use
    the ingress provisioned in the previous step (with --set ingress.enabled=true).

  2. Visit Settings->Server->Network and add your pod network subnet to the
    List of IP addresses and networks that are allowed without auth (near the
    bottom). For example, 10.100.0.0/16 is the subnet that pods in my cluster are
    assigned IPs from, so I enter 10.100.0.0/16 in the box.

You should now be able to play media from your PMS instance - pods will be
created to handle transcodes, and data automatically mounted in appropriately:

➜  kubectl get po -n plex
NAME                              READY     STATUS    RESTARTS   AGE
plex-kube-plex-75b96cdcb4-skrxr   1/1       Running   0          14m
pms-elastic-transcoder-7wnqk      1/1       Running   0          8m

主要指標

概覽
名稱與所有者munnerz/kube-plex
主編程語言Go
編程語言Go (語言數: 3)
平台
許可證Apache License 2.0
所有者活动
創建於2015-09-07 23:03:22
推送於2023-03-28 21:31:15
最后一次提交2020-06-12 10:05:21
發布數0
用户参与
星數1.2k
關注者數47
派生數188
提交數120
已啟用問題?
問題數77
打開的問題數50
拉請求數23
打開的拉請求數13
關閉的拉請求數12
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?