User Tools

Site Tools


editing_profile_resources

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
editing_profile_resources [2021/09/21 15:20] – created walkeradminediting_profile_resources [2023/03/09 22:35] (current) – external edit 127.0.0.1
Line 6: Line 6:
 ==== Introduction ==== ==== Introduction ====
 \\  \\ 
-IPHE comes with a set of pre-defined encoding profiles, but no way to manually add a new one from the MDT UI (at the time of writing).+<color #ed1c24>This article is really only applicable in PoD per Service deployments</color>
 \\  \\ 
 \\  \\ 
-To create new encoding profile, the best way to do this is to duplicate and existing MDT profile. We just then need to edit few lines in the profile and re-upload it.+IPHE encoding profiles (except the one just called 'encoding') have CPU limit that is defined in the yaml code. Each encoding profile type has a different value. However this value may not be very optimised for all serversdepending on the CPU / RAM configuration a server has. 
 +\\  
 +\\  
 +For this reason we will probably want to change the default values for particular server to optimise the number of vCPUs that are allocated to an encoding PoD.
 \\  \\ 
 \\  \\ 
Line 35: Line 38:
 ---- ----
  
- --- //[[al@nwalker.co.uk|Alan Walker]] 2021/09/21 14:49// --- //[[al@nwalker.co.uk|Alan Walker]] 2021/09/21 14:49// 
 ==== Editing the encoding profile ==== ==== Editing the encoding profile ====
 \\  \\ 
-Open the .yaml file (preferably in an editor that properly supports .yaml file formats (not notepad)) and save it to a new filename. If this is for a PoD per server then you can just save it as a new encoding filename like 'encoding-hd-custom.yaml' for example. If this is for a PoD per service, then save it including the service name, encoding-hd-bbc1.yaml for example.+Open the .yaml file (preferably in an editor that properly supports .yaml file formats (not notepad)) and save it to a new filename. 
 \\  \\ 
 \\  \\ 
-Below is the format of the default encoding-hd yaml file:+The part of the encoding profile that we are interested in starts with resources: If the file you downloaded does not have this section, download a difference default encoding profile (encoding-hd for example).
 \\  \\ 
 <code yaml> <code yaml>
-mdt-kinds: 
-  - kind: profile 
-    name: encoding-hd 
-    version: '' 
-    packages: 
-      - deploy-package: encoding-live-worker-hd 
-        version: 25.14.76+4.0.19 
-  - kind: deploy-package 
-    deploy-package: 
-      name: encoding-live-worker-hd 
-      version: 25.14.76+4.0.19 
-    chart: 
-      name: encoding-live-worker 
-      version: 25.14.76 
-    namespace: '{{ products_var.namespace }}' 
-    deploy_list: 
-      - mkel-hd1 
-    options: 
-      mdt: 
-        deployment_stage: 5 
-        upgrade: 
-          policy: immediate 
-      helm: 
-        wait: false 
-        timeout: 300 
-    values: 
-      image: 
-        serverdaemon: 
-          repository: '{{ products_var.docker_registry }}/mediakind/server-daemon' 
-          tag: '{{ products_var.server_daemon.tag }}' 
-        worker: 
-          repository: '{{ products_var.docker_registry }}/mediakind/encoding-live-worker' 
-        redis: 
-          repository: '{{ products_var.docker_registry }}/redis' 
-          tag: '{{ products_var.redis.tag }}' 
-        alarmProxy: 
-          repository: '{{ products_var.docker_registry }}/mediakind/alarm-proxy' 
-          tag: '{{ products_var.alarm_proxy.tag }}' 
-        initcontainer: 
-          repository: '{{ products_var.docker_registry }}/busybox' 
-          tag: 1.30.1 
-      alarmsViaRedisInWorkerPod: '{{ products_var.features.alarmsViaRedisInWorkerPod }}' 
-      el_worker: 
-        server_mngt_nic: '{{ products_var.server_mngt_nic }}' 
-        mpeg4cfg: | 
-          perChannelLicensing=true 
-      qsv: 
-        enable: false 
-      mongo: 
-        name: '{{ products_var.mongo.name }}' 
-        database: '{{ products_var.mongo.replicasetname }}' 
-        replica: '{{ products_var.mongo.replica }}' 
-      muhook: 
-        enable: '{{ products_var.features.muconv }}' 
-        interface: '{{ products_var.server_mngt_nic }}' 
-        process_name: '*liveTranscoder' 
-        log_level: 4 
-        log_output: stderr 
-      unified_ui: 
-        name: api-gateway 
-      rabbitmq: 
-        name: '{{ products_var.rabbitmq.name }}' 
-      etcd_mu: 
-        name: '{{ products_var.etcd.name }}' 
-        port: '{{ products_var.etcd.port }}' 
-      redis: 
-        name: '{{ products_var.redis.name }}' 
-      volumes: 
-        log: 
-          enable: '{{ products_var.log_volume }}' 
-      license_server_addr: '{{ products_var.license_server }}' 
-      server_processing_name: LiveEncoder 
-      nodeSelector: '{{ mdt.current_profile.profile_name_label }}' 
       resources:       resources:
         requests:         requests:
           cpu: 9           cpu: 9
-      privilegedInitContainer: 
-        enabled: true 
-        command: 
-          - sysctl 
-          - '-w' 
-      affinity: 
-        podAntiAffinity: 
-          requiredDuringSchedulingIgnoredDuringExecution: 
-            - topologyKey: kubernetes.io/hostname 
-              labelSelector: 
-                matchLabels: 
-                  app: encoding-live-worker 
 </code> </code>
 \\  \\ 
-We need to change a few lines, see below for a side-by-side comparison, where the original text is on the left and the edited text on the right. 
 \\  \\ 
-\\  +Below is the updated code block where we not only specify the vCPU requestwe can also specify limit that the PoD can go up to in terms of vCPU and memory.
-{{ :encoding_profile_change_01.png?900 |}} +
-\\  +
-The first three lines we edit are just for the profile names, and the associated deploy package. Line 17 is where we change the deploy list namesif you are working with PoD per node, then you add an entry here for each node that you want this encoding profile for, so if you want 5 encoding profiles of this type, you enter the names of those five encoding profiles (mkel1, mkel2, mkel3, mkel4 and mkel5 for instance). +
-\\  +
-\\  +
-If you are working with PoD per service, you would enter the service name here, and will only have a single item in your deploy list, bbc1 for instance. You will have to create this file for each service PoD you will require. +
-\\  +
-\\  +
- +
----- +
- +
-==== Adding the new encoding profile to MDT ==== +
-\\  +
-Once you have created your new encoding profiles, you can upload them to MDT. To do this use the 'Import Profile' button at the top right of the MDT web UI (ensure you are in profile view). +
-\\  +
-\\  +
-{{ :import_profile.png?900 |}} +
-\\  +
-Now select your profile +
-\\  +
-\\  +
-{{ :import_profile_02.png?800 |}} +
-\\  +
-\\  +
-Once uploaded you will see a confirmation panel. +
-\\  +
-\\  +
-{{ :import_profile_03.png?600 |}} +
-\\  +
-\\  +
-Click okay. Your new encoding profile will be at the bottom of the MDT profile page. +
-\\  +
-\\  +
-{{ :import_profile_04.png?900 |}} +
-\\  +
-\\  +
-To make it active, edit the profile, add some nodes and deploy it. +
-\\  +
-\\  +
- +
----- +
- +
-==== Edited encoding profile ==== +
-\\  +
-Below is the edited file that was used in this process.+
 \\  \\ 
 \\  \\ 
 <code yaml> <code yaml>
-mdt-kinds: 
-  - kind: profile 
-    name: encoding-sky-hd-01 
-    version: '' 
-    packages: 
-      - deploy-package: encoding-live-worker-sky-hd-01 
-        version: 25.14.76+4.0.19 
-  - kind: deploy-package 
-    deploy-package: 
-      name: encoding-live-worker-sky-hd-01 
-      version: 25.14.76+4.0.19 
-    chart: 
-      name: encoding-live-worker 
-      version: 25.14.76 
-    namespace: '{{ products_var.namespace }}' 
-    deploy_list: 
-      - sky-01 
-    options: 
-      mdt: 
-        deployment_stage: 5 
-        upgrade: 
-          policy: immediate 
-      helm: 
-        wait: false 
-        timeout: 300 
-    values: 
-      image: 
-        serverdaemon: 
-          repository: '{{ products_var.docker_registry }}/mediakind/server-daemon' 
-          tag: '{{ products_var.server_daemon.tag }}' 
-        worker: 
-          repository: '{{ products_var.docker_registry }}/mediakind/encoding-live-worker' 
-        redis: 
-          repository: '{{ products_var.docker_registry }}/redis' 
-          tag: '{{ products_var.redis.tag }}' 
-        alarmProxy: 
-          repository: '{{ products_var.docker_registry }}/mediakind/alarm-proxy' 
-          tag: '{{ products_var.alarm_proxy.tag }}' 
-        initcontainer: 
-          repository: '{{ products_var.docker_registry }}/busybox' 
-          tag: 1.30.1 
-      alarmsViaRedisInWorkerPod: '{{ products_var.features.alarmsViaRedisInWorkerPod }}' 
-      el_worker: 
-        server_mngt_nic: '{{ products_var.server_mngt_nic }}' 
-        mpeg4cfg: | 
-          perChannelLicensing=true 
-      qsv: 
-        enable: false 
-      mongo: 
-        name: '{{ products_var.mongo.name }}' 
-        database: '{{ products_var.mongo.replicasetname }}' 
-        replica: '{{ products_var.mongo.replica }}' 
-      muhook: 
-        enable: '{{ products_var.features.muconv }}' 
-        interface: '{{ products_var.server_mngt_nic }}' 
-        process_name: '*liveTranscoder' 
-        log_level: 4 
-        log_output: stderr 
-      unified_ui: 
-        name: api-gateway 
-      rabbitmq: 
-        name: '{{ products_var.rabbitmq.name }}' 
-      etcd_mu: 
-        name: '{{ products_var.etcd.name }}' 
-        port: '{{ products_var.etcd.port }}' 
-      redis: 
-        name: '{{ products_var.redis.name }}' 
-      volumes: 
-        log: 
-          enable: '{{ products_var.log_volume }}' 
-      license_server_addr: '{{ products_var.license_server }}' 
-      server_processing_name: LiveEncoder 
-      nodeSelector: '{{ mdt.current_profile.profile_name_label }}' 
       resources:       resources:
         requests:         requests:
Line 265: Line 63:
           cpu: 15           cpu: 15
           memory: 10Gi           memory: 10Gi
-      privilegedInitContainer: 
-        enabled: true 
-        command: 
-          - sysctl 
-          - '-w' 
-      affinity: 
-        podAntiAffinity: 
-          requiredDuringSchedulingIgnoredDuringExecution: 
-            - topologyKey: kubernetes.io/hostname 
-              labelSelector: 
-                matchLabels: 
-                  app: encoding-live-worker 
 </code> </code>
 +\\ 
 +You will have to edit the file and upload it with a new set of name(s). Please [[duplicating_encoding_profiles|*** here ***]] for more instructions regarding this.
 +\\ 
 +\\ 
editing_profile_resources.1632234027.txt.gz · Last modified: 2023/03/09 22:35 (external edit)