1"use strict";(self.webpackChunkcaprover_docs_site=self.webpackChunkcaprover_docs_site||[]).push([["8977"],{7285(e,n,t){t.r(n),t.d(n,{metadata:()=>a,default:()=>m,frontMatter:()=>r,contentTitle:()=>i,toc:()=>c,assets:()=>d});var a=JSON.parse('{"id":"scaling/manage-nodes","title":"Manage Nodes","description":"Use the Cluster \u2192 Nodes view and docker node ls on a manager to check node availability and role. docker service ps SERVICE_NAME shows where an app\'s tasks run and why a task failed to start.","source":"@site/../content/en/docs-next/scaling/manage-nodes.md","sourceDirName":"scaling","slug":"/scaling/manage-nodes","permalink":"/docs-next/scaling/manage-nodes","draft":false,"unlisted":false,"editUrl":"https://github.com/caprover/caprover-website/edit/master/content/en/docs-next/scaling/manage-nodes.md","tags":[],"version":"current","frontMatter":{"id":"manage-nodes","title":"Manage Nodes","slug":"/scaling/manage-nodes"},"sidebar":"preview","previous":{"title":"Set Up a Multi-Node Cluster","permalink":"/docs-next/scaling/multi-node"},"next":{"title":"Application Placement","permalink":"/docs-next/scaling/placement"}}'),s=t(4848),o=t(8453);let r={id:"manage-nodes",title:"Manage Nodes",slug:"/scaling/manage-nodes"},i,d={},c=[];function l(e){let n={code:"code",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"Cluster \u2192 Nodes"})," view and ",(0,s.jsx)(n.code,{children:"docker node ls"})," on a manager to check node availability and role. ",(0,s.jsx)(n.code,{children:"docker service ps SERVICE_NAME"})," shows where an app's tasks run and why a task failed to start."]}),"\n",(0,s.jsx)(n.p,{children:"Before removing or draining a node, identify its running apps and any local volumes or bind mounts. Stateless tasks can usually be rescheduled if images are available from the registry; persistent data does not follow them automatically. Back up and move data deliberately before changing placement."}),"\n",(0,s.jsx)(n.p,{children:"Keep Swarm management and overlay ports restricted to trusted node addresses. If a node cannot join, verify Docker is installed, its Swarm is inactive, SSH credentials work from the manager, and the registry and inter-node routes are reachable."})]})}function m(e={}){let{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453(e,n,t){t.d(n,{R:()=>r,x:()=>i});var a=t(6540);let s={},o=a.createContext(s);function r(e){let n=a.useContext(o);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),a.createElement(o.Provider,{value:n},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.