PageSourceSearch

https://docs-spectrocloud.netlify.app/assets/js/df41b012.e3755686.js

js docs-spectrocloud.netlify.app collected 2026-10-03 10:41:48 UTC 15,153 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkspectro_cloud_docs=self.webpackChunkspectro_cloud_docs||[]).push([["12880"],{246849:function(e,s,n){n.r(s),n.d(s,{frontMatter:()=>i,toc:()=>l,default:()=>h,metadata:()=>t,assets:()=>c,contentTitle:()=>a});var t=JSON.parse('{"id":"workspace/workspace-mgmt/resource-mgmt","title":"Resource Management","description":"Learn how to monitor workload resource consumption and implement resource quotas for your workspace.","source":"@site/docs/docs-content/workspace/workspace-mgmt/resource-mgmt.md","sourceDirName":"workspace/workspace-mgmt","slug":"/workspace/workspace-mgmt/resource-mgmt","permalink":"/workspace/workspace-mgmt/resource-mgmt","draft":false,"unlisted":false,"editUrl":"https://github.com/spectrocloud/librarium/blob/master/docs/docs-content/workspace/workspace-mgmt/resource-mgmt.md","tags":[{"inline":true,"label":"workspace","permalink":"/tags/workspace"},{"inline":true,"label":"resource-management","permalink":"/tags/resource-management"}],"version":"current","lastUpdatedAt":1777826507000,"sidebarPosition":20,"frontMatter":{"sidebar_label":"Resource Management","title":"Resource Management","description":"Learn how to monitor workload resource consumption and implement resource quotas for your workspace.","hide_table_of_contents":false,"sidebar_position":20,"tags":["workspace","resource-management"]},"sidebar":"docSidebar","previous":{"title":"Configure RBAC in Workspaces","permalink":"/workspace/workspace-mgmt/configure-rbac"},"next":{"title":"Backup and Restore","permalink":"/workspace/workspace-mgmt/backup-restore"}}'),r=n(474848),o=n(884429);let i={sidebar_label:"Resource Management",title:"Resource Management",description:"Learn how to monitor workload resource consumption and implement resource quotas for your workspace.",hide_table_of_contents:!1,sidebar_position:20,tags:["workspace","resource-management"]},a,c={},l=[{value:"Monitor Resource Consumption",id:"monitor-resource-consumption",level:2},{value:"Implement Resource Quotas",id:"implement-resource-quotas",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Limitations",id:"limitations",level:3},{value:"Procedure",id:"procedure",level:3},{value:"Validate",id:"validate",level:3}];function d(e){let s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.p,{children:["Workspaces give you a unified view of resource consumption in specified namespaces across all clusters in the workspace.\nAdditionally, you can implement resource quotas for the workspace as a whole, or for individual namespaces. The resource\nquotas are implemented using the native Kubernetes ResourceQuota object. Refer to the\n",(0,r.jsx)(s.a,{href:"https://kubernetes.io/docs/concepts/policy/resource-quotas",children:"Kubernetes documentation"})," to learn more about resource\nquotas."]}),"\n",(0,r.jsx)(s.h2,{id:"monitor-resource-consumption",children:"Monitor Resource Consumption"}),"\n",(0,r.jsx)(s.p,{children:"Workspaces allow you to view the workloads such as pods, deployments, daemon sets, and stateful sets in the namespaces\nthat comprise the workspace."}),"\n",(0,r.jsxs)(s.p,{children:["In the workspace details page, the landing ",(0,r.jsx)(s.strong,{children:"Namespaces"})," tab give you an overview of how much resources are consumed by\neach namespace. The ",(0,r.jsx)(s.strong,{children:"CPU"})," and ",(0,r.jsx)(s.strong,{children:"Memory"})," column display the total CPU and memory consumed by the namespaces with the\nsame name in the entire workspace."]}),"\n",(0,r.jsxs)(s.p,{children:["You can view more workloads by selecting the corresponding tab. For example, select the ",(0,r.jsx)(s.strong,{children:"Pods"})," tab if you want to\nmonitor pod workloads. Each tab will show you the CPU and memory consumption of the corresponding workload in the entire\nworkspace."]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:(0,r.jsx)(s.strong,{children:"Resource"})}),(0,r.jsx)(s.th,{children:(0,r.jsx)(s.strong,{children:"Available Information"})})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Namespaces"})}),(0,r.jsx)(s.td,{children:"CPU and memory utilization of the namespace in each cluster."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Pods"})}),(0,r.jsx)(s.td,{children:"Lists all the pods in a particular namespace with cluster names with detailed health status, age, and resource utilization."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Deployments"})}),(0,r.jsx)(s.td,{children:"All deployments in the namespaces included in the workspace and their age, pods, and resource utilization."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"DaemonSets"})}),(0,r.jsx)(s.td,{children:"All daemon set in the namespaces included in the workspace and their age, pods, and resource utilization."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"StatefulSets"})}),(0,r.jsx)(s.td,{children:"All the active StatefulSets in the namespaces included in the workspace and their age, pods, replicas, and resource utilization."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Jobs"})}),(0,r.jsx)(s.td,{children:"All jobs in the namespaces included in the workspace and their status."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"CronJobs"})}),(0,r.jsx)(s.td,{children:"All cron jobs in the namespaces included in the workspace and their status."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"RoleBinding"})}),(0,r.jsx)(s.td,{children:"All role bindings in the namespaces included in the workspace, including the role name and the subject name."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"ClusterRoleBinding"})}),(0,r.jsx)(s.td,{children:"All cluster role bindings in the cluster
1s included in the workspace."})]})]})]}),"\n",(0,r.jsx)(s.h2,{id:"implement-resource-quotas",children:"Implement Resource Quotas"}),"\n",(0,r.jsxs)(s.p,{children:["You can implement resource quotas on an entire workspace or implement them on individual namespaces. Resource quotas are\nimplemented through Kubernetes' native ResourceQuota object. For more information about resource quotas in Kubernetes,\nrefer to ",(0,r.jsx)(s.a,{href:"https://kubernetes.io/docs/concepts/policy/resource-quotas/",children:"Kubernetes documentation"}),"."]}),"\n",(0,r.jsx)(s.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["An active Palette workspace. Refer to ",(0,r.jsx)(s.a,{href:"/workspace/adding-a-new-workspace",children:"Create a Workspace"})," to learn how to create one."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["You are logged in as a Palette user that has the permission to modify workspaces. For more information, refer to\n",(0,r.jsx)(s.a,{href:"/user-management/palette-rbac/permissions",children:"Permissions"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"limitations",children:"Limitations"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["When using ",(0,r.jsx)(s.strong,{children:"GPU Allocation"}),", NVIDIA is the only supported vendor."]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"procedure",children:"Procedure"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Log in to ",(0,r.jsx)(s.a,{href:"https://console.spectrocloud.com",children:"Palette"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["In the ",(0,r.jsx)(s.strong,{children:"drop-down Menu"})," at the top of the page, choose the project that has your workspace."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["On the left ",(0,r.jsx)(s.strong,{children:"Main Menu"}),", click ",(0,r.jsx)(s.strong,{children:"Workspaces"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsx)(s.p,{children:"Click on the workspace you want to update."}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Click ",(0,r.jsx)(s.strong,{children:"Settings"})," in the upper-right corner."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Click ",(0,r.jsx)(s.strong,{children:"Namespaces"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.ol,{start:"7",children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Under ",(0,r.jsx)(s.strong,{children:"Workspace Quota"}),", you can specify the amount of CPU, memory, and GPU that the entire workspace is allowed to\nconsume. The default value is 0, which imposes no limit."]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.img,{alt:"Workspace Settings pane displaying Workspace Quota section of Namespaces tab",src:n(873474).A+"",width:"1917",height:"931"})}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["If you want to limit resource use based on namespaces, click on the three-dot menu and select ",(0,r.jsx)(s.strong,{children:"Edit"}),". Enter the\ndesired CPU, memory, and GPU limits in the ",(0,r.jsx)(s.strong,{children:"CPU Allocation"}),", ",(0,r.jsx)(s.strong,{children:"Memory Allocation"}),", and ",(0,r.jsx)(s.strong,{children:"GPU Allocation"})," columns.\nThese will populate the same values in the ",(0,r.jsx)(s.strong,{children:"Cluster Quota"}),". You can alter these to be lower or higher than the\n",(0,r.jsx)(s.strong,{children:"Namespace quote"})," as long as the total values are lower than the ",(0,r.jsx)(s.strong,{children:"Workspace Quota"}),"."]}),"\n",(0,r.jsxs)(s.p,{children:["When using ",(0,r.jsx)(s.strong,{children:"GPU Allocation"})," you must use a whole number and must select the vendor from the dropdown. You must also\nensure that the appropriate GPU device plugin is installed and compatible with your nodes to enforce the quota as\nPalette does not verify GPU vendor selection."]}),"\n",(0,r.jsx)(s.admonition,{type:"info",children:(0,r.jsx)(s.p,{children:"At this time, NVIDIA is the only supported vendor."})}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.img,{alt:"Workspace Settings pane displaying Worksp
1ace Quota section with values",src:n(921866).A+"",width:"1917",height:"932"})}),"\n",(0,r.jsx)(s.p,{children:"By default, the namespace in each cluster has the same resource limit. You can change this and enter the limit on the\nnamespace in one particular cluster. You must ensure that resources configured to individual namespaces do not exceed\nthe workspace quota when added together."}),"\n",(0,r.jsx)(s.p,{children:"For example, if you have two clusters in the workspace and impose a workspace-level quota of 8 Gi of memory, 8 CPUs,\nand 8 GPUs; and when each instance of the namespace in each cluster is added together, the total memory, CPU, and GPU\nquota cannot exceed 8 Gi of memory, 8 CPUs, and 8GPUs."}),"\n",(0,r.jsx)(s.p,{children:"The following resource quota configuration is not allowed for a workspace with 8 Gi of memory, 8 CPUs, and 8 GPUs\nbecause the resource quotas add up to 11 Gi, 11 CPUs, and 11 GPUs."}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{}),(0,r.jsx)(s.th,{children:"Cluster 1"}),(0,r.jsx)(s.th,{children:"Cluster 2"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Namespace 1"}),(0,r.jsx)(s.td,{children:"4 Gi, 4 CPUs, 4 GPUs"}),(0,r.jsx)(s.td,{children:"4 Gi, 4 CPUs, 4 GPUs"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Namespace 2"}),(0,r.jsx)(s.td,{children:"2 Gi, 2 CPU, 2 GPUs"}),(0,r.jsx)(s.td,{children:"1 Gi, 1 CPU, 1 GPU"})]})]})]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.img,{alt:"Workspace Settings pane displaying Workspace Quota section with values over quota",src:n(712355).A+"",width:"1918",height:"933"})}),"\n",(0,r.jsx)(s.p,{children:"The following resource quota configuration is allowed because the total quota is 8 Gi, 8 CPUs, and 8 GPUs."}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{}),(0,r.jsx)(s.th,{children:"Cluster 1"}),(0,r.jsx)(s.th,{children:"Cluster 2"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Namespace 1"}),(0,r.jsx)(s.td,{children:"2 Gi, 2 CPUs, 2 GPUs"}),(0,r.jsx)(s.td,{children:"2 Gi, 2 CPUs, 2 GPUs"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Namespace 2"}),(0,r.jsx)(s.td,{children:"3 Gi, 3 CPU, 3 GPUs"}),(0,r.jsx)(s.td,{children:"1 Gi, 1 CPU, 1 GPU"})]})]})]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.img,{alt:"Workspace Settings pane displaying Workspace Quota section with values within quota",src:n(729814).A+"",width:"1918",height:"934"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"validate",children:"Validate"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Connect to a cluster in your workspace using kubectl. For more information, refer to\n",(0,r.jsx)(s.a,{href:"/clusters/cluster-management/palette-webctl",children:"Access Cluster with kubectl"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:["Issue the following command to view the resource quotas created for your cluster. Confirm that the corresponding\nresource quotas have been created. You may also use the ",(0,r.jsx)(s.code,{children:"--namespace"})," flag to choose a specific namespace to examine."]}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-shell",children:"kubectl get resourcequota --all-namespaces\n"})}),"\n"]}),"\n"]})]})}function h(e={}){let{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},873474:function(e,s,n){n.d(s,{A:()=>t});let t=n.p+"assets/images/workspace-management_resource-management_4-7-d4e5f0c7637296c640aba7f0f4543717.webp"},712355:function(e,s,n){n.d(s,{A:()=>t});let t=n.p+"assets/images/workspace-management_workspace-over-quota_4-7-0aa5996fb76e931099e6be6557c56d15.webp"},921866:function(e,s,n){n.d(s,{A:()=>t});let t=n.p+"assets/images/workspace-management_workspace-quota_4-7-d5f35d2cd42015c99f29b86a4a8fac4e.webp"},729814:function(e,s,n){n.d(s,{A:()=>t});let t=n.p+"assets/images/workspace-management_workspace-within-quota_4-7-22bd9de3e372e91c5300e6bdc86f674b.webp"},884429:function(e,s,n){n.d(s,{R:()=>i,x:()=>a});var t=n(296540);let r={},o=t.createContext(r);function i(e){let s=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.