CINXE.COM
Escalando Nodes e Pods no AKS | Microsoft Community Hub
<!DOCTYPE html><html lang="en-US"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="icon" href="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/favicon-1730836283320.png?time=1730836286415&image-dimensions=32x32" type="image/png"/><link rel="apple-touch-icon" href="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/favicon-1730836283320.png?time=1730836286415&image-dimensions=180x180" type="image/png"/><link rel="manifest" href="/manifest.webmanifest/customTheme1/1732228015673"/><style>@font-face { font-family: "Segoe UI"; font-style: normal; font-weight: 400; font-display: swap; src: local("Segoe UI-normal-400"), url("https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/SegoeUI-normal-400.woff2") format('woff2'); } @font-face { font-family: "Segoe UI"; font-style: normal; font-weight: 300; font-display: swap; src: local("Segoe UI-normal-300"), url("https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/SegoeUI-normal-300.woff2") format('woff2'); } @font-face { font-family: "Segoe UI"; font-style: normal; font-weight: 600; font-display: swap; src: local("Segoe UI-normal-600"), url("https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/SegoeUI-normal-600.woff2") format('woff2'); } @font-face { font-family: "Segoe UI"; font-style: normal; font-weight: 700; font-display: swap; src: local("Segoe UI-normal-700"), url("https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/SegoeUI-normal-700.woff2") format('woff2'); } @font-face { font-family: "Segoe UI"; font-style: italic; font-weight: 400; font-display: swap; src: local("Segoe UI-italic-400"), url("https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/SegoeUI-italic-400.woff2") format('woff2'); }</style><style type="text/css">:root { --lia-vars-loaded: flex;--lia-body-margin: 0;--lia-body-max-width: 100%;--lia-container-max-width: 1300px;--lia-one-column-narrow-width: 800px;--lia-grid-gutter-width-md: 30px;--lia-grid-gutter-width-xs: 10px;--lia-bs-black-h: 0;--lia-bs-black-s: 0%;--lia-bs-black-l: 0%;--lia-bs-black: hsl(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l));--lia-bs-white-h: 0;--lia-bs-white-s: 0%;--lia-bs-white-l: 100%;--lia-bs-white: hsl(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l));--lia-bs-gray-100-h: 0;--lia-bs-gray-100-s: 0%;--lia-bs-gray-100-l: 96.86274509803921%;--lia-bs-gray-100: hsl(var(--lia-bs-gray-100-h), var(--lia-bs-gray-100-s), var(--lia-bs-gray-100-l));--lia-bs-gray-200-h: 0;--lia-bs-gray-200-s: 0%;--lia-bs-gray-200-l: 96.86274509803921%;--lia-bs-gray-200: hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), var(--lia-bs-gray-200-l));--lia-bs-gray-300-h: 0;--lia-bs-gray-300-s: 0%;--lia-bs-gray-300-l: 90.98039215686275%;--lia-bs-gray-300: hsl(var(--lia-bs-gray-300-h), var(--lia-bs-gray-300-s), var(--lia-bs-gray-300-l));--lia-bs-gray-400-h: 0;--lia-bs-gray-400-s: 0%;--lia-bs-gray-400-l: 85.09803921568627%;--lia-bs-gray-400: hsl(var(--lia-bs-gray-400-h), var(--lia-bs-gray-400-s), var(--lia-bs-gray-400-l));--lia-bs-gray-500-h: 0;--lia-bs-gray-500-s: 0%;--lia-bs-gray-500-l: 80%;--lia-bs-gray-500: hsl(var(--lia-bs-gray-500-h), var(--lia-bs-gray-500-s), var(--lia-bs-gray-500-l));--lia-bs-gray-600-h: 0;--lia-bs-gray-600-s: 0%;--lia-bs-gray-600-l: 44.31372549019608%;--lia-bs-gray-600: hsl(var(--lia-bs-gray-600-h), var(--lia-bs-gray-600-s), var(--lia-bs-gray-600-l));--lia-bs-gray-700-h: 0;--lia-bs-gray-700-s: 0%;--lia-bs-gray-700-l: 43.92156862745098%;--lia-bs-gray-700: hsl(var(--lia-bs-gray-700-h), var(--lia-bs-gray-700-s), var(--lia-bs-gray-700-l));--lia-bs-gray-800-h: 0;--lia-bs-gray-800-s: 0%;--lia-bs-gray-800-l: 32.94117647058823%;--lia-bs-gray-800: hsl(var(--lia-bs-gray-800-h), var(--lia-bs-gray-800-s), var(--lia-bs-gray-800-l));--lia-bs-gray-900-h: 0;--lia-bs-gray-900-s: 0%;--lia-bs-gray-900-l: 20%;--lia-bs-gray-900: hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l));--lia-bs-dark-h: 0;--lia-bs-dark-s: 0%;--lia-bs-dark-l: 32.94117647058823%;--lia-bs-dark: hsl(var(--lia-bs-dark-h), var(--lia-bs-dark-s), var(--lia-bs-dark-l));--lia-bs-light-h: 0;--lia-bs-light-s: 0%;--lia-bs-light-l: 96.86274509803921%;--lia-bs-light: hsl(var(--lia-bs-light-h), var(--lia-bs-light-s), var(--lia-bs-light-l));--lia-bs-primary-h: 210.2830188679245;--lia-bs-primary-s: 100%;--lia-bs-primary-l: 41.568627450980394%;--lia-bs-primary: hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l));--lia-bs-secondary-h: 0;--lia-bs-secondary-s: 0%;--lia-bs-secondary-l: 20%;--lia-bs-secondary: hsl(var(--lia-bs-secondary-h), var(--lia-bs-secondary-s), var(--lia-bs-secondary-l));--lia-bs-body-bg-h: 0;--lia-bs-body-bg-s: 0%;--lia-bs-body-bg-l: 100%;--lia-bs-body-bg: hsl(var(--lia-bs-body-bg-h), var(--lia-bs-body-bg-s), var(--lia-bs-body-bg-l));--lia-bs-body-color-h: 0;--lia-bs-body-color-s: 0%;--lia-bs-body-color-l: 20%;--lia-bs-body-color: hsl(var(--lia-bs-body-color-h), var(--lia-bs-body-color-s), var(--lia-bs-body-color-l));--lia-bs-info-h: 206.66666666666674;--lia-bs-info-s: 73.63636363636363%;--lia-bs-info-l: 56.86274509803921%;--lia-bs-info: hsl(var(--lia-bs-info-h), var(--lia-bs-info-s), var(--lia-bs-info-l));--lia-bs-success-h: 169.5454545454545;--lia-bs-success-s: 53.2258064516129%;--lia-bs-success-l: 51.37254901960784%;--lia-bs-success: hsl(var(--lia-bs-success-h), var(--lia-bs-success-s), var(--lia-bs-success-l));--lia-bs-warning-h: 43.04347826086956;--lia-bs-warning-s: 96.8421052631579%;--lia-bs-warning-l: 62.745098039215684%;--lia-bs-warning: hsl(var(--lia-bs-warning-h), var(--lia-bs-warning-s), var(--lia-bs-warning-l));--lia-bs-danger-h: 9.316770186335418;--lia-bs-danger-s: 74.88372093023257%;--lia-bs-danger-l: 42.15686274509804%;--lia-bs-danger: hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), var(--lia-bs-danger-l));--lia-alert-system-color-h: 24;--lia-alert-system-color-s: 100%;--lia-alert-system-color-l: 50%;--lia-alert-system-color: hsl(var(--lia-alert-system-color-h), var(--lia-alert-system-color-s), var(--lia-alert-system-color-l));--lia-bs-text-muted-h: 0;--lia-bs-text-muted-s: 0%;--lia-bs-text-muted-l: 43.92156862745098%;--lia-bs-text-muted: hsl(var(--lia-bs-text-muted-h), var(--lia-bs-text-muted-s), var(--lia-bs-text-muted-l));--lia-highlight-color-h: 57.804878048780495;--lia-highlight-color-s: 100%;--lia-highlight-color-l: 83.92156862745098%;--lia-highlight-color: hsl(var(--lia-highlight-color-h), var(--lia-highlight-color-s), var(--lia-highlight-color-l));--lia-outline-color: var(--lia-bs-primary);--lia-bs-font-size-base: 16px;--lia-bs-font-size-sm: 14px;--lia-font-size-xxs: 11px;--lia-font-size-xs: 12px;--lia-bs-font-size-lg: 20px;--lia-bs-small-font-size: 14px;--lia-font-size-xl: 24px;--lia-bs-font-family-base: Segoe UI, system-ui;--lia-bs-font-weight-base: 400;--lia-bs-font-weight-light: 300;--lia-bs-font-weight-normal: 400;--lia-font-weight-md: 500;--lia-bs-font-weight-bold: 700;--lia-font-style-base: normal;--lia-bs-line-height-base: 1.5;--lia-bs-h1-font-size: 34px;--lia-bs-h2-font-size: 32px;--lia-bs-h3-font-size: 28px;--lia-bs-h4-font-size: 24px;--lia-bs-h5-font-size: 20px;--lia-bs-h6-font-size: 16px;--lia-bs-headings-font-family: Segoe UI, system-ui;--lia-bs-headings-line-height: 1.3;--lia-bs-headings-font-weight: 400;--lia-headings-font-style: normal;--lia-subheader-font-size: 11px;--lia-subheader-font-weight: 500;--lia-bs-headings-color: var(--lia-bs-body-color);--lia-h1-letter-spacing: normal;--lia-h2-letter-spacing: normal;--lia-h3-letter-spacing: normal;--lia-h4-letter-spacing: normal;--lia-h5-letter-spacing: normal;--lia-h6-letter-spacing: normal;--lia-letter-spacing-subheading: 2px;--lia-letter-spacing-sm: normal;--lia-letter-spacing-xs: normal;--lia-h1-font-weight: var(--lia-bs-headings-font-weight);--lia-h2-font-weight: var(--lia-bs-headings-font-weight);--lia-h3-font-weight: var(--lia-bs-headings-font-weight);--lia-h4-font-weight: var(--lia-bs-headings-font-weight);--lia-h5-font-weight: var(--lia-bs-headings-font-weight);--lia-h6-font-weight: var(--lia-bs-headings-font-weight);--lia-btn-font-style: normal;--lia-bs-btn-font-weight: 700;--lia-btn-text-transform: none;--lia-bs-btn-disabled-opacity: 0.5;--lia-bs-btn-border-radius-sm: 3px;--lia-bs-btn-border-radius: 3px;--lia-bs-btn-border-radius-lg: 5px;--lia-bs-btn-padding-x: 12px;--lia-bs-btn-padding-x-lg: 16px;--lia-btn-padding-x-hero: 60px;--lia-bs-btn-padding-y: 5px;--lia-bs-btn-padding-y-lg: 7px;--lia-btn-padding-y-hero: var(--lia-bs-btn-padding-y-lg);--lia-btn-primary-text-color: var(--lia-bs-white);--lia-btn-primary-text-hover-color: var(--lia-bs-white);--lia-btn-primary-text-active-color: var(--lia-bs-white);--lia-btn-primary-bg-color: var(--lia-bs-primary);--lia-btn-primary-bg-hover-color: hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.85));--lia-btn-primary-bg-active-color: hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.7));--lia-btn-primary-border: 1px solid transparent;--lia-btn-primary-border-hover: 1px solid transparent;--lia-btn-primary-border-active: 1px solid transparent;--lia-btn-primary-border-focus: 1px solid var(--lia-bs-white);--lia-btn-primary-box-shadow-focus: 0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2);--lia-btn-secondary-text-color: var(--lia-bs-gray-900);--lia-btn-secondary-text-hover-color: hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95));--lia-btn-secondary-text-active-color: hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9));--lia-btn-secondary-bg-color: var(--lia-bs-gray-200);--lia-btn-secondary-bg-hover-color: hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96));--lia-btn-secondary-bg-active-color: hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92));--lia-btn-secondary-border: 1px solid transparent;--lia-btn-secondary-border-hover: 1px solid transparent;--lia-btn-secondary-border-active: 1px solid transparent;--lia-btn-secondary-border-focus: 1px solid transparent;--lia-btn-secondary-box-shadow-focus: 0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2);--lia-btn-tertiary-text-color: var(--lia-bs-gray-900);--lia-btn-tertiary-text-hover-color: hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95));--lia-btn-tertiary-text-active-color: hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9));--lia-btn-tertiary-bg-color: transparent;--lia-btn-tertiary-bg-hover-color: transparent;--lia-btn-tertiary-bg-active-color: hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.04);--lia-btn-tertiary-border: 1px solid transparent;--lia-btn-tertiary-border-hover: 1px solid hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08);--lia-btn-tertiary-border-active: 1px solid transparent;--lia-btn-tertiary-border-focus: 1px solid transparent;--lia-btn-tertiary-box-shadow-focus: 0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2);--lia-btn-destructive-text-color: var(--lia-bs-danger);--lia-btn-destructive-text-hover-color: hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95));--lia-btn-destructive-text-active-color: hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9));--lia-btn-destructive-bg-color: var(--lia-bs-gray-200);--lia-btn-destructive-bg-hover-color: hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96));--lia-btn-destructive-bg-active-color: hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92));--lia-btn-destructive-border: 1px solid transparent;--lia-btn-destructive-border-hover: 1px solid transparent;--lia-btn-destructive-border-active: 1px solid transparent;--lia-btn-destructive-border-focus: 1px solid transparent;--lia-btn-destructive-box-shadow-focus: 0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2);--lia-bs-border-color: hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08);--lia-bs-border-radius-sm: 3px;--lia-bs-border-radius: 5px;--lia-bs-border-radius-lg: 9px;--lia-border-radius-50: 100vw;--lia-content-item-border: none;--lia-box-shadow-xs: 0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.16);--lia-bs-box-shadow-sm: 0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.12);--lia-bs-box-shadow: 0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3);--lia-bs-box-shadow-lg: 0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3);--lia-bs-link-color: var(--lia-bs-primary);--lia-bs-link-hover-color: hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%));--lia-bs-link-decoration: none;--lia-bs-link-hover-decoration: underline;--lia-timing-fast: 150ms;--lia-timing-normal: 250ms;--lia-timing-slow: 500ms;--lia-timing-slowest: 750ms;--lia-timing-function: cubic-bezier(0.07, 0.91, 0.51, 1);--lia-avatar-border-radius: 50%;--lia-default-message-font-style: NORMAL;--lia-default-message-font-weight: 400;--lia-default-message-link-color: var(--lia-bs-link-color);--lia-default-message-link-decoration: none;--lia-default-message-link-font-weight: 400;--lia-default-message-link-font-style: NORMAL;--lia-forum-color-h: 207.03703703703695;--lia-forum-color-s: 73.63636363636363%;--lia-forum-color-l: 56.86274509803921%;--lia-forum-color: hsl(var(--lia-forum-color-h), var(--lia-forum-color-s), var(--lia-forum-color-l));--lia-forum-font-family: var(--lia-bs-font-family-base);--lia-forum-font-weight: var(--lia-default-message-font-weight);--lia-forum-line-height: var(--lia-bs-line-height-base);--lia-forum-font-style: var(--lia-default-message-font-style);--lia-forum-message-link-color: var(--lia-default-message-link-color);--lia-forum-message-link-decoration: var(--lia-default-message-link-decoration);--lia-forum-message-link-font-style: var(--lia-default-message-link-font-style);--lia-forum-message-link-font-weight: var(--lia-default-message-link-font-weight);--lia-forum-solved-color-h: 161.94690265486724;--lia-forum-solved-color-s: 73.85620915032679%;--lia-forum-solved-color-l: 30.000000000000004%;--lia-forum-solved-color: hsl(var(--lia-forum-solved-color-h), var(--lia-forum-solved-color-s), var(--lia-forum-solved-color-l));--lia-blog-color-h: 170.126582278481;--lia-blog-color-s: 73.83177570093459%;--lia-blog-color-l: 41.96078431372548%;--lia-blog-color: hsl(var(--lia-blog-color-h), var(--lia-blog-color-s), var(--lia-blog-color-l));--lia-blog-font-family: var(--lia-bs-font-family-base);--lia-blog-font-weight: var(--lia-default-message-font-weight);--lia-blog-line-height: 1.75;--lia-blog-font-style: var(--lia-default-message-font-style);--lia-blog-message-link-color: var(--lia-default-message-link-color);--lia-blog-message-link-decoration: var(--lia-default-message-link-decoration);--lia-blog-message-link-font-style: var(--lia-default-message-link-font-style);--lia-blog-message-link-font-weight: var(--lia-default-message-link-font-weight);--lia-tkb-color-h: 212.6470588235294;--lia-tkb-color-s: 30.909090909090907%;--lia-tkb-color-l: 43.13725490196079%;--lia-tkb-color: hsl(var(--lia-tkb-color-h), var(--lia-tkb-color-s), var(--lia-tkb-color-l));--lia-tkb-font-family: var(--lia-bs-font-family-base);--lia-tkb-font-weight: var(--lia-default-message-font-weight);--lia-tkb-line-height: 1.75;--lia-tkb-font-style: var(--lia-default-message-font-style);--lia-tkb-message-link-color: var(--lia-default-message-link-color);--lia-tkb-message-link-decoration: var(--lia-default-message-link-decoration);--lia-tkb-message-link-font-style: var(--lia-default-message-link-font-style);--lia-tkb-message-link-font-weight: var(--lia-default-message-link-font-weight);--lia-qanda-color-h: 207.03703703703695;--lia-qanda-color-s: 73.63636363636363%;--lia-qanda-color-l: 56.86274509803921%;--lia-qanda-color: hsl(var(--lia-qanda-color-h), var(--lia-qanda-color-s), var(--lia-qanda-color-l));--lia-qanda-font-family: var(--lia-bs-font-family-base);--lia-qanda-font-weight: var(--lia-default-message-font-weight);--lia-qanda-line-height: var(--lia-bs-line-height-base);--lia-qanda-font-style: var(--lia-default-message-link-font-style);--lia-qanda-message-link-color: var(--lia-default-message-link-color);--lia-qanda-message-link-decoration: var(--lia-default-message-link-decoration);--lia-qanda-message-link-font-style: var(--lia-default-message-link-font-style);--lia-qanda-message-link-font-weight: var(--lia-default-message-link-font-weight);--lia-qanda-solved-color: #3FA023;--lia-idea-color-h: 30.117647058823536;--lia-idea-color-s: 100%;--lia-idea-color-l: 50%;--lia-idea-color: hsl(var(--lia-idea-color-h), var(--lia-idea-color-s), var(--lia-idea-color-l));--lia-idea-font-family: var(--lia-bs-font-family-base);--lia-idea-font-weight: var(--lia-default-message-font-weight);--lia-idea-line-height: var(--lia-bs-line-height-base);--lia-idea-font-style: var(--lia-default-message-font-style);--lia-idea-message-link-color: var(--lia-default-message-link-color);--lia-idea-message-link-decoration: var(--lia-default-message-link-decoration);--lia-idea-message-link-font-style: var(--lia-default-message-link-font-style);--lia-idea-message-link-font-weight: var(--lia-default-message-link-font-weight);--lia-contest-color-h: 42.95081967213116;--lia-contest-color-s: 96.82539682539684%;--lia-contest-color-l: 62.94117647058823%;--lia-contest-color: hsl(var(--lia-contest-color-h), var(--lia-contest-color-s), var(--lia-contest-color-l));--lia-contest-font-family: var(--lia-bs-font-family-base);--lia-contest-font-weight: var(--lia-default-message-font-weight);--lia-contest-line-height: var(--lia-bs-line-height-base);--lia-contest-font-style: var(--lia-default-message-link-font-style);--lia-contest-message-link-color: var(--lia-default-message-link-color);--lia-contest-message-link-decoration: var(--lia-default-message-link-decoration);--lia-contest-message-link-font-style: ITALIC;--lia-contest-message-link-font-weight: var(--lia-default-message-link-font-weight);--lia-occasion-color-h: 9.101123595505612;--lia-occasion-color-s: 74.16666666666666%;--lia-occasion-color-l: 47.05882352941176%;--lia-occasion-color: hsl(var(--lia-occasion-color-h), var(--lia-occasion-color-s), var(--lia-occasion-color-l));--lia-occasion-font-family: var(--lia-bs-font-family-base);--lia-occasion-font-weight: var(--lia-default-message-font-weight);--lia-occasion-line-height: var(--lia-bs-line-height-base);--lia-occasion-font-style: var(--lia-default-message-font-style);--lia-occasion-message-link-color: var(--lia-default-message-link-color);--lia-occasion-message-link-decoration: var(--lia-default-message-link-decoration);--lia-occasion-message-link-font-style: var(--lia-default-message-link-font-style);--lia-occasion-message-link-font-weight: var(--lia-default-message-link-font-weight);--lia-grouphub-color-h: 0;--lia-grouphub-color-s: 0%;--lia-grouphub-color-l: 20%;--lia-grouphub-color: hsl(var(--lia-grouphub-color-h), var(--lia-grouphub-color-s), var(--lia-grouphub-color-l));--lia-category-color-h: 0;--lia-category-color-s: 0%;--lia-category-color-l: 58.03921568627452%;--lia-category-color: hsl(var(--lia-category-color-h), var(--lia-category-color-s), var(--lia-category-color-l));--lia-community-color-h: 0;--lia-community-color-s: 0%;--lia-community-color-l: 100%;--lia-community-color: hsl(var(--lia-community-color-h), var(--lia-community-color-s), var(--lia-community-color-l));--lia-product-color-h: 0;--lia-product-color-s: 0%;--lia-product-color-l: 58.03921568627452%;--lia-product-color: hsl(var(--lia-product-color-h), var(--lia-product-color-s), var(--lia-product-color-l));--lia-panel-bg-color: var(--lia-bs-white);--lia-panel-border-radius: var(--lia-bs-border-radius);--lia-panel-border-color: var(--lia-bs-border-color);--lia-panel-box-shadow: none;--lia-card-bg-color: var(--lia-panel-bg-color);--lia-card-border-radius: var(--lia-panel-border-radius);--lia-card-box-shadow: var(--lia-box-shadow-xs);--lia-bs-modal-content-color: var(--lia-bs-body-color);--lia-bs-modal-content-bg: var(--lia-bs-white);--lia-bs-modal-backdrop-bg: var(--lia-bs-black);--lia-bs-modal-sm: 440px;--lia-bs-modal-md: 760px;--lia-bs-modal-lg: 1080px;--lia-bs-modal-backdrop-opacity: 0.3;--lia-bs-modal-content-box-shadow-xs: var(--lia-bs-box-shadow-sm);--lia-bs-modal-content-box-shadow-xs-up: var(--lia-bs-box-shadow);--lia-bs-modal-header-font-weight: 700;--lia-icon-size-10: 10px;--lia-icon-size-12: 12px;--lia-icon-size-14: 14px;--lia-icon-size-16: 16px;--lia-icon-size-20: 20px;--lia-icon-size-24: 24px;--lia-icon-size-30: 30px;--lia-icon-size-40: 40px;--lia-icon-size-50: 50px;--lia-icon-size-60: 60px;--lia-icon-size-80: 80px;--lia-icon-size-120: 120px;--lia-icon-size-160: 160px;--lia-bs-input-border-color: var(--lia-bs-gray-600);--lia-bs-input-disabled-color: var(--lia-bs-gray-600);--lia-bs-input-focus-border-color: var(--lia-bs-primary);--lia-bs-label-margin-bottom: 10px;--lia-bs-input-btn-font-size: var(--lia-bs-font-size-sm);--lia-bs-input-focus-box-shadow: 0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2);--lia-check-label-margin-bottom: 2px;--lia-checkbox-border-radius: 3px;--lia-bs-input-border-radius-sm: var(--lia-bs-border-radius-sm);--lia-bs-input-border-radius: var(--lia-bs-border-radius);--lia-bs-input-border-radius-lg: var(--lia-bs-border-radius-lg);--lia-bs-form-text-margin-top: 4px;--lia-textarea-border-radius: var(--lia-bs-border-radius);--lia-input-active-fill-color: var(--lia-bs-primary);--lia-bs-popover-arrow-height: 8px;--lia-bs-popover-arrow-width: 16px;--lia-bs-popover-max-width: 300px;--lia-bs-popover-min-width: 100px;--lia-bs-popover-header-bg: var(--lia-bs-white);--lia-bs-popover-border-color: var(--lia-bs-border-color);--lia-bs-popover-border-radius: var(--lia-bs-border-radius);--lia-bs-popover-box-shadow: 0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15);--lia-bs-dropdown-font-size: var(--lia-bs-font-size-sm);--lia-bs-dropdown-border-color: var(--lia-bs-border-color);--lia-bs-dropdown-border-radius: var(--lia-bs-border-radius-sm);--lia-bs-dropdown-divider-bg: var(--lia-bs-gray-300);--lia-bs-dropdown-item-padding-y: 5px;--lia-bs-dropdown-item-padding-x: 20px;--lia-bs-dropdown-header-color: var(--lia-bs-gray-700);--lia-bs-list-group-item-padding-y: 15px;--lia-bs-list-group-item-padding-x: 15px;--lia-bs-list-group-border-color: var(--lia-bs-gray-300);--lia-list-li-mb-sm: 5px;--lia-list-li-mb-md: 10px;--lia-list-li-mb-lg: 15px;--lia-list-li-mb-xl: 20px;--lia-list-li-mb-xxl: 25px;--lia-img-preview-content-bg-color: var(--lia-bs-gray-900);--lia-img-preview-title-color: var(--lia-bs-white);--lia-img-preview-control-color: var(--lia-bs-white);--lia-img-preview-control-bg-color: var(--lia-bs-gray-800);--lia-load-dot-dark-color: hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2);--lia-load-dot-light-color: hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5);--lia-load-bar-dark-color: hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06);--lia-load-bar-light-color: hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4);--lia-load-text-color: var(--lia-bs-link-color);--lia-load-text-font-weight: var(--lia-font-weight-md);--lia-load-text-font-size: var(--lia-bs-font-size-sm);--lia-divider-size: 3px;--lia-divider-ml: 4px;--lia-divider-mr: 4px;--lia-divider-border-radius: 50%;--lia-divider-bg-color: var(--lia-bs-gray-600);--lia-divider-bg-color-active: var(--lia-bs-gray-600);--lia-chip-max-width: 300px;--lia-chip-height: 30px;--lia-yiq-light-h: 0;--lia-yiq-light-s: 0%;--lia-yiq-light-l: 100%;--lia-yiq-light: hsl(var(--lia-yiq-light-h), var(--lia-yiq-light-s), var(--lia-yiq-light-l));--lia-yiq-dark-h: 0;--lia-yiq-dark-s: 0%;--lia-yiq-dark-l: 0%;--lia-yiq-dark: hsl(var(--lia-yiq-dark-h), var(--lia-yiq-dark-s), var(--lia-yiq-dark-l));--lia-rte-bg-color: var(--lia-bs-white);--lia-rte-border-radius: var(--lia-panel-border-radius);--lia-rte-box-shadow: var(--lia-panel-box-shadow);--lia-rte-custom-color-1: #bfedd2;--lia-rte-custom-color-2: #fbeeb8;--lia-rte-custom-color-3: #f8cac6;--lia-rte-custom-color-4: #eccafa;--lia-rte-custom-color-5: #c2e0f4;--lia-rte-custom-color-6: #2dc26b;--lia-rte-custom-color-7: #f1c40f;--lia-rte-custom-color-8: #e03e2d;--lia-rte-custom-color-9: #b96ad9;--lia-rte-custom-color-10: #3598db;--lia-rte-custom-color-11: #169179;--lia-rte-custom-color-12: #e67e23;--lia-rte-custom-color-13: #ba372a;--lia-rte-custom-color-14: #843fa1;--lia-rte-custom-color-15: #236fa1;--lia-rte-custom-color-16: #ecf0f1;--lia-rte-custom-color-17: #ced4d9;--lia-rte-custom-color-18: #95a5a6;--lia-rte-custom-color-19: #7e8c8d;--lia-rte-custom-color-20: #34495e;--lia-rte-custom-color-21: #000000;--lia-rte-custom-color-22: #ffffff;--lia-rte-default-message-header-mt: 40px;--lia-rte-default-message-header-mb: 20px;--lia-rte-default-message-item-mt: 0;--lia-rte-default-message-item-mb: 10px;--lia-rte-diff-added-color: hsla(170, 53%, 51%, 0.4);--lia-rte-diff-removed-color: hsla(9, 74%, 47%, 0.4);--lia-rte-diff-none-color: hsla(0, 0%, 80%, 0.4);--lia-rte-diff-changed-color: hsla(43, 97%, 63%, 0.4);--lia-rte-special-message-header-mt: 40px;--lia-rte-special-message-header-mb: 20px;--lia-rte-special-message-item-mt: 0;--lia-rte-special-message-item-mb: 10px;--lia-prism-color: #000000;--lia-prism-bg-color: #f5f2f0;--lia-prism-font-family: var(--font-family-monospace);--lia-prism-font-size: var(--lia-bs-font-size-base);--lia-prism-font-weight-bold: var(--lia-bs-font-weight-bold);--lia-prism-font-style-italic: italic;--lia-prism-tab-size: 2;--lia-prism-highlight-color: #b3d4fc;--lia-prism-comment-color: #62707e;--lia-prism-punctuation-color: #6f6f6f;--lia-prism-namespace-opacity: 0.7;--lia-prism-prop-color: #990055;--lia-prism-selector-color: #517a00;--lia-prism-operator-color: #906736;--lia-prism-operator-bg-color: hsla(0, 0%, 100%, 0.5);--lia-prism-keyword-color: #0076a9;--lia-prism-function-color: #d3284b;--lia-prism-variable-color: #c14700;--lia-tag-bg-color: var(--lia-bs-gray-200);--lia-tag-bg-hover-color: var(--lia-bs-gray-400);--lia-tag-border-radius: var(--lia-bs-border-radius-sm);--lia-tag-color: var(--lia-bs-body-color);--lia-tag-hover-color: var(--lia-bs-body-color);--lia-tag-font-weight: var(--lia-font-weight-md);--lia-tag-font-size: var(--lia-font-size-xxs);--lia-tag-text-transform: uppercase;--lia-tag-letter-spacing: 0.5px;--lia-bs-toast-border-radius: var(--lia-bs-border-radius);--lia-bs-toast-padding-x: 12px;--lia-emoji-skin-tone-default: #ffcd43;--lia-emoji-skin-tone-light: #fae3c5;--lia-emoji-skin-tone-medium-light: #e2cfa5;--lia-emoji-skin-tone-medium: #daa478;--lia-emoji-skin-tone-medium-dark: #a78058;--lia-emoji-skin-tone-dark: #5e4d43;--lia-checkmark-input-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/checkmark-input.svg#checkmark-input);--lia-chevron-down-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-down.svg#chevron-down);--lia-close-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/close.svg#close);--lia-edit-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/edit.svg#edit);--lia-select-arrow-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/select-arrow.svg#select-arrow);--lia-video-play-active-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/video-play-active.svg#video-play-active);--lia-video-play-disabled-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/video-play-disabled.svg#video-play-disabled);--lia-user-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/user.svg#user);--lia-user-mention-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/mention.svg#mention);--lia-content-blog-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-blog.svg#content-blog);--lia-content-knowledge-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-knowledge.svg#content-knowledge);--lia-content-category-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-category.svg#content-category);--lia-content-contest-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-contest.svg#content-contest);--lia-content-discussion-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-discussion.svg#content-discussion);--lia-content-discussion-question-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-discussion-question.svg#content-discussion-question);--lia-content-occasion-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-occasion.svg#content-occasion);--lia-content-group-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-group.svg#content-group);--lia-content-idea-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-idea.svg#content-idea);--lia-external-link-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/external-link.svg#external-link);--lia-anchor-icon: url(/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/anchor.svg#anchor);--lia-primary-dark-h: var(--lia-bs-primary-h);--lia-primary-dark-s: var(--lia-bs-primary-s);--lia-primary-dark-l: 36%;--lia-primary-dark: hsl(var(--lia-primary-dark-h), var(--lia-primary-dark-s), var(--lia-primary-dark-l));--lia-primary-light-h: var(--lia-bs-primary-h);--lia-primary-light-s: var(--lia-bs-primary-s);--lia-primary-light-l: 74%;--lia-primary-light: hsl(var(--lia-primary-light-h), var(--lia-primary-light-s), var(--lia-primary-light-l));--lia-primary-lighter-h: var(--lia-bs-primary-h);--lia-primary-lighter-s: var(--lia-bs-primary-s);--lia-primary-lighter-l: 89%;--lia-primary-lighter: hsl(var(--lia-primary-lighter-h), var(--lia-primary-lighter-s), var(--lia-primary-lighter-l));--lia-primary-lightest-h: var(--lia-bs-primary-h);--lia-primary-lightest-s: var(--lia-bs-primary-s);--lia-primary-lightest-l: 95%;--lia-primary-lightest: hsl(var(--lia-primary-lightest-h), var(--lia-primary-lightest-s), var(--lia-primary-lightest-l));--lia-info-dark-h: var(--lia-bs-info-h);--lia-info-dark-s: var(--lia-bs-info-s);--lia-info-dark-l: 39%;--lia-info-dark: hsl(var(--lia-info-dark-h), var(--lia-info-dark-s), var(--lia-info-dark-l));--lia-info-light-h: var(--lia-bs-info-h);--lia-info-light-s: var(--lia-bs-info-s);--lia-info-light-l: 72%;--lia-info-light: hsl(var(--lia-info-light-h), var(--lia-info-light-s), var(--lia-info-light-l));--lia-info-lighter-h: var(--lia-bs-info-h);--lia-info-lighter-s: var(--lia-bs-info-s);--lia-info-lighter-l: 85%;--lia-info-lighter: hsl(var(--lia-info-lighter-h), var(--lia-info-lighter-s), var(--lia-info-lighter-l));--lia-info-lightest-h: var(--lia-bs-info-h);--lia-info-lightest-s: var(--lia-bs-info-s);--lia-info-lightest-l: 93%;--lia-info-lightest: hsl(var(--lia-info-lightest-h), var(--lia-info-lightest-s), var(--lia-info-lightest-l));--lia-success-dark-h: var(--lia-bs-success-h);--lia-success-dark-s: var(--lia-bs-success-s);--lia-success-dark-l: 24%;--lia-success-dark: hsl(var(--lia-success-dark-h), var(--lia-success-dark-s), var(--lia-success-dark-l));--lia-success-light-h: var(--lia-bs-success-h);--lia-success-light-s: var(--lia-bs-success-s);--lia-success-light-l: 62%;--lia-success-light: hsl(var(--lia-success-light-h), var(--lia-success-light-s), var(--lia-success-light-l));--lia-success-lighter-h: var(--lia-bs-success-h);--lia-success-lighter-s: var(--lia-bs-success-s);--lia-success-lighter-l: 80%;--lia-success-lighter: hsl(var(--lia-success-lighter-h), var(--lia-success-lighter-s), var(--lia-success-lighter-l));--lia-success-lightest-h: var(--lia-bs-success-h);--lia-success-lightest-s: var(--lia-bs-success-s);--lia-success-lightest-l: 91%;--lia-success-lightest: hsl(var(--lia-success-lightest-h), var(--lia-success-lightest-s), var(--lia-success-lightest-l));--lia-warning-dark-h: var(--lia-bs-warning-h);--lia-warning-dark-s: var(--lia-bs-warning-s);--lia-warning-dark-l: 39%;--lia-warning-dark: hsl(var(--lia-warning-dark-h), var(--lia-warning-dark-s), var(--lia-warning-dark-l));--lia-warning-light-h: var(--lia-bs-warning-h);--lia-warning-light-s: var(--lia-bs-warning-s);--lia-warning-light-l: 68%;--lia-warning-light: hsl(var(--lia-warning-light-h), var(--lia-warning-light-s), var(--lia-warning-light-l));--lia-warning-lighter-h: var(--lia-bs-warning-h);--lia-warning-lighter-s: var(--lia-bs-warning-s);--lia-warning-lighter-l: 84%;--lia-warning-lighter: hsl(var(--lia-warning-lighter-h), var(--lia-warning-lighter-s), var(--lia-warning-lighter-l));--lia-warning-lightest-h: var(--lia-bs-warning-h);--lia-warning-lightest-s: var(--lia-bs-warning-s);--lia-warning-lightest-l: 93%;--lia-warning-lightest: hsl(var(--lia-warning-lightest-h), var(--lia-warning-lightest-s), var(--lia-warning-lightest-l));--lia-danger-dark-h: var(--lia-bs-danger-h);--lia-danger-dark-s: var(--lia-bs-danger-s);--lia-danger-dark-l: 41%;--lia-danger-dark: hsl(var(--lia-danger-dark-h), var(--lia-danger-dark-s), var(--lia-danger-dark-l));--lia-danger-light-h: var(--lia-bs-danger-h);--lia-danger-light-s: var(--lia-bs-danger-s);--lia-danger-light-l: 72%;--lia-danger-light: hsl(var(--lia-danger-light-h), var(--lia-danger-light-s), var(--lia-danger-light-l));--lia-danger-lighter-h: var(--lia-bs-danger-h);--lia-danger-lighter-s: var(--lia-bs-danger-s);--lia-danger-lighter-l: 89%;--lia-danger-lighter: hsl(var(--lia-danger-lighter-h), var(--lia-danger-lighter-s), var(--lia-danger-lighter-l));--lia-danger-lightest-h: var(--lia-bs-danger-h);--lia-danger-lightest-s: var(--lia-bs-danger-s);--lia-danger-lightest-l: 95%;--lia-danger-lightest: hsl(var(--lia-danger-lightest-h), var(--lia-danger-lightest-s), var(--lia-danger-lightest-l)); }</style><title>Escalando Nodes e Pods no AKS | Microsoft Community Hub</title><meta name="robots" content="index,follow"/><meta name="description" content="Escalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade..."/><meta name="twitter:card" content="summary_large_image"/><meta property="og:title" content="Escalando Nodes e Pods no AKS | Microsoft Community Hub"/><meta property="og:description" content="Escalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade..."/><meta property="og:url" content="https://techcommunity.microsoft.com/blog/desenvolvedoresbr/escalando-nodes-e-pods-no-aks/4221166"/><meta property="og:type" content="article"/><meta property="article:modified_time" content="2024-11-23T08:20:49.372-08:00"/><meta property="og:image" content="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTRicnlvOA?revision=9"/><meta property="og:image:width" content="1024"/><meta property="og:image:height" content="1024"/><meta property="og:site_name" content="TECHCOMMUNITY.MICROSOFT.COM"/><link rel="canonical" href="https://techcommunity.microsoft.com/blog/desenvolvedoresbr/escalando-nodes-e-pods-no-aks/4221166"/><style type="text/css">:root:root { --lia-nav-bg-color: var(--lia-bs-white); --lia-nav-bg-opacity: 0.8; --lia-nav-pt: 15px; --lia-nav-pb: 15px; --lia-nav-border-bottom: 1px solid var(--lia-bs-border-color); --lia-nav-box-shadow: var(--lia-bs-box-shadow-sm); --lia-nav-brand-mr: 30px; --lia-nav-brand-mr-sm: 10px; --lia-nav-brand-logo-height: 30px; --lia-nav-link-gap: 10px; --lia-nav-link-justify-content: flex-start; --lia-nav-link-py: 5px; --lia-nav-link-px: 10px; --lia-nav-link-dropdown-py: 9px; --lia-nav-link-dropdown-px: var(--lia-nav-link-px); --lia-nav-link-color: var(--lia-bs-body-color); --lia-nav-link-hover-color: var(--lia-bs-body-color); --lia-nav-link-font-size: 14px; --lia-nav-link-font-style: NORMAL; --lia-nav-link-font-weight: 400; --lia-nav-link-text-transform: none; --lia-nav-link-letter-spacing: normal; --lia-nav-link-border-radius: var(--lia-bs-border-radius-sm); --lia-nav-link-bg-color: transparent; --lia-nav-link-bg-hover-color: transparent; --lia-nav-link-border: none; --lia-nav-link-border-hover: none; --lia-nav-link-box-shadow: none; --lia-nav-link-box-shadow-hover: none; --lia-nav-link-text-border-bottom: none; --lia-nav-link-text-border-bottom-hover: 2px solid var(--lia-bs-body-color); --lia-nav-dropdown-pt: 10px; --lia-nav-dropdown-pb: 15px; --lia-nav-dropdown-px: 10px; --lia-nav-dropdown-menu-offset: 2px; --lia-nav-dropdown-divider-mt: 10px; --lia-nav-dropdown-divider-mb: 10px; --lia-nav-dropdown-border-color: hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08); --lia-nav-controller-bg-hover-color: hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1); --lia-nav-controller-icon-color: var(--lia-bs-body-color); --lia-nav-controller-icon-hover-color: var(--lia-bs-body-color); --lia-nav-controller-icon-highlight: hsla(30, 100%, 50%); --lia-nav-controller-icon-highlight-text: var(--lia-yiq-dark); --lia-nav-controller-text-color: var(--lia-nav-controller-icon-color); --lia-nav-controller-text-hover-color: var(--lia-nav-controller-icon-hover-color); --lia-nav-controller-border-radius: var(--lia-border-radius-50); --lia-nav-hamburger-color: var(--lia-nav-controller-icon-color); --lia-nav-hamburger-hover-color: var(--lia-nav-controller-icon-color); --lia-nav-hamburger-bg-color: transparent; --lia-nav-hamburger-bg-hover-color: transparent; --lia-nav-hamburger-border: none; --lia-nav-hamburger-border-hover: none; --lia-nav-collapse-menu-ml: 20px; --lia-nav-collapse-menu-divider-bg: var(--lia-nav-link-color); --lia-nav-collapse-menu-divider-opacity: 0.16; }</style><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":0,"item":"https://techcommunity.microsoft.com","name":"Microsoft Community Hub"},{"@type":"ListItem","position":1,"item":"/category/communities","name":"Communities"},{"@type":"ListItem","position":2,"item":"/category/solutions","name":"Topics"},{"@type":"ListItem","position":3,"item":"/category/RegionalBlogs","name":"Regional Blogs"},{"@type":"ListItem","position":4,"item":"/category/RegionalBlogs/blog/DesenvolvedoresBR","name":"Desenvolvedores BR"}]}</script><style data-testid="CustomComponentContentCss" type="text/css">.custom_widget_Social_Sharing_social-share_c7xxz_1 { .custom_widget_Social_Sharing_sharing-options_c7xxz_2 { position: relative; margin: 0; padding: 0; line-height: 0.625rem; display: flex; justify-content: left; gap: 0.3125rem; list-style-type: none; li { text-align: left; a { min-width: 1.875rem; min-height: 1.875rem; display: block; padding: 0.0625rem; .custom_widget_Social_Sharing_social-share-linkedin_c7xxz_18 { img { background-color: rgb(0, 119, 181); } } .custom_widget_Social_Sharing_social-share-facebook_c7xxz_23 { img { background-color: rgb(59, 89, 152); } } .custom_widget_Social_Sharing_social-share-x_c7xxz_28 { img { background-color: rgb(0, 0, 0); } } .custom_widget_Social_Sharing_social-share-rss_c7xxz_33 { img { background-color: rgb(0, 0, 0); } } .custom_widget_Social_Sharing_social-share-reddit_c7xxz_38 { img { background-color: rgb(255, 69, 0); } } .custom_widget_Social_Sharing_social-share-email_c7xxz_43 { img { background-color: rgb(132, 132, 132); } } } a { img { height: 2rem; } } } } } </style><style data-testid="CustomComponentContentCss" type="text/css">.custom_widget_MicrosoftFooter_context-uhf_f95yq_1 { min-width: 17.5rem; font-size: 0.9375rem; box-sizing: border-box; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; & *, & *:before, & *:after { box-sizing: inherit; } a.custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12 { color: #616161; word-break: break-word; text-decoration: none; } &a:link, &a:focus, &a:hover, &a:active, &a:visited { text-decoration: none; color: inherit; } & div { font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif; } } .custom_widget_MicrosoftFooter_c-uhff_f95yq_12 { background: #f2f2f2; margin: -1.5625; width: auto; height: auto; } .custom_widget_MicrosoftFooter_c-uhff-nav_f95yq_35 { margin: 0 auto; max-width: calc(100rem + 10%); padding: 0 5%; box-sizing: inherit; &:before, &:after { content: ' '; display: table; clear: left; } @media only screen and (max-width: 1083px) { padding-left: 0.75rem; } .custom_widget_MicrosoftFooter_c-heading-4_f95yq_49 { color: #616161; word-break: break-word; font-size: 0.9375rem; line-height: 1.25rem; padding: 2.25rem 0 0.25rem; font-weight: 600; } .custom_widget_MicrosoftFooter_c-uhff-nav-row_f95yq_57 { .custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58 { display: block; float: left; min-height: 0.0625rem; vertical-align: text-top; padding: 0 0.75rem; width: 100%; zoom: 1; &:first-child { padding-left: 0; @media only screen and (max-width: 1083px) { padding-left: 0.75rem; } } @media only screen and (min-width: 540px) and (max-width: 1082px) { width: 33.33333%; } @media only screen and (min-width: 1083px) { width: 16.6666666667%; } ul.custom_widget_MicrosoftFooter_c-list_f95yq_78.custom_widget_MicrosoftFooter_f-bare_f95yq_78 { font-size: 0.6875rem; line-height: 1rem; margin-top: 0; margin-bottom: 0; padding-left: 0; list-style-type: none; li { word-break: break-word; padding: 0.5rem 0; margin: 0; } } } } } .custom_widget_MicrosoftFooter_c-uhff-base_f95yq_94 { background: #f2f2f2; margin: 0 auto; max-width: calc(100rem + 10%); padding: 1.875rem 5% 1rem; &:before, &:after { content: ' '; display: table; } &:after { clear: both; } a.custom_widget_MicrosoftFooter_c-uhff-ccpa_f95yq_107 { font-size: 0.6875rem; line-height: 1rem; float: left; margin: 0.1875rem 0; } a.custom_widget_MicrosoftFooter_c-uhff-ccpa_f95yq_107:hover { text-decoration: underline; } ul.custom_widget_MicrosoftFooter_c-list_f95yq_78 { font-size: 0.6875rem; line-height: 1rem; float: right; margin: 0.1875rem 0; color: #616161; li { padding: 0 1.5rem 0.25rem 0; display: inline-block; } } .custom_widget_MicrosoftFooter_c-list_f95yq_78.custom_widget_MicrosoftFooter_f-bare_f95yq_78 { padding-left: 0; list-style-type: none; } @media only screen and (max-width: 1083px) { display: flex; flex-wrap: wrap; padding: 1.875rem 1.5rem 1rem; } } </style><script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","datePublished":"11/23/2024, 4:21:52 PM","description":"\nEscalando Nodes e Pods no AKS\n&nbsp;Escalar nodes e escalar pods são dois conceitos distintos no contexto do AKS (Azure Kubernetes Service).\n\nEscalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade de computação, memória e armazenamento ao seu cluster, o que ajuda a lidar com picos de tráfego ou carga de trabalho.\nPor outro lado, escalar pods refere-se ao aumento ou diminuição da quantidade de instâncias de um pod específico em execução no cluster do AKS. Isso auxilia no gerenciamento de picos de tráfego ou demanda por recursos específicos, como CPU ou memória.\nPara escalar manualmente os nodes no AKS, você pode utilizar o comando ‘az aks scale’. Por exemplo, para escalar o cluster para 3 nodes, execute o seguinte comando:\naz aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3\n\n&nbsp;\n\nOs dimensionadores automáticos de cluster e de pod horizontal podem operar em conjunto e geralmente são implantados em um cluster. Quando combinados, o dimensionador automático de pod horizontal foca na execução do número de pods necessário para atender à demanda do aplicativo. Já o dimensionador automático de cluster concentra-se na execução do número de nós necessários para dar suporte aos pods agendados.\n&nbsp;\n\nO dimensionamento manual é desabilitado quando o dimensionador automático de cluster é usado. Deixe o dimensionador automático de cluster determinar o número de nós necessários. Caso deseje dimensionar o cluster manualmente,&nbsp;desabilite o dimensionador automático de cluster.\n\n\nHabilitar o dimensionador automático em um cluster existente\naz aks update \\ --resource-group myResourceGroup \\ --name myAKSCluster \\ --enable-cluster-autoscaler \\ --min-count 1 \\ --max-count 3\n&nbsp;\n\nDesabilitar o dimensionador automático de cluster em um cluster\n\n\n&nbsp;\naz aks update \\ --resource-group myResourceGroup \\ --name myAKSCluster \\ --disable-cluster-autoscaler\n\n\nMostrar configuração do profile padrão\naz aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles\n\n&nbsp;\n\nVocê pode configurar detalhes mais granulares do autoscaler de cluster alterando os valores padrão no perfil.\n&nbsp;\n\nEscalar pods (HPA)\n&nbsp;\n\nPara escalar os pods no AKS, você pode usar a horizontal pod autoscaler (HPA) do Kubernetes. A HPA ajusta automaticamente o número de pods com base na utilização de recursos. Você pode configurar a HPA usando um arquivo YAML, que especifica a regra para aumentar ou diminuir o número de pods. Por exemplo, você pode definir uma regra para aumentar o número de pods em 1 sempre que a utilização de CPU de um pod ultrapassar 80%. Aqui está um exemplo de arquivo YAML para configurar a HPA:\n&nbsp;\napiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: my-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-deployment minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 80\n&nbsp;\n&nbsp;\n\nEsse arquivo YAML especifica que a HPA deve ajustar o número de pods para um deployment chamado&nbsp;my-deployment, aumentando ou diminuindo a quantidade de pods para manter a utilização média de CPU em 80%. Além disso, o número mínimo de pods é definido como 1 e o número máximo como 10.\n\nMas quando eu devo usar o KEDA no lugar do HPA ?\n&nbsp;\n\nO KEDA (Kubernetes-based Event-Driven Autoscaling) é uma ferramenta de escala automática para cargas de trabalho de eventos baseada em Kubernetes. O KEDA estende o recurso de escala automática do Kubernetes e permite a escala com base em eventos, em vez de apenas na utilização de recursos.\nEmbora o HPA do Kubernetes seja capaz de escalar horizontalmente com base na utilização de recursos, ele não é projetado para escalar automaticamente as cargas de trabalho baseadas em eventos. O KEDA, por outro lado, é projetado especificamente para escalar cargas de trabalho baseadas em eventos, como filas de mensagens, stream de eventos e cronjobs.\nSe sua carga de trabalho envolve eventos que acionam a criação de novas instâncias de pods ou ajustes no número de réplicas em tempo real, o KEDA pode ser uma opção melhor do que o HPA do Kubernetes quando o gatilho para a escala é uma fila por exemplo.\n\nPara configurar o HPA (Horizontal Pod Autoscaler) no AKS\n&nbsp;\n\nPara configurar o HPA (Horizontal Pod Autoscaler) no AKS (Azure Kubernetes Service) do zero, você pode seguir os seguintes passos:\n\nCertifique-se de ter uma conta do Azure e um cluster do AKS criados.\nInstale o kubectl em sua máquina local e configure-o para acessar seu cluster do AKS.\nCrie um deployment no cluster do AKS:\nkubectl create deployment &lt;deployment-name&gt; --image=&lt;container-image&gt;\nVerifique se o deployment foi criado corretamente:\nkubectl get deployments\nCrie um serviço para expor o deployment:\nkubectl expose deployment &lt;deployment-name&gt; --port=&lt;port-number&gt; --type=LoadBalancer\nVerifique se o serviço foi criado corretamente:\nkubectl get services\nCrie um HPA para o deployment:\nkubectl autoscale deployment &lt;deployment-name&gt; --cpu-percent=&lt;cpu-percent&gt; --min=&lt;min-replicas&gt; --max=&lt;max-replicas&gt;\nSubstitua&nbsp;&lt;cpu-percent&gt;,&nbsp;&lt;min-replicas&gt;&nbsp;e&nbsp;&lt;max-replicas&gt;&nbsp;pelos valores desejados.\nVerifique se o HPA foi criado corretamente:\nkubectl get hpa\n\n\nDemo aplicação&nbsp;aspnet\n&nbsp;\n\nVamos utilizar a imagem de uma aplicação dotnet simples. O objetivo é testar diferentes configurações de HPA para os cenários de aumento de escala (Scale Up) e redução de escala (Scale Down).\n&nbsp;\nPrimeiro passo vamos connecter nos cluster\naz aks get-credentials --resource-group AKS_BLOG --name ask_poc_hpa\n&nbsp;\n\nVamos criar uma Namespace\nkubectl create namespace aspnet\n&nbsp;\n&nbsp;\n\nCriando um manifesto de deploy\nkubectl create deploy aspnetapp --image=mcr.microsoft.com/dotnet/samples:aspnetapp --dry-run=client -o yaml &gt; samples-aspnetapp-deploy.yaml\n&nbsp;\n\no seguinte arquivo será gerado\n\n&nbsp;\n\napiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: aspnetapp resources: {} status: {}\nRodar o deploy\nkubectl apply -f samples-aspnetapp-deploy.yaml -n aspnet\n&nbsp;\n\nCriando um manifesto de serviço\nkubectl expose -f samples-aspnetapp-deploy.yaml --name=sampleapisvc --type=LoadBalancer --port=80 --target-port=8080 --dry-run=client -o yaml &gt; samples-aspnetapp-svc.yaml\n&nbsp;\n\no seguinte arquivo será gerado\napiVersion: v1 kind: Service metadata: creationTimestamp: null labels: app: aspnetapp name: sampleapisvc spec: ports: - port: 80 protocol: TCP targetPort: 8080 selector: app: aspnetapp type: LoadBalancer status: loadBalancer: {}\n&nbsp;\n\n&nbsp;\n\nRodar Servico\nkubectl apply -f samples-aspnetapp-svc.yaml -n aspnet\n&nbsp;\n\nCriando um manifesto de hpa\nkubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml &gt; samples-aspnetapp-hpa-01.yaml\n&nbsp;\n\no seguinte arquivo será gerado\napiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0\n&nbsp;\n\nrodar o hpa\nkubectl apply -f samples-aspnetapp-hpa-01.yaml -n aspnet\n&nbsp;\n\n\nUsando os comandos abaixo pode verificar o estado dos objetos\n&nbsp;\n\nkubectl top pods # Visualiza o consumo de CPU e memória dos pods kubectl get hpa # Mostra a configuração corrente do HPA com os valores das métricas kubectl describe hpa &lt;name&gt; # Visualiza as configurações do HPA, assim como eventos de aumento e diminuição de pods\n&nbsp;\n&nbsp;\n\nDetalhes da configuração HPA\n\nUm dos erros mais comuns ao configurar HPA\n&nbsp;\n\nTudo ocorreu conforme esperado. No entanto, ao executar o comando&nbsp;kubectl get hpa, recebi a informação&nbsp;&lt;unknown&gt;/60%&nbsp;no campo TARGETS. Comecei verificando se o metrics-server está em execução no seu cluster do AKS utilizando o comando&nbsp;kubectl.\n&nbsp;\nkubectl get pods -n kube-system\n&nbsp;\n\nVerificando os detalhes do HPA\nkubectl describe hpa &lt;nome&gt;\n&nbsp;\n&nbsp;\n\n\nThe HPA was unable to compute the replica count: failed to get cpu utilization: missing request for cpu\n\nE por fim precisei editar com os limites do manifesto de deploy segue referência&nbsp;https://stacksimplify.com/azure-aks/azure-kubernetes-service-requests-and-limits/\n&nbsp;\nresources: limits: cpu: "500m" memory: "512Mi" requests: cpu: "100m" memory: "256Mi"\n&nbsp;\n\nOnde:\n\né o valor da CPU solicitado pelo deployment. Por exemplo, “100m” representa 100 milicores (ou 0,1 CPU).\né o valor máximo da CPU que o deployment pode usar. Por exemplo, “500m” representa 500 milicores (ou 0,5 CPU).\n\nfinal\napiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: "500m" memory: "512Mi" requests: cpu: "100m" memory: "256Mi" status: {}\n&nbsp;\n\n&nbsp;\n\napós atualizar o deploy rodei\nkubectl get hpa -n aspnet\n&nbsp;\nkubectl get hpa -n aspnet\n&nbsp;\n\n\nVemos os percentuais de CPU, o atual e o gatilho do algoritmo HPA, acima de 60 % aumenta e abaixo disso diminui respeitando o parâmetro stabilizationWindowSeconds para evitar as flutuações\n\nConsiderações sobre recursos disponíveis para pods\n&nbsp;\n\nEm uma máquina virtual de 8 GB e 2 vCPU, você pode esperar:\n\n100 MB de memória e 0,1 vCPU a serem reservados para o sistema operacional.\n1,8 GB de memória e 0,07 vCPU a serem reservados para o Kubelet.\n100 MB de memória para o limite de despejo.\n\nOs ~6 GB restantes de memória e 1,83 vCPU podem ser usados pelos pods.\n\nO Kubelet é um agente que executa em cada nó de um cluster do Kubernetes. Ele é responsável por garantir que os containers estejam em execução no nó e em conformidade com o estado desejado declarado no manifesto do Kubernetes.\n&nbsp;\n\n\nAdicionando o fortio para teste de carga\n&nbsp;\n\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/sample-client/fortio-deploy.yaml\n&nbsp;\n\nFortio é uma ferramenta de teste de carga inicialmente parte do Istio e depois se tornou independente. Executa consultas por segundo, registra tempo de execução.É uma biblioteca Go rápida e pequena, com uma imagem Docker de 4 MB.\nexecutando uma chamada de teste usando curl\n&nbsp;\nkubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -n httpbin -- /usr/bin/fortio curl -quiet http://localhost:8080\n&nbsp;\n\nUsando o Fortio, este comando, por exemplo, executa 20 threads, totalizando 20 mil requisições.\nkubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -- /usr/bin/fortio load -c 20 -qps 0 -n 20000 -loglevel Warning http://52.226.198.73/\n&nbsp;\n\n\nQuais as opções de configuração do HPA\n&nbsp;\n\nExemplo samples-aspnetapp-hpa-01.yaml&nbsp;\n&nbsp;\nUtilizando targetCPUUtilizationPercentage\n&nbsp;\nkubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml &gt; samples-aspnetapp-hpa-01.yaml\n&nbsp;\n\nmanifesto gerado pelo kubctl\n&nbsp;\napiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0\n&nbsp;\n&nbsp;\nkubectl get hpa -n aspnet\n&nbsp;\n\n\nExemplo samples-aspnetapp-hpa-02.yaml&nbsp;\n&nbsp;\nUtilizando um comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.\n&nbsp;\napiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 10 behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30\n&nbsp;\n&nbsp;\n\n\nstabilizationWindowSeconds&nbsp;A janela de estabilização é usada para restringir a&nbsp;oscilação&nbsp;da contagem de réplicas quando as métricas usadas para dimensionamento continuam flutuand\nperiodSecondsindica o período de tempo no passado durante o qual a política deve ser válida\nA política&nbsp;(Porcentagem)&nbsp;permite que no máximo 50% das réplicas atuais sejam reduzidas em 30 segundos.&nbsp;saiba mais\nA seleção da política pode ser alterada especificando o&nbsp;selectPolicy\n\nkubectl get hpa -n aspnet\n&nbsp;\nExemplo samples-aspnetapp-hpa-03.yaml&nbsp;\n&nbsp;\nUtilizando um comportamento que permite um controle mais refinado dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada no consumo médio em milissegundos como gatilho para iniciar os movimentos.\n&nbsp;\napiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: AverageValue averageValue: 10m behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30\n&nbsp;\n&nbsp;\n&nbsp;\nkubectl get hpa -n aspnet\n&nbsp;\n\n\nExemplo samples-aspnetapp-hpa-04.yml&nbsp;\n&nbsp;\nUtilizando o comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU e memória baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.\n&nbsp;\napiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 6 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\n&nbsp;\n&nbsp;\nkubectl get hpa -n aspnet\n&nbsp;\n\n\nVou fazer um teste com a configuração 4, para simular a carga vou usar o fortio e analisar o comportamento de up e down.\n&nbsp;\nO teste começou as 14:22\n&nbsp;\nkubectl get hpa -n aspnet\n&nbsp;\nentão usei o parâmetro -w para observar as mudanças de replicas\nkubectl get hpa -n aspnet -w\n&nbsp;\n\nAs 14:25 cheguei em 6 réplicas, podemos observar que os pods são acionados um por um conforme o comportamento definido.\nkubectl get hpa -n aspnet -w\n&nbsp;\nAs 14:35 baixou para 2 pods\nkubectl get hpa -n aspnet -w\n&nbsp;\ne as 14:38 chegamos em 1\nkubectl get hpa -n aspnet -w\n&nbsp;\nO Comportamento de Scale Down não aconteceu exatamente como eu pensei, ele não baixou 100% no primeiro ciclo de verificação.\n\nTestes com 30 pods\n\nPara finalizar fiz um teste com mais pods e coloquei os dados aqui para análise, mudei o deploy para o seguinte:\napiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: "100m" memory: "256Mi" requests: cpu: "30m" memory: "128Mi" status: {}\n&nbsp;\n\n&nbsp;\n\nAlterei o HPA para\napiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\n&nbsp;\n&nbsp;\n\ne comecei a monitorar\n\nNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE \naspnetapp Deployment/aspnetapp &lt;unknown&gt;/80%, 21%/100% 1 30 1 45m \naspnetapp Deployment/aspnetapp 13%/80%, 21%/100% 1 30 1 45m \naspnetapp Deployment/aspnetapp 3%/80%, 21%/100% 1 30 1 46m \naspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 1 47m \naspnetapp Deployment/aspnetapp 256%/80%, 51%/100% 1 30 2 48m \naspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 2 48m \naspnetapp Deployment/aspnetapp 256%/80%, 54%/100% 1 30 3 48m \naspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 3 48m \naspnetapp Deployment/aspnetapp 330%/80%, 31%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 50m \naspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 4 50m \naspnetapp Deployment/aspnetapp 82%/80%, 45%/100% 1 30 5 51m \naspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 5 51m \naspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m \naspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m \naspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 7 52m \naspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 7 52m \naspnetapp Deployment/aspnetapp 101%/80%, 36%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 10 54m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 10 54m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 12 55m \naspnetapp Deployment/aspnetapp 146%/80%, 43%/100% 1 30 12 55m \naspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m \naspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m \naspnetapp Deployment/aspnetapp 109%/80%, 42%/100% 1 30 14 56m \naspnetapp Deployment/aspnetapp 113%/80%, 43%/100% 1 30 14 56m \naspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 32%/80%, 42%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 94%/80%, 45%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 17 59m \naspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 17 60m \naspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 18 60m \naspnetapp Deployment/aspnetapp 138%/80%, 43%/100% 1 30 18 60m \naspnetapp Deployment/aspnetapp 52%/80%, 43%/100% 1 30 19 60m \naspnetapp Deployment/aspnetapp 66%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 52%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 122%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 61m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 62m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 21 62m ** \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 65m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m \naspnetapp Deployment/aspnetapp 54%/80%, 42%/100% 1 30 9 67m ** \naspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 67m \naspnetapp Deployment/aspnetapp 54%/80%, 44%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 81%/80%, 45%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 217%/80%, 45%/100% 1 30 10 69m \naspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 10 69m \naspnetapp Deployment/aspnetapp 217%/80%, 40%/100% 1 30 11 69m \naspnetapp Deployment/aspnetapp 174%/80%, 40%/100% 1 30 11 69m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 13 70m \naspnetapp Deployment/aspnetapp 143%/80%, 42%/100% 1 30 13 70m \naspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m \naspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m \naspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 71m \naspnetapp Deployment/aspnetapp 96%/80%, 40%/100% 1 30 15 71m \naspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 72m \naspnetapp Deployment/aspnetapp 96%/80%, 39%/100% 1 30 16 72m ** \naspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 72m \naspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 73m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 73m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 76m \naspnetapp Deployment/aspnetapp 3%/80%, 38%/100% 1 30 16 77m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 77m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 77m ** \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 79m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 80m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 82m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 84m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 84m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 5%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 87m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 5%/80%, 33%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 89m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 92m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 92m \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 1 93m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 94m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m\n\n&nbsp;\n\nPodemos observar que, ao atingir 21 réplicas por volta dos 62 minutos, houve uma diminuição nas cargas. Logo após a janela de estabilização, que durou cerca de 5 minutos, o número de réplicas diminui para 9 por volta dos 67 minutos. Fiz uma segunda simulação de carga e as réplicas aumentam para 16 por volta dos 72 minutos e, aproximadamente 5 minutos depois, ou seja, aos 77 minutos, elas diminuem para 7.\n\nsamples-aspnetapp-hpa-05.yaml\n\nMudei a politicas de Scale Down e Scale up para pods, baixando um pod de cada vez\napiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\n&nbsp;\n\ne dessa forma foi deterministico um por um\n\nNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE \naspnetapp Deployment/aspnetapp 30%/80%, 61%/100% 1 30 1 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 1 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 330%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 114%/80%, 30%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 6%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 5%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 63%/100% 1 30 1 20h\n\n&nbsp;\n\nParece que o problema está associado à tentativa de encerrar pods que ainda estão em uso, resultando na baixa de apenas uma fração da quantidade especificada na política. O único cenário em que pude observar um determinismo em relação à quantidade de pods baixados foi no exemplo em que defini o comportamento de redução para apenas um pod por vez.\n\nReferências\n\n\nDimensionar automaticamente um cluster para atender às demandas de aplicativo no AKS (Serviço de Kubernetes do Azure)\nDimensionar a contagem de nós em um cluster do AKS (Serviço de Kubernetes do Azure)\nA contagem de nós atual não está no intervalo mínimo e mínimo do dimensionador automático — Azure | Microsoft Learn\nHorizontal Pod Autoscaling | Kubernetes\nTutorial do Kubernetes no Azure — Dimensionar Aplicativo — Azure Kubernetes Service | Microsoft Learn\nArchitecting Kubernetes clusters — choosing the best autoscaling strategy (learnk8s.io)\nKubernetes instance calculator (learnk8s.io)\nConceitos — dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn\nTutorial do Kubernetes no Azure — Dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn\nHorizontal Pod Autoscaling | Kubernetes\n","mainEntityOfPage":{"@type":"WebPage","@id":"https://techcommunity.microsoft.com/blog/desenvolvedoresbr/escalando-nodes-e-pods-no-aks/4221166"},"headline":"Escalando Nodes e Pods no AKS","image":["https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTRicnlvOA?revision=9"],"dateModified":"11/23/2024, 4:20:49 PM","author":{"@type":"Person","name":"wdossantos","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMTcxNjczLTMyNTM2MGkwNjkyMDE1OTQ0RkQ5MTM0"},"publisher":{"@type":"Organization","name":"TECHCOMMUNITY.MICROSOFT.COM"}}</script><meta name="next-head-count" content="26"/><noscript id="__next_css__DO_NOT_USE__"></noscript><script id="prism-bootstrap" data-nscript="beforeInteractive" crossorigin="anonymous">window.Prism = window.Prism || {};Prism.manual = true;</script><link rel="preload" href="/_next/static/css/70f9debde82c7430.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/70f9debde82c7430.css" crossorigin="anonymous" data-n-g=""/><link rel="preload" href="/_next/static/css/51354f5913c71cf4.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/51354f5913c71cf4.css" crossorigin="anonymous" data-n-p=""/><link rel="preload" href="/_next/static/css/695513f4460cf9de.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/695513f4460cf9de.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/27354a62d6df58b7.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/27354a62d6df58b7.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/6b6feb98a73e4b36.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/6b6feb98a73e4b36.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/b3570409e4961851.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/b3570409e4961851.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/862b9c0d1ee38b75.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/862b9c0d1ee38b75.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/96e83c4412cdcd6d.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/96e83c4412cdcd6d.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/0aea06143d4d2261.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/0aea06143d4d2261.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/a87e85723550ff6c.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/a87e85723550ff6c.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/da1b9bc00ca1b132.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/da1b9bc00ca1b132.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/2cb7930a61479b70.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/2cb7930a61479b70.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/0da1a563af23ca7c.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/0da1a563af23ca7c.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/0ddbd47ca7e61fdd.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/0ddbd47ca7e61fdd.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/75c3051a6282c4c8.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/75c3051a6282c4c8.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/d9008e6eff4bb31c.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/d9008e6eff4bb31c.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/c8c2af71f10c8f48.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/c8c2af71f10c8f48.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/301c38302d8be06d.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/301c38302d8be06d.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/52b0564d2e1c00bd.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/52b0564d2e1c00bd.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/8cc8a18b0063d113.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/8cc8a18b0063d113.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/2fa8acea5ddb7a0d.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/2fa8acea5ddb7a0d.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/2816a50928585b4e.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/2816a50928585b4e.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/01bbadcc1be827c5.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/01bbadcc1be827c5.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/acce1e159f006524.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/acce1e159f006524.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/eaa1e83705b8a1b9.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/eaa1e83705b8a1b9.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/d9e0f6ee4c8b30bc.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/d9e0f6ee4c8b30bc.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/27d09bf2b6a2209b.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/27d09bf2b6a2209b.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/8e9fe845357bfc67.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/8e9fe845357bfc67.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/741822ca69eb63d7.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/741822ca69eb63d7.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/e50f24e20f7bc6ce.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/e50f24e20f7bc6ce.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/64453358afb21e22.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/64453358afb21e22.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/d251c99cf38a4187.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/d251c99cf38a4187.css" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/c94ef98af7effe01.css" as="style" crossorigin="anonymous"/><link rel="stylesheet" href="/_next/static/css/c94ef98af7effe01.css" crossorigin="anonymous"/><noscript data-n-css=""></noscript><script defer="" crossorigin="anonymous" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script id="cookie_consent" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/pagescripts/1729284608000/cookie_consent.js?page.id=BlogMessagePage&entity.id=board%3Adesenvolvedoresbr&entity.id=message%3A4221166" defer="" data-nscript="beforeInteractive" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/77463-2acfddc67ff4590a.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/84770-15660bbd05b5edfa.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/97333-fce065001bc1b0c7.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/34062-58f93d648b5d2fe8.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/70193.0446f1b58a8be886.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/83256.5925a1bd3f2ed59e.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/13490.ba9b24b6fc307a1b.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/86460.ba3f744c64cbd793.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/44786.618e88b46021e53c.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/25232.332c8cc01832b7d7.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/43158.727e0ab7008cdc0a.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/40423.6e764a1e65bf4776.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/32773.82bc267815d4f4fb.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/97924.91cfb20317d28b30.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/9407.f7fd6b5f30450438.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/84281.7dbaa6cf0fda7daa.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/37310.e068cf4692ea059c.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/23549.306ead2a29cf2310.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/54340.964a0582cb40e965.js" crossorigin="anonymous"></script><script defer="" src="/_next/static/chunks/91653.02fb1491c9107943.js" crossorigin="anonymous"></script><script src="/_next/static/chunks/webpack-a8859695fbd039ab.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/main-699e4d9ec4f3530c.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/pages/_app-61f6e182962a7a6e.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/15089-e29bf7f37c7b7582.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/56954-a661bff96978ced0.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/37553-349b571b1837d9f5.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/67527-2f9f9c5d94b90716.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/15543-fe4cde6618117bea.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/54341-40537c8a8ab6a93e.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/83729-97dd3581e8d24305.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/23842-414a45ee6e8c5f95.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/85258-3c88938f5903bdfa.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/37330-c326830a1058a439.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/76820-63044a5ae14ef4d9.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/56930-58cd27f5a68847f9.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/97524-1a872e9fae5f72bc.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/51325-f799cb915ede1d5f.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/42098-d0f5af2a77df3416.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/92236-da8b93af03bac1ec.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/36752-d4ea73eca4898eba.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/2873-0a7ce710344b0df9.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/53272-c87fd99570e7af79.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/43847-eb5bebd3c9cb2d5a.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/18182-0e014c201338b900.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/23446-c0f0466a2ad73ed4.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/55411-0dffaf1f7970aab7.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/39667-c3917cde87fb5114.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/74783-96061278f4e4b609.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/32876-a0595b92f1bea0f8.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/chunks/pages/blogs/BlogMessagePage/BlogMessagePage-9851870b31e940d2.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/PueESxikv_D6pRYmXbJsM/_buildManifest.js" defer="" crossorigin="anonymous"></script><script src="/_next/static/PueESxikv_D6pRYmXbJsM/_ssgManifest.js" defer="" crossorigin="anonymous"></script></head><body><div id="__next"><header data-testid="QuiltWrapperSection"><div aria-hidden="true"></div><nav class="Navbar_lia-nav__x3UtG Navbar_lia-nav-fixed__mp9zl" style="--lia-d-nav-bg-combined:hsla(0, 0%, 100%, 0.8)"><div data-testid="ThemedContainer" class="Navbar_lia-container__PneN7 ThemedContainer_lia-fixed-container__MPYgN ThemedContainer_lia-fixed-gutters__1PeHV styles_container__6wTQq"><div class="NavbarHamburgerDropdown_lia-hamburger__wMSGy styles_dropdown__gtmlA"><button data-testid="Button" aria-haspopup="true" aria-expanded="false" aria-label="Side Menu" id=":Reqq6lbem:" type="button" class="styles_lia-g-unstyled-btn__Sglpm NavbarHamburgerDropdown_lia-hamburger-toggle__A99vU styles_dropdown-toggle__lyIUd styles_btn__1HFm0"><span class="HamburgerIcon_lia-hamburger__Vl1W7"><span class="HamburgerIcon_lia-burger-part__gpOaQ HamburgerIcon_lia-lettuce__CHkD6 NavbarHamburgerDropdown_lia-hamburger-icon__CaJzZ"></span><span class="HamburgerIcon_lia-burger-part__gpOaQ HamburgerIcon_lia-tomato__gEm9r NavbarHamburgerDropdown_lia-hamburger-icon__CaJzZ"></span><span class="HamburgerIcon_lia-burger-part__gpOaQ HamburgerIcon_lia-cheese__4316P NavbarHamburgerDropdown_lia-hamburger-icon__CaJzZ"></span></span></button></div><div class="Navbar_lia-brand-wrap__kMjMv"><a class="Navbar_lia-brand-logo___j4kl" href="/"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/themes/customTheme1/favicon-1730836271365.png?time=1730836274203" alt="Brand Logo" class="BrandLogo_lia-logo__9HhbP"/></a><a href="#main-content" class="Navbar_lia-skip-content__x8IQ0">Skip to content</a></div><section class="NavbarTextLinks_lia-main-links-container__QOLn4"><div class="NavbarTextLinks_lia-main-links__XTYIO"><a tabindex="0" href="/" class="styles_lia-g-navbar-link___5V8S" data-testid="NavbarLink.gxcuf89792" target="_self"><span class="styles_lia-g-navbar-link-text__hNCPc">Tech Community</span></a><a tabindex="0" href="/Directory" class="styles_lia-g-navbar-link___5V8S" data-testid="NavbarLink.external_link" target="_self"><span class="styles_lia-g-navbar-link-text__hNCPc">Community Hubs</span></a><div data-menu-open="false" class="NavbarDropdown_lia-dropdown__UxoG7 styles_dropdown__gtmlA"><div aria-haspopup="true" aria-label="Press the down arrow to open the menu" data-testid="NavbarDropdown.Toggle" tabindex="-1" id=":Rquqq6lbem:"><a tabindex="0" href="/" class="styles_lia-g-navbar-link___5V8S NavbarDropdownToggle_lia-link-extender__HG9yN NavbarAnchor_lia-disabled__IqfY3" data-testid="NavbarLink.communities" target="_blank"><span class="styles_lia-g-navbar-link-text__hNCPc">Products<svg class="styles_lia-g-navbar-dropdown-icon__MBB_c Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-body-color);--lia-local-icon-color-h:var(--lia-bs-body-color-h);--lia-local-icon-color-s:var(--lia-bs-body-color-s);--lia-local-icon-color-l:var(--lia-bs-body-color-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-down.svg#chevron-down"></use></svg></span></a></div></div><div data-menu-open="false" class="NavbarDropdown_lia-dropdown__UxoG7 styles_dropdown__gtmlA"><div aria-haspopup="true" aria-label="Press the down arrow to open the menu" data-testid="NavbarDropdown.Toggle" tabindex="-1" id=":R12uqq6lbem:"><a tabindex="0" href="/" class="styles_lia-g-navbar-link___5V8S NavbarDropdownToggle_lia-link-extender__HG9yN NavbarAnchor_lia-disabled__IqfY3" data-testid="NavbarLink.communities_1" target="_self"><span class="styles_lia-g-navbar-link-text__hNCPc">Topics<svg class="styles_lia-g-navbar-dropdown-icon__MBB_c Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-body-color);--lia-local-icon-color-h:var(--lia-bs-body-color-h);--lia-local-icon-color-s:var(--lia-bs-body-color-s);--lia-local-icon-color-l:var(--lia-bs-body-color-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-down.svg#chevron-down"></use></svg></span></a></div></div><a tabindex="0" href="/Blogs" class="styles_lia-g-navbar-link___5V8S" data-testid="NavbarLink.external" target="_self"><span class="styles_lia-g-navbar-link-text__hNCPc">Blogs</span></a><a tabindex="0" href="/Events" class="styles_lia-g-navbar-link___5V8S" data-testid="NavbarLink.external_1" target="_self"><span class="styles_lia-g-navbar-link-text__hNCPc">Events</span></a><div data-menu-open="false" class="NavbarDropdown_lia-dropdown__UxoG7 styles_dropdown__gtmlA"><div aria-haspopup="true" aria-label="Press the down arrow to open the menu" data-testid="NavbarDropdown.Toggle" tabindex="-1" id=":R1quqq6lbem:"><a tabindex="0" href="/category/MicrosoftLearn" class="styles_lia-g-navbar-link___5V8S NavbarDropdownToggle_lia-link-extender__HG9yN NavbarAnchor_lia-disabled__IqfY3" data-testid="NavbarLink.microsoft_learn" target="_self"><span class="styles_lia-g-navbar-link-text__hNCPc">Microsoft Learn<svg class="styles_lia-g-navbar-dropdown-icon__MBB_c Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-body-color);--lia-local-icon-color-h:var(--lia-bs-body-color-h);--lia-local-icon-color-s:var(--lia-bs-body-color-s);--lia-local-icon-color-l:var(--lia-bs-body-color-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-down.svg#chevron-down"></use></svg></span></a></div></div><a tabindex="0" href="/category/Community-Info-Center" class="styles_lia-g-navbar-link___5V8S" data-testid="NavbarLink.community_info_center" target="_self"><span class="styles_lia-g-navbar-link-text__hNCPc">Lounge</span></a></div><div class="NavbarTextLinks_lia-more__Lo2H5"></div></section><section class="Navbar_lia-section__0E_DT Navbar_lia-controls__i63Rp"><a data-testid="AuthenticationLink.registration" class="Navbar_lia-controller-text-link__1JNsW styles_lia-g-navbar-link___5V8S" href="/t5/s/gxcuf89792/auth/oidcss/sso_login_redirect/provider/default?referer=https%3A%2F%2Ftechcommunity.microsoft.com%2Fblog%2Fdesenvolvedoresbr%2Fescalando-nodes-e-pods-no-aks%2F4221166">Register</a><a data-testid="AuthenticationLink.login" class="Navbar_lia-controller-text-link__1JNsW styles_lia-g-navbar-link___5V8S" href="/t5/s/gxcuf89792/auth/oidcss/sso_login_redirect/provider/default?referer=https%3A%2F%2Ftechcommunity.microsoft.com%2Fblog%2Fdesenvolvedoresbr%2Fescalando-nodes-e-pods-no-aks%2F4221166">Sign In</a></section></div></nav><div class="Navbar_lia-nav-spacer__e1b2y" aria-hidden="true"></div><div class="Breadcrumb_lia-breadcrumb-container__qzYKB"><div style="background-color:transparent" class="styles_border-bottom__rm8pu"><nav aria-label="Breadcrumbs" class="Breadcrumb_lia-nav__ilWY3 Breadcrumb_lia-breadcrumb-container-content__95TUn" data-testid="Breadcrumb"><div data-testid="ThemedContainer" style="--lia-breadcrumb-link-color:var(--lia-bs-gray-700);--lia-breadcrumb-divider-opacity:0.5;--lia-breadcrumb-link-highlight-color:var(--lia-bs-primary)" class="Breadcrumb_lia-nav__ilWY3 ThemedContainer_lia-fixed-container__MPYgN ThemedContainer_lia-fixed-gutters__1PeHV styles_container__6wTQq"><ol class="Breadcrumb_lia-crumb-list__Xb5Aw"><li class="Breadcrumb_lia-crumb-list-item__iXBAq"><a data-testid="nodeLink" target="_self" class="Breadcrumb_lia-crumb-item__CSmrj" aria-label="Place Microsoft Community Hub" href="/">Microsoft Community Hub</a></li><li class="Breadcrumb_lia-crumb-divider__Fy21x" aria-hidden="true"><svg class="Breadcrumb_lia-crumb-icon__ZfovN styles_lia-g-icon-size-12__fO_66 Icon_lia-size-12__l8N3M Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-gray-500);--lia-local-icon-color-h:var(--lia-bs-gray-500-h);--lia-local-icon-color-s:var(--lia-bs-gray-500-s);--lia-local-icon-color-l:var(--lia-bs-gray-500-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-right.svg#chevron-right"></use></svg></li><li class="Breadcrumb_lia-crumb-list-item__iXBAq"><div class="styles_dropdown__gtmlA"><button data-testid="Button" aria-haspopup="true" aria-expanded="false" aria-label="Additional parent page navigation" type="button" class="Breadcrumb_lia-dropdown-toggle__csMOA styles_dropdown-toggle__lyIUd styles_btn__1HFm0"><svg class="Breadcrumb_lia-ellipsis-icon__ulzm3 styles_lia-g-icon-size-12__fO_66 Icon_lia-size-12__l8N3M Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-gray-700);--lia-local-icon-color-h:var(--lia-bs-gray-700-h);--lia-local-icon-color-s:var(--lia-bs-gray-700-s);--lia-local-icon-color-l:var(--lia-bs-gray-700-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/ellipsis.svg#ellipsis"></use></svg></button><div x-placement="bottom-start" style="position:absolute;top:0;left:0;opacity:0;pointer-events:none" class="styles_dropdown-menu__gMSix"><a data-testid="nodeLink" target="_self" class="styles_dropdown-item__s_Yb9" aria-label="Place Communities" href="/category/communities">Communities</a><a data-testid="nodeLink" target="_self" class="styles_dropdown-item__s_Yb9" aria-label="Place Topics" href="/category/solutions">Topics</a></div></div></li><li class="Breadcrumb_lia-crumb-divider__Fy21x"><svg class="Breadcrumb_lia-crumb-icon__ZfovN styles_lia-g-icon-size-12__fO_66 Icon_lia-size-12__l8N3M Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-gray-500);--lia-local-icon-color-h:var(--lia-bs-gray-500-h);--lia-local-icon-color-s:var(--lia-bs-gray-500-s);--lia-local-icon-color-l:var(--lia-bs-gray-500-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-right.svg#chevron-right"></use></svg></li><li class="Breadcrumb_lia-crumb-list-item__iXBAq"><a data-testid="nodeLink" target="_self" class="Breadcrumb_lia-crumb-item__CSmrj" aria-label="Place Regional Blogs" href="/category/regionalblogs">Regional Blogs</a></li><li class="Breadcrumb_lia-crumb-divider__Fy21x" aria-hidden="true"><svg class="Breadcrumb_lia-crumb-icon__ZfovN styles_lia-g-icon-size-12__fO_66 Icon_lia-size-12__l8N3M Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-gray-500);--lia-local-icon-color-h:var(--lia-bs-gray-500-h);--lia-local-icon-color-s:var(--lia-bs-gray-500-s);--lia-local-icon-color-l:var(--lia-bs-gray-500-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-right.svg#chevron-right"></use></svg></li><li class="Breadcrumb_lia-crumb-list-item__iXBAq Breadcrumb_lia-crumb-mobile__phoX_" data-testid="Breadcrumb.Mobilecrumb"><a data-testid="nodeLink" target="_self" class="Breadcrumb_lia-crumb-item__CSmrj" aria-label="Place Desenvolvedores BR" href="/category/regionalblogs/blog/desenvolvedoresbr"><svg class="Breadcrumb_lia-crumb-icon-mobile__TE_1C styles_lia-g-icon-size-16__V9Va_ Icon_lia-size-16__D8_m2 Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-gray-700);--lia-local-icon-color-h:var(--lia-bs-gray-700-h);--lia-local-icon-color-s:var(--lia-bs-gray-700-s);--lia-local-icon-color-l:var(--lia-bs-gray-700-l)" aria-hidden="true"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/chevron-left.svg#chevron-left"></use></svg>Desenvolvedores BR</a></li></ol><div class="Breadcrumb_lia-crumb-actions__fTD_Z" style="--lia-breadcrumb-link-color:var(--lia-bs-gray-700)"></div></div></nav></div></div><div class="CustomComponent_lia-wrapper__7IqeO" style="--lia-local-bg-color:transparent"><article class="CustomComponent_lia-article__sQ7z4" data-testid="CustomComponent"><section></section></article></div></header><main id="main-content"><section class="QuiltSection_lia-section-spacing__WK9AB" data-testid="QuiltSection-blog-article"><div class="QuiltSection_lia-section-attached-first__zZ7U_"></div><div data-testid="ThemedContainer" class="ThemedContainer_lia-fixed-container__MPYgN styles_container__6wTQq"><div class="styles_text-center__Pja03 styles_text-break__Ny06M styles_sr-only__NOnjB styles_lia-g-mb-15__YNrGd" data-testid="QuiltSectionHeader"><h2 class="styles_sr-only__NOnjB" data-testid="QuiltSectionHeader.Title">Blog Post</h2></div><div class="styles_row__sjnST"><div style="--lia-content-item-border:none" class="QuiltSection_lia-column__iNmDj styles_col-lg-12__u20eR"><div class="styles_lia-g-section-widget__aHMgk"><div class="BlogArticleWidget_lia-blog-container__ckIso"><div class="BlogArticleWidget_lia-message-body-container__deBDw"><div class="MessageViewStandard_lia-wrap__T7pk7"><article class="MessageViewStandard_lia-article__pnxJk styles_lia-g-message-box__arKXm BlogArticleWidget_lia-article__u_l_W" data-testid="StandardMessageView"><section class="MessageViewStandard_lia-section__rh71K" id="uid4221166"><div class="styles_d-flex__7__Y_ styles_flex-column__Vl0ML"><div class="MessageViewStandard_lia-head-wrapper__KIxBz"><div class="styles_justify-content-center__wTGUU MessageCoverImage_lia-cover-image-wrap__8_iN7 lia-cover-image-wrap-bottom MessageCoverImage_lia-cover-image-wrap-standard__9vbgP lia-cover-image-view-bottom"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTRicnlvOA?revision=9&image-dimensions=2000x2000&constrain-image=true" alt="" data-testid="MessageCoverImage-Image" class="MessageCoverImage_lia-cover-image__X95lh"/></div><div class="MessageViewStandard_lia-title-section__P1a89"><div class="styles_d-flex__7__Y_"><div class="styles_lia-g-subheading__MYxBV MessageViewStandard_lia-node-title__ptFLq NodeTitle_lia-title-and-icon__wEuTM" data-testid="NodeTitle">Desenvolvedores BR </div><div class="styles_lia-g-subheading__MYxBV MessageViewStandard_lia-node-title__ptFLq styles_lia-g-ml-25__j3n4m">19 MIN READ</div></div><h1 title="Escalando Nodes e Pods no AKS" class="styles_text-break__Ny06M MessageViewStandard_lia-cover-image-title__WLVim" data-testid="MessageSubject">Escalando Nodes e Pods no AKS</h1><div class="MessageViewStandard_lia-header__m8KYT"><div class="MessageViewStandard_lia-header-main__2zLqy"><div class="styles_lia-g-mr-10__IIyjn"><a data-hovercard-trigger="true" data-testid="userLink" class="styles_d-block__btBet" aria-label="View Profile: wdossantos" aria-describedby="UserHoverCard-1171673" target="_self" href="/users/wdossantos/1171673"><span class="UserAvatar_lia-avatar__HFfcv styles_lia-g-icon-size-50__HExtr" data-testid="userAvatar"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMTcxNjczLTMyNTM2MGkwNjkyMDE1OTQ0RkQ5MTM0?image-dimensions=50x50" alt="wdossantos's avatar" class="UserAvatar_lia-avatar-img__CUPwZ" aria-hidden="false"/></span></a></div><div class="MessageViewStandard_lia-header-text__6GqFy"><div class="styles_d-flex__7__Y_ styles_align-items-center__OKdH0"><span class="styles_lia-g-divider__X68T2"><a data-hovercard-trigger="true" data-testid="userLink" class="MessageViewStandard_lia-author-text__3ExAu styles_font-weight-bold__3_Kc8 styles_small__seeYj styles_d-flex__7__Y_" aria-label="View Profile: wdossantos" aria-describedby="UserHoverCard-1171673" target="_self" href="/users/wdossantos/1171673">wdossantos</a></span><div class="styles_lia-g-ml-5__SlnKE MessageViewStandard_lia-author-rank__fonU0" data-testid="userRank"><div class="UserRankLabel_lia-rank__CqPss"><img class="UserRankLabel_lia-rank-icon__g_uVM" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc?image-dimensions=100x16&constrain-image=true" alt="Icon for Microsoft rank"/><span style="border-color:#333333;color:#333333" class="UserRankLabel_lia-is-boxed__Ykpfe UserRankLabel_lia-rank-label__epEUI UserRankLabel_lia-is-outline__q_ZVs"><span class="UserRankLabel_text-break__RX8Tt styles_lia-g-clamp__dg3Sg">Microsoft</span></span></div></div></div><span class="MessageViewStandard_lia-author-post-time__OaTrl" data-testid="messageTime"><span title="November 23, 2024 at 4:21 PM" role="none">Nov 23, 2024</span></span></div></div></div></div></div></div><div class="BlogArticleWidget_lia-blog-content__ep83_"><h2 class="styles_text-body__F7QRV MessageIntroduction_lia-message-introduction___mMAN styles_h4__wlzOi">Escalar nodes e escalar pods são dois conceitos distintos no contexto do AKS (Azure Kubernetes Service).</h2><div class="styles_lia-g-message-body__LkV7_ styles_lia-g-message-body-blog__TUnqH styles_clearfix__xFEoC styles_text-body__F7QRV"><DIV class="markdown-heading" dir="auto"> <H1 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--1221464141">Escalando Nodes e Pods no AKS</H1> <P> Escalar nodes e escalar pods são dois conceitos distintos no contexto do AKS (Azure Kubernetes Service).</P> <A id="user-content-escalando-nodes-e-pods-no-aks" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#escalando-nodes-e-pods-no-aks" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Escalando Nodes e Pods no AKS"></A></DIV> <P>Escalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade de computação, memória e armazenamento ao seu cluster, o que ajuda a lidar com picos de tráfego ou carga de trabalho.</P> <P>Por outro lado, escalar pods refere-se ao aumento ou diminuição da quantidade de instâncias de um pod específico em execução no cluster do AKS. Isso auxilia no gerenciamento de picos de tráfego ou demanda por recursos específicos, como CPU ou memória.</P> <P>Para escalar manualmente os nodes no AKS, você pode utilizar o comando ‘az aks scale’. Por exemplo, para escalar o cluster para 3 nodes, execute o seguinte comando:</P> <pre class="lia-code-sample language-powershell"><code>az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3</code></pre> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Os dimensionadores automáticos de cluster e de pod horizontal podem operar em conjunto e geralmente são implantados em um cluster. Quando combinados, o dimensionador automático de pod horizontal foca na execução do número de pods necessário para atender à demanda do aplicativo. Já o dimensionador automático de cluster concentra-se na execução do número de nós necessários para dar suporte aos pods agendados.</P> <P> </P> <BLOCKQUOTE> <P>O dimensionamento manual é desabilitado quando o dimensionador automático de cluster é usado. Deixe o dimensionador automático de cluster determinar o número de nós necessários. Caso deseje dimensionar o cluster manualmente, <A href="https://learn.microsoft.com/pt-br/azure/aks/cluster-autoscaler#disable-the-cluster-autoscaler-on-a-cluster" target="_blank" rel="noopener noreferrer">desabilite o dimensionador automático de cluster</A>.</P> </BLOCKQUOTE> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--530902667">Habilitar o dimensionador automático em um cluster existente</H2> <pre class="lia-code-sample language-powershell"><code>az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3</code></pre><A id="user-content-habilitar-o-dimensionador-automático-em-um-cluster-existente" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#habilitar-o-dimensionador-autom%C3%A1tico-em-um-cluster-existente" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Habilitar o dimensionador automático em um cluster existente"></A></DIV> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"> </DIV> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-1956610166">Desabilitar o dimensionador automático de cluster em um cluster</H2> <A id="user-content-desabilitar-o-dimensionador-automático-de-cluster-em-um-cluster" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#desabilitar-o-dimensionador-autom%C3%A1tico-de-cluster-em-um-cluster" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Desabilitar o dimensionador automático de cluster em um cluster"></A></DIV> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"> <PRE> </PRE> <DIV class="zeroclipboard-container"><pre class="lia-code-sample language-powershell"><code>az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --disable-cluster-autoscaler</code></pre></DIV> </DIV> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-149155703">Mostrar configuração do profile padrão</H2> <pre class="lia-code-sample language-powershell"><code>az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles</code></pre><A id="user-content-mostrar-configuração-do-profile-padrão" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#mostrar-configura%C3%A7%C3%A3o-do-profile-padr%C3%A3o" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Mostrar configuração do profile padrão"></A></DIV> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"> <PRE> </PRE> </DIV> <P>Você pode configurar detalhes mais granulares do autoscaler de cluster alterando os valores padrão no perfil.</P> <P> </P> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--1658298760">Escalar pods (HPA)</H2> <P> </P> <A id="user-content-escalar-pods-hpa" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#escalar-pods-hpa" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Escalar pods (HPA)"></A></DIV> <P>Para escalar os pods no AKS, você pode usar a horizontal pod autoscaler (HPA) do Kubernetes. A HPA ajusta automaticamente o número de pods com base na utilização de recursos. Você pode configurar a HPA usando um arquivo YAML, que especifica a regra para aumentar ou diminuir o número de pods. Por exemplo, você pode definir uma regra para aumentar o número de pods em 1 sempre que a utilização de CPU de um pod ultrapassar 80%. Aqui está um exemplo de arquivo YAML para configurar a HPA:</P> <P> </P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: my-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-deployment minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 80</code></pre> <P> </P> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Esse arquivo YAML especifica que a HPA deve ajustar o número de pods para um deployment chamado <CODE>my-deployment</CODE>, aumentando ou diminuindo a quantidade de pods para manter a utilização média de CPU em 80%. Além disso, o número mínimo de pods é definido como 1 e o número máximo como 10.</P> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-829214073">Mas quando eu devo usar o KEDA no lugar do HPA ?</H2> <P> </P> <A id="user-content-mas-quando-eu-devo-usar-o-keda-no-lugar-do-hpa-" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#mas-quando-eu-devo-usar-o-keda-no-lugar-do-hpa-" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Mas quando eu devo usar o KEDA no lugar do HPA ?"></A></DIV> <P>O KEDA (Kubernetes-based Event-Driven Autoscaling) é uma ferramenta de escala automática para cargas de trabalho de eventos baseada em Kubernetes. O KEDA estende o recurso de escala automática do Kubernetes e permite a escala com base em eventos, em vez de apenas na utilização de recursos.</P> <P>Embora o HPA do Kubernetes seja capaz de escalar horizontalmente com base na utilização de recursos, ele não é projetado para escalar automaticamente as cargas de trabalho baseadas em eventos. O KEDA, por outro lado, é projetado especificamente para escalar cargas de trabalho baseadas em eventos, como filas de mensagens, stream de eventos e cronjobs.</P> <P>Se sua carga de trabalho envolve eventos que acionam a criação de novas instâncias de pods ou ajustes no número de réplicas em tempo real, o KEDA pode ser uma opção melhor do que o HPA do Kubernetes quando o gatilho para a escala é uma fila por exemplo.</P> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--978240390">Para configurar o HPA (Horizontal Pod Autoscaler) no AKS</H2> <P> </P> <A id="user-content-para-configurar-o-hpa-horizontal-pod-autoscaler-no-aks" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#para-configurar-o-hpa-horizontal-pod-autoscaler-no-aks" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Para configurar o HPA (Horizontal Pod Autoscaler) no AKS"></A></DIV> <P>Para configurar o HPA (Horizontal Pod Autoscaler) no AKS (Azure Kubernetes Service) do zero, você pode seguir os seguintes passos:</P> <OL dir="auto"> <LI>Certifique-se de ter uma conta do Azure e um cluster do AKS criados.</LI> <LI>Instale o kubectl em sua máquina local e configure-o para acessar seu cluster do AKS.</LI> <LI>Crie um deployment no cluster do AKS:</LI> <LI><CODE>kubectl create deployment <deployment-name> --image=<container-image></CODE></LI> <LI>Verifique se o deployment foi criado corretamente:</LI> <LI><CODE>kubectl get deployments</CODE></LI> <LI>Crie um serviço para expor o deployment:</LI> <LI><CODE>kubectl expose deployment <deployment-name> --port=<port-number> --type=LoadBalancer</CODE></LI> <LI>Verifique se o serviço foi criado corretamente:</LI> <LI><CODE>kubectl get services</CODE></LI> <LI>Crie um HPA para o deployment:</LI> <LI><CODE>kubectl autoscale deployment <deployment-name> --cpu-percent=<cpu-percent> --min=<min-replicas> --max=<max-replicas></CODE></LI> <LI>Substitua <CODE><cpu-percent></CODE>, <CODE><min-replicas></CODE> e <CODE><max-replicas></CODE> pelos valores desejados.</LI> <LI>Verifique se o HPA foi criado corretamente:</LI> <LI><CODE>kubectl get hpa</CODE></LI> </OL> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-1509272443">Demo aplicação <A href="https://mcr.microsoft.com/en-us/product/dotnet/samples/about" target="_blank" rel="noopener noreferrer">aspnet</A></H2> <P> </P> <A id="user-content-demo-aplicação-aspnet" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#demo-aplica%C3%A7%C3%A3o-aspnet" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Demo aplicação aspnet"></A></DIV> <P>Vamos utilizar a imagem de uma aplicação dotnet simples. O objetivo é testar diferentes configurações de HPA para os cenários de aumento de escala (Scale Up) e redução de escala (Scale Down).</P> <P> </P> <P>Primeiro passo vamos connecter nos cluster</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>az aks get-credentials --resource-group AKS_BLOG --name ask_poc_hpa</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Vamos criar uma Namespace</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl create namespace aspnet</code></pre> <P> </P> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Criando um manifesto de deploy</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl create deploy aspnetapp --image=mcr.microsoft.com/dotnet/samples:aspnetapp --dry-run=client -o yaml > samples-aspnetapp-deploy.yaml</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>o seguinte arquivo será gerado</P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"> <PRE> </PRE> </DIV> <pre class="lia-code-sample language-"><code>apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: aspnetapp resources: {} status: {}</code></pre> <P>Rodar o deploy</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl apply -f samples-aspnetapp-deploy.yaml -n aspnet</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Criando um manifesto de serviço</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl expose -f samples-aspnetapp-deploy.yaml --name=sampleapisvc --type=LoadBalancer --port=80 --target-port=8080 --dry-run=client -o yaml > samples-aspnetapp-svc.yaml</code></pre> <P> </P> </DIV> <P>o seguinte arquivo será gerado</P> <pre class="lia-code-sample language-yaml"><code>apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: app: aspnetapp name: sampleapisvc spec: ports: - port: 80 protocol: TCP targetPort: 8080 selector: app: aspnetapp type: LoadBalancer status: loadBalancer: {}</code></pre> <P> </P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"> <PRE> </PRE> </DIV> <P>Rodar Servico</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl apply -f samples-aspnetapp-svc.yaml -n aspnet</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Criando um manifesto de hpa</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml > samples-aspnetapp-hpa-01.yaml</code></pre> <P> </P> </DIV> <P>o seguinte arquivo será gerado</P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>rodar o hpa</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl apply -f samples-aspnetapp-hpa-01.yaml -n aspnet</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--298182020"><STRONG>Usando os comandos abaixo pode verificar o estado dos objetos</STRONG></H2> <P> </P> <A id="user-content-usando-os-comandos-abaixo-pode-verificar-o-estado-dos-objetos" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#usando-os-comandos-abaixo-pode-verificar-o-estado-dos-objetos" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Usando os comandos abaixo pode verificar o estado dos objetos"></A></DIV> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl top pods # Visualiza o consumo de CPU e memória dos pods kubectl get hpa # Mostra a configuração corrente do HPA com os valores das métricas kubectl describe hpa <name> # Visualiza as configurações do HPA, assim como eventos de aumento e diminuição de pods</code></pre> <P> </P> <DIV class="zeroclipboard-container"> </DIV> </DIV> <span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="Detalhes da configuração HPA"><button aria-labelledby="610860i8A2B3625877CAA20_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image Detalhes da configuração HPA"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MGk4QTJCMzYyNTg3N0NBQTIw?image-dimensions=750x750&revision=9" alt="Detalhes da configuração HPA" /></button><span class="lia-media-caption-text" id="610860i8A2B3625877CAA20_caption">Detalhes da configuração HPA</span></span> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--2105636483">Um dos erros mais comuns ao configurar HPA</H2> <P> </P> <A id="user-content-um-dos-erros-mais-comuns-ao-configurar-hpa" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#um-dos-erros-mais-comuns-ao-configurar-hpa" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Um dos erros mais comuns ao configurar HPA"></A></DIV> <P>Tudo ocorreu conforme esperado. No entanto, ao executar o comando <CODE>kubectl get hpa</CODE>, recebi a informação <CODE><unknown>/60%</CODE> no campo TARGETS. Comecei verificando se o metrics-server está em execução no seu cluster do AKS utilizando o comando <CODE>kubectl</CODE>.</P> <P> </P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl get pods -n kube-system</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Verificando os detalhes do HPA</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl describe hpa <nome></code></pre> <P> </P> <DIV class="zeroclipboard-container"> </DIV> </DIV> <BLOCKQUOTE> <P>The HPA was unable to compute the replica count: failed to get cpu utilization: missing request for cpu</P> </BLOCKQUOTE> <P>E por fim precisei editar com os limites do manifesto de deploy segue referência <A href="https://stacksimplify.com/azure-aks/azure-kubernetes-service-requests-and-limits/" target="_blank" rel="nofollow noopener noreferrer">https://stacksimplify.com/azure-aks/azure-kubernetes-service-requests-and-limits/</A></P> <P> </P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>resources: limits: cpu: "500m" memory: "512Mi" requests: cpu: "100m" memory: "256Mi"</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Onde:</P> <OL dir="auto"> <LI>é o valor da CPU solicitado pelo deployment. Por exemplo, “100m” representa 100 milicores (ou 0,1 CPU).</LI> <LI>é o valor máximo da CPU que o deployment pode usar. Por exemplo, “500m” representa 500 milicores (ou 0,5 CPU).</LI> </OL> <P>final</P> <pre class="lia-code-sample language-yaml"><code>apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: "500m" memory: "512Mi" requests: cpu: "100m" memory: "256Mi" status: {}</code></pre> <P> </P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"> <PRE> </PRE> </DIV> <P>após atualizar o deploy rodei</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl get hpa -n aspnet</code></pre> <DIV class="zeroclipboard-container"> </DIV> <DIV class="zeroclipboard-container"><span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet"><button aria-labelledby="610862i2634033184ED843C_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MmkyNjM0MDMzMTg0RUQ4NDND?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet" /></button><span class="lia-media-caption-text" id="610862i2634033184ED843C_caption">kubectl get hpa -n aspnet</span></span> <P> </P> </DIV> </DIV> <P>Vemos os percentuais de CPU, o atual e o gatilho do algoritmo HPA, acima de 60 % aumenta e abaixo disso diminui respeitando o parâmetro stabilizationWindowSeconds para evitar as flutuações</P> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-2055646089">Considerações sobre recursos disponíveis para pods</H2> <P> </P> <A id="user-content-considerações-sobre-recursos-disponíveis-para-pods" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#considera%C3%A7%C3%B5es-sobre-recursos-dispon%C3%ADveis-para-pods" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Considerações sobre recursos disponíveis para pods"></A></DIV> <P>Em uma máquina virtual de 8 GB e 2 vCPU, você pode esperar:</P> <UL dir="auto"> <LI>100 MB de memória e 0,1 vCPU a serem reservados para o sistema operacional.</LI> <LI>1,8 GB de memória e 0,07 vCPU a serem reservados para o Kubelet.</LI> <LI>100 MB de memória para o limite de despejo.</LI> </UL> <P>Os ~6 GB restantes de memória e 1,83 vCPU podem ser usados pelos pods.</P> <BLOCKQUOTE> <P>O Kubelet é um agente que executa em cada nó de um cluster do Kubernetes. Ele é responsável por garantir que os containers estejam em execução no nó e em conformidade com o estado desejado declarado no manifesto do Kubernetes.</P> <P> </P> </BLOCKQUOTE> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-248191626">Adicionando o fortio para teste de carga</H2> <P> </P> <A id="user-content-adicionando-o-fortio-para-teste-de-carga" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#adicionando-o-fortio-para-teste-de-carga" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Adicionando o fortio para teste de carga"></A></DIV> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/sample-client/fortio-deploy.yaml</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Fortio é uma ferramenta de teste de carga inicialmente parte do Istio e depois se tornou independente. Executa consultas por segundo, registra tempo de execução.É uma biblioteca Go rápida e pequena, com uma imagem Docker de 4 MB.</P> <P>executando uma chamada de teste usando curl</P> <P> </P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -n httpbin -- /usr/bin/fortio curl -quiet http://localhost:8080</code></pre> <P> </P> </DIV> <P>Usando o Fortio, este comando, por exemplo, executa 20 threads, totalizando 20 mil requisições.</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -- /usr/bin/fortio load -c 20 -qps 0 -n 20000 -loglevel Warning http://52.226.198.73/</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--1559262837">Quais as opções de configuração do HPA</H2> <P> </P> <A id="user-content-quais-as-opções-de-configuração-do-hpa" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#quais-as-op%C3%A7%C3%B5es-de-configura%C3%A7%C3%A3o-do-hpa" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Quais as opções de configuração do HPA"></A></DIV> <P><STRONG>Exemplo samples-aspnetapp-hpa-01.yaml</STRONG> </P> <P> </P> <P>Utilizando targetCPUUtilizationPercentage</P> <P> </P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml > samples-aspnetapp-hpa-01.yaml</code></pre> <P> </P> </DIV> <P>manifesto gerado pelo kubctl</P> <P> </P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0</code></pre> <P> </P> <PRE> </PRE> <DIV class="zeroclipboard-container"><span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet"><button aria-labelledby="610864iCC7E65E3428CB880_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2NGlDQzdFNjVFMzQyOENCODgw?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet" /></button><span class="lia-media-caption-text" id="610864iCC7E65E3428CB880_caption">kubectl get hpa -n aspnet</span></span> <P> </P> </DIV> </DIV> <P><STRONG>Exemplo samples-aspnetapp-hpa-02.yaml</STRONG> </P> <P> </P> <P>Utilizando um comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.</P> <P> </P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 10 behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30</code></pre> <P> </P> <DIV class="zeroclipboard-container"> </DIV> </DIV> <OL dir="auto"> <LI><STRONG>stabilizationWindowSeconds</STRONG> A janela de estabilização é usada para restringir a <A href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#flapping" target="_blank" rel="nofollow noopener noreferrer">oscilação</A> da contagem de réplicas quando as métricas usadas para dimensionamento continuam flutuand</LI> <LI><CODE>periodSeconds</CODE>indica o período de tempo no passado durante o qual a política deve ser válida</LI> <LI>A política <EM>(Porcentagem)</EM> permite que no máximo 50% das réplicas atuais sejam reduzidas em 30 segundos. <A href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#scaling-policies" target="_blank" rel="nofollow noopener noreferrer">saiba mais</A></LI> <LI>A seleção da política pode ser alterada especificando o <CODE>selectPolicy</CODE></LI> </OL> <span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet"><button aria-labelledby="610867i08910ECCB0703C3B_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2N2kwODkxMEVDQ0IwNzAzQzNC?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet" /></button><span class="lia-media-caption-text" id="610867i08910ECCB0703C3B_caption">kubectl get hpa -n aspnet</span></span> <P> </P> <P><STRONG>Exemplo samples-aspnetapp-hpa-03.yaml</STRONG> </P> <P> </P> <P>Utilizando um comportamento que permite um controle mais refinado dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada no consumo médio em milissegundos como gatilho para iniciar os movimentos.</P> <P> </P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: AverageValue averageValue: 10m behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30</code></pre> <P> </P> <PRE> </PRE> <DIV class="zeroclipboard-container"> </DIV> <DIV class="zeroclipboard-container"><span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet"><button aria-labelledby="610868iED5646BC0F23FAB6_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OGlFRDU2NDZCQzBGMjNGQUI2?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet" /></button><span class="lia-media-caption-text" id="610868iED5646BC0F23FAB6_caption">kubectl get hpa -n aspnet</span></span> <P> </P> </DIV> </DIV> <P><STRONG>Exemplo samples-aspnetapp-hpa-04.yml</STRONG> </P> <P> </P> <P>Utilizando o comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU e memória baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.</P> <P> </P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 6 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30</code></pre> <P> </P> <PRE> </PRE> <DIV class="zeroclipboard-container"><span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet"><button aria-labelledby="610869i9418DDA7F5EF13FC_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OWk5NDE4RERBN0Y1RUYxM0ZD?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet" /></button><span class="lia-media-caption-text" id="610869i9418DDA7F5EF13FC_caption">kubectl get hpa -n aspnet</span></span> <P> </P> </DIV> </DIV> <P>Vou fazer um teste com a configuração 4, para simular a carga vou usar o fortio e analisar o comportamento de up e down.</P> <P> </P> <P>O teste começou as 14:22</P> <P> </P> <span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet"><button aria-labelledby="610870i5F3B32AA0ECB0B02_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MGk1RjNCMzJBQTBFQ0IwQjAy?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet" /></button><span class="lia-media-caption-text" id="610870i5F3B32AA0ECB0B02_caption">kubectl get hpa -n aspnet</span></span> <P> </P> <P>então usei o parâmetro -w para observar as mudanças de replicas</P> <DIV class="highlight highlight-source-powershell notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-powershell"><code>kubectl get hpa -n aspnet -w</code></pre> <P> </P> </DIV> <P>As 14:25 cheguei em 6 réplicas, podemos observar que os pods são acionados um por um conforme o comportamento definido.</P> <span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet -w"><button aria-labelledby="610872iB96B73F835182DB6_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet -w"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MmlCOTZCNzNGODM1MTgyREI2?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet -w" /></button><span class="lia-media-caption-text" id="610872iB96B73F835182DB6_caption">kubectl get hpa -n aspnet -w</span></span> <P> </P> <P>As 14:35 baixou para 2 pods</P> <span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet -w"><button aria-labelledby="610873i5A1E25402D602EFD_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet -w"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3M2k1QTFFMjU0MDJENjAyRUZE?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet -w" /></button><span class="lia-media-caption-text" id="610873i5A1E25402D602EFD_caption">kubectl get hpa -n aspnet -w</span></span> <P> </P> <P>e as 14:38 chegamos em 1</P> <span class="lia-media-object lia-media-is-inline lia-media-size-large" data-image-alt="kubectl get hpa -n aspnet -w"><button aria-labelledby="610875i0739D7D316B5A7C6_caption" class="lia-media-unstyled-btn" type="button" aria-haspopup="true" aria-label="Enlarge Image kubectl get hpa -n aspnet -w"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3NWkwNzM5RDdEMzE2QjVBN0M2?image-dimensions=750x750&revision=9" alt="kubectl get hpa -n aspnet -w" /></button><span class="lia-media-caption-text" id="610875i0739D7D316B5A7C6_caption">kubectl get hpa -n aspnet -w</span></span> <P> </P> <P>O Comportamento de Scale Down não aconteceu exatamente como eu pensei, ele não baixou 100% no primeiro ciclo de verificação.</P> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-928249996">Testes com 30 pods</H2> <A id="user-content-testes-com-30-pods" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#testes-com-30-pods" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Testes com 30 pods"></A></DIV> <P>Para finalizar fiz um teste com mais pods e coloquei os dados aqui para análise, mudei o deploy para o seguinte:</P> <pre class="lia-code-sample language-yaml"><code>apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: "100m" memory: "256Mi" requests: cpu: "30m" memory: "128Mi" status: {}</code></pre> <P> </P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"> <PRE> </PRE> </DIV> <P>Alterei o HPA para</P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30</code></pre> <P> </P> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>e comecei a monitorar</P> <DIV class="snippet-clipboard-content notranslate position-relative overflow-auto"> <PRE class="notranslate"><CODE>NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE aspnetapp Deployment/aspnetapp <unknown>/80%, 21%/100% 1 30 1 45m aspnetapp Deployment/aspnetapp 13%/80%, 21%/100% 1 30 1 45m aspnetapp Deployment/aspnetapp 3%/80%, 21%/100% 1 30 1 46m aspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 1 47m aspnetapp Deployment/aspnetapp 256%/80%, 51%/100% 1 30 2 48m aspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 2 48m aspnetapp Deployment/aspnetapp 256%/80%, 54%/100% 1 30 3 48m aspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 3 48m aspnetapp Deployment/aspnetapp 330%/80%, 31%/100% 1 30 4 49m aspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 4 49m aspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 49m aspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 50m aspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 4 50m aspnetapp Deployment/aspnetapp 82%/80%, 45%/100% 1 30 5 51m aspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 5 51m aspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m aspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m aspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 7 52m aspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 7 52m aspnetapp Deployment/aspnetapp 101%/80%, 36%/100% 1 30 8 53m aspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 8 53m aspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 8 53m aspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m aspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m aspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 10 54m aspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 10 54m aspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m aspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m aspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 12 55m aspnetapp Deployment/aspnetapp 146%/80%, 43%/100% 1 30 12 55m aspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m aspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m aspnetapp Deployment/aspnetapp 109%/80%, 42%/100% 1 30 14 56m aspnetapp Deployment/aspnetapp 113%/80%, 43%/100% 1 30 14 56m aspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 15 57m aspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m aspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m aspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 58m aspnetapp Deployment/aspnetapp 32%/80%, 42%/100% 1 30 15 58m aspnetapp Deployment/aspnetapp 94%/80%, 45%/100% 1 30 15 58m aspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m aspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m aspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 16 59m aspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 17 59m aspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 17 60m aspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 18 60m aspnetapp Deployment/aspnetapp 138%/80%, 43%/100% 1 30 18 60m aspnetapp Deployment/aspnetapp 52%/80%, 43%/100% 1 30 19 60m aspnetapp Deployment/aspnetapp 66%/80%, 44%/100% 1 30 19 61m aspnetapp Deployment/aspnetapp 52%/80%, 44%/100% 1 30 19 61m aspnetapp Deployment/aspnetapp 122%/80%, 44%/100% 1 30 19 61m aspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 61m aspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 62m aspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 21 62m ** aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 65m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m aspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m aspnetapp Deployment/aspnetapp 54%/80%, 42%/100% 1 30 9 67m ** aspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 67m aspnetapp Deployment/aspnetapp 54%/80%, 44%/100% 1 30 9 68m aspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 68m aspnetapp Deployment/aspnetapp 81%/80%, 45%/100% 1 30 9 68m aspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 9 68m aspnetapp Deployment/aspnetapp 217%/80%, 45%/100% 1 30 10 69m aspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 10 69m aspnetapp Deployment/aspnetapp 217%/80%, 40%/100% 1 30 11 69m aspnetapp Deployment/aspnetapp 174%/80%, 40%/100% 1 30 11 69m aspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m aspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m aspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 13 70m aspnetapp Deployment/aspnetapp 143%/80%, 42%/100% 1 30 13 70m aspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m aspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m aspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 71m aspnetapp Deployment/aspnetapp 96%/80%, 40%/100% 1 30 15 71m aspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 72m aspnetapp Deployment/aspnetapp 96%/80%, 39%/100% 1 30 16 72m ** aspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 72m aspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 73m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 73m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 76m aspnetapp Deployment/aspnetapp 3%/80%, 38%/100% 1 30 16 77m aspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 77m aspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 77m ** aspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m aspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m aspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m aspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 79m aspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 80m aspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 81m aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m aspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 82m aspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 83m aspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m aspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m aspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 84m aspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 84m aspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m aspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m aspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 86m aspnetapp Deployment/aspnetapp 5%/80%, 36%/100% 1 30 3 86m aspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m aspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m aspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m aspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 87m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m aspnetapp Deployment/aspnetapp 5%/80%, 33%/100% 1 30 2 88m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 89m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m aspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 92m aspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 92m aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 1 93m aspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 94m aspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m aspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m </CODE></PRE> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Podemos observar que, ao atingir 21 réplicas por volta dos 62 minutos, houve uma diminuição nas cargas. Logo após a janela de estabilização, que durou cerca de 5 minutos, o número de réplicas diminui para 9 por volta dos 67 minutos. Fiz uma segunda simulação de carga e as réplicas aumentam para 16 por volta dos 72 minutos e, aproximadamente 5 minutos depois, ou seja, aos 77 minutos, elas diminuem para 7.</P> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId--879204467">samples-aspnetapp-hpa-05.yaml</H2> <A id="user-content-samples-aspnetapp-hpa-05yaml" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#samples-aspnetapp-hpa-05yaml" target="_blank" rel="noopener noreferrer" aria-label="Permalink: samples-aspnetapp-hpa-05.yaml"></A></DIV> <P>Mudei a politicas de Scale Down e Scale up para pods, baixando um pod de cada vez</P> <DIV class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto"><pre class="lia-code-sample language-yaml"><code>apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30</code></pre> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>e dessa forma foi deterministico um por um</P> <DIV class="snippet-clipboard-content notranslate position-relative overflow-auto"> <PRE class="notranslate"><CODE>NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE aspnetapp Deployment/aspnetapp 30%/80%, 61%/100% 1 30 1 20h aspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 1 20h aspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 3 20h aspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 3 20h aspnetapp Deployment/aspnetapp 330%/80%, 32%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 114%/80%, 30%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 4%/80%, 32%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 6%/80%, 32%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h aspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h aspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 5%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h aspnetapp Deployment/aspnetapp 3%/80%, 63%/100% 1 30 1 20h </CODE></PRE> <DIV class="zeroclipboard-container"> </DIV> </DIV> <P>Parece que o problema está associado à tentativa de encerrar pods que ainda estão em uso, resultando na baixa de apenas uma fração da quantidade especificada na política. O único cenário em que pude observar um determinismo em relação à quantidade de pods baixados foi no exemplo em que defini o comportamento de redução para apenas um pod por vez.</P> <DIV class="markdown-heading" dir="auto"> <H2 class="heading-element" dir="auto" tabindex="-1" id="community-4221166-toc-hId-1608308366">Referências</H2> <A id="user-content-referências" class="anchor" href="https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#refer%C3%AAncias" target="_blank" rel="noopener noreferrer" aria-label="Permalink: Referências"></A></DIV> <OL dir="auto"> <LI><A href="https://learn.microsoft.com/pt-br/azure/aks/cluster-autoscaler" target="_blank" rel="noopener noreferrer">Dimensionar automaticamente um cluster para atender às demandas de aplicativo no AKS (Serviço de Kubernetes do Azure)</A></LI> <LI><A href="https://learn.microsoft.com/pt-br/azure/aks/scale-cluster?tabs=azure-cli" target="_blank" rel="noopener noreferrer">Dimensionar a contagem de nós em um cluster do AKS (Serviço de Kubernetes do Azure)</A></LI> <LI><A href="https://learn.microsoft.com/pt-br/troubleshoot/azure/azure-kubernetes/node-count-is-not-in-autoscaler-min-max-range" target="_blank" rel="noopener noreferrer">A contagem de nós atual não está no intervalo mínimo e mínimo do dimensionador automático — Azure | Microsoft Learn</A></LI> <LI><A href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/" target="_blank" rel="nofollow noopener noreferrer">Horizontal Pod Autoscaling | Kubernetes</A></LI> <LI><A href="https://learn.microsoft.com/pt-br/azure/aks/tutorial-kubernetes-scale?tabs=azure-cli#autoscale-pods" target="_blank" rel="noopener noreferrer">Tutorial do Kubernetes no Azure — Dimensionar Aplicativo — Azure Kubernetes Service | Microsoft Learn</A></LI> <LI><A href="https://learnk8s.io/kubernetes-autoscaling-strategies#choosing-the-optimal-instance-size-for-a-kubernetes-node" target="_blank" rel="nofollow noopener noreferrer">Architecting Kubernetes clusters — choosing the best autoscaling strategy (learnk8s.io)</A></LI> <LI><A href="https://learnk8s.io/kubernetes-instance-calculator" target="_blank" rel="nofollow noopener noreferrer">Kubernetes instance calculator (learnk8s.io)</A></LI> <LI><A href="https://learn.microsoft.com/pt-br/azure/aks/concepts-scale" target="_blank" rel="noopener noreferrer">Conceitos — dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn</A></LI> <LI><A href="https://learn.microsoft.com/pt-br/azure/aks/tutorial-kubernetes-scale?tabs=azure-cli#autoscale-pods" target="_blank" rel="noopener noreferrer">Tutorial do Kubernetes no Azure — Dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn</A></LI> <LI><A href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/" target="_blank" rel="nofollow noopener noreferrer">Horizontal Pod Autoscaling | Kubernetes</A></LI> </OL></div><div class="styles_d-flex__7__Y_ styles_align-items-center__OKdH0"><div class="styles_lia-g-text-xs__xMXX5 styles_lia-g-divider__X68T2 MessageRevision_lia-revision__75lOM"><div class="styles_d-flex__7__Y_ styles_align-items-center__OKdH0"><span data-testid="MessageTimestamp" class="styles_text-body__F7QRV MessageRevision_lia-publish-date__sB2l6">Updated <span title="November 23, 2024 at 4:20 PM">Nov 23, 2024</span></span></div><span data-testid="MessageVersion" class="MessageRevision_lia-revision-text__FVsnQ styles_rounded-sm__gAfAD">Version 1.0</span></div></div><div class="MessageViewStandard_lia-footer__H7yx3 MessageViewStandard_lia-footer-divider__bGc9s"><div class="MessageViewStandard_lia-footer-left__uxaFW MessageViewStandard_lia-has-tags__rcZNi"></div><div class="MessageViewStandard_lia-footer-right__kqY6e"><div class="styles_d-flex__7__Y_ styles_align-items-center__OKdH0"><button data-testid="ReplyButton" aria-label="Comment" type="button" class="styles_lia-g-action-btn__70w24 MessageReplyButton_lia-reply-btn__2ZU73 styles_btn__1HFm0 styles_btn-link__Qn59s"><svg class="styles_lia-g-icon-size-16__V9Va_ Icon_lia-size-16__D8_m2 Icon_lia-icon__on1Gb" data-testid="Icon" style="--lia-local-icon-color:var(--lia-bs-body-color);--lia-local-icon-color-h:var(--lia-bs-body-color-h);--lia-local-icon-color-s:var(--lia-bs-body-color-s);--lia-local-icon-color-l:var(--lia-bs-body-color-l)" aria-hidden="true"><title>Comment</title><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/comment.svg#comment"></use></svg><span class="MessageReplyButton_lia-reply-text__7NgWG">Comment</span></button></div></div></div><article class="MessageAuthorBio_lia-footer-wrapper__c0isy" data-testid="MessageAuthorBio"><div class="styles_d-flex__7__Y_ styles_align-items-center__OKdH0"><a data-hovercard-trigger="true" data-testid="userLink" class="styles_align-self-start__a5Ju_" aria-label="View Profile: wdossantos" aria-describedby="UserHoverCard-1171673" target="_self" href="/users/wdossantos/1171673"><span class="UserAvatar_lia-avatar__HFfcv styles_lia-g-icon-size-50__HExtr" data-testid="userAvatar"><img src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMTcxNjczLTMyNTM2MGkwNjkyMDE1OTQ0RkQ5MTM0?image-dimensions=50x50" alt="wdossantos's avatar" class="UserAvatar_lia-avatar-img__CUPwZ" aria-hidden="false"/></span></a><div class="MessageAuthorBio_lia-footer-details-wrapper__wmghu"><div class="MessageAuthorBio_lia-footer-details__A_A8m"><div class="styles_d-flex__7__Y_ styles_align-items-center__OKdH0"><a data-hovercard-trigger="true" data-testid="userLink" class="styles_lia-g-divider__X68T2 MessageAuthorBio_lia-author-login__HeCwv" aria-label="View Profile: wdossantos" aria-describedby="UserHoverCard-1171673" target="_self" href="/users/wdossantos/1171673">wdossantos</a><div class="MessageAuthorBio_lia-user-rank__Tdh52" data-testid="userRank"><div class="UserRankLabel_lia-rank__CqPss"><img class="UserRankLabel_lia-rank-icon__g_uVM" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc?image-dimensions=100x16&constrain-image=true" alt="Icon for Microsoft rank"/><span style="border-color:#333333;color:#333333" class="UserRankLabel_lia-is-boxed__Ykpfe UserRankLabel_lia-rank-label__epEUI UserRankLabel_lia-is-outline__q_ZVs"><span class="UserRankLabel_text-break__RX8Tt styles_lia-g-clamp__dg3Sg">Microsoft</span></span></div></div></div><div class="MessageAuthorBio_lia-footer-description__6mbqx" data-testid="UserRegistrationDate">Joined <!-- -->September 30, 2021</div></div><div class="MessageAuthorBio_lia-action__6MD3u styles_d-none__wDjqp"><button title="Send Message" data-testid="SendMessage-Button" aria-label="Send Message" tabindex="0" type="button" class="styles_btn__1HFm0 styles_btn-secondary__Ust3k">Send Message</button></div><div class="MessageAuthorBio_lia-action__6MD3u"><a data-testid="userLink" class="styles_btn__1HFm0 styles_btn-secondary__Ust3k" aria-label="View Profile: wdossantos" target="_self" href="/users/wdossantos/1171673">View Profile</a></div></div></div><div class="styles_d-flex__7__Y_ styles_align-items-center__OKdH0"><a data-hovercard-trigger="true" data-testid="nodeLink" target="_self" class="styles_align-self-start__a5Ju_" aria-label="Go to Desenvolvedores BR board" href="/category/regionalblogs/blog/desenvolvedoresbr"><div class="styles_lia-g-icon-size-50__HExtr Icon_lia-size-50__PduO6 Icon_lia-frame__Que5I" style="--lia-local-icon-color:var(--lia-blog-color);--lia-local-icon-color-h:var(--lia-blog-color-h);--lia-local-icon-color-s:var(--lia-blog-color-s);--lia-local-icon-color-l:var(--lia-blog-color-l)"><svg class="Icon_lia-icon__on1Gb" data-testid="Icon" aria-label="Content Type Blog icon"><use href="/static/graphics/processed/N-kiPDUFZiI-TFPgjoYOcYs5f-g/content-blog.svg#content-blog"></use></svg></div></a><div class="MessageAuthorBio_lia-footer-details-wrapper__wmghu"><div class="MessageAuthorBio_lia-footer-details__A_A8m"><a data-hovercard-trigger="true" data-testid="nodeLink" target="_self" class="MessageAuthorBio_lia-node-title__XQdEJ" aria-label="Place Desenvolvedores BR" href="/category/regionalblogs/blog/desenvolvedoresbr"><span class="styles_lia-g-mb-0__AIhaX NodeTitle_lia-title-and-icon__wEuTM" data-testid="NodeTitle">Desenvolvedores BR </span></a><div class="MessageAuthorBio_lia-footer-description__6mbqx">Follow this blog board to get notified when there's new activity</div></div><div class="MessageAuthorBio_lia-action__6MD3u"></div></div></div></article></div></section></article></div></div><div></div></div></div></div></div></div></section><section class="QuiltSection_lia-section-spacing__WK9AB" data-testid="QuiltSection-section-1729184836777"><div data-testid="ThemedContainer" class="ThemedContainer_lia-fixed-container__MPYgN styles_container__6wTQq"><div class="styles_row__sjnST"><div style="--lia-content-item-border:none" class="QuiltSection_lia-column__iNmDj styles_col-lg-8__V2wNr"></div><div style="--lia-content-item-border:1px solid hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)" class="QuiltSection_lia-column__iNmDj styles_col-lg-4__6NfeT"><div class="styles_lia-g-section-widget__aHMgk"><article class="CustomComponent_lia-article__sQ7z4 CustomComponent_lia-with-background__LfN1g" data-testid="CustomComponent"><header class="styles_lia-g-mb-25__5lrHe"><h3 class="styles_h5__q_74t styles_mb-0__dO7t3">Share</h3></header><section><div class="custom_widget_Social_Sharing_social-share_c7xxz_1"> <ul class="custom_widget_Social_Sharing_sharing-options_c7xxz_2"> <li> <a class="custom_widget_Social_Sharing_social-share-linkedin_c7xxz_18" href="http://www.linkedin.com/shareArticle?mini=true&url=https://techcommunity.microsoft.com" target="_blank"> <img alt="Share to LinkedIn" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-linkedin.svg"/> </a> </li> <li> <a class="custom_widget_Social_Sharing_social-share-facebook_c7xxz_23" href="http://www.facebook.com/share.php?u=https://techcommunity.microsoft.com" target="_blank"> <img alt="Share to Facebook" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-facebook.svg"/> </a> </li> <li> <a class="custom_widget_Social_Sharing_social-share-x_c7xxz_28" href="http://twitter.com/share?text=Check out this post on the Microsoft Tech Community : BlogMessagePage&url=https://techcommunity.microsoft.com" target="_blank"> <img alt="Share to X" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-x.svg"/> </a> </li> <li> <a class="custom_widget_Social_Sharing_social-share-reddit_c7xxz_38" href="http://www.reddit.com/submit?url=https://techcommunity.microsoft.com&title=Check%20out%20this%20post%20on%20Microsoft%20Tech%20Community" target="_blank"> <img alt="Share to Reddit" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-reddit.svg"/> </a> </li> <li> <a class="custom_widget_Social_Sharing_social-share-email_c7xxz_43" href="mailto:?subject=&body=I found this on the Microsoft Tech Community and wanted to share it with you, check it out : https://techcommunity.microsoft.com" target="_blank"> <img alt="Share to Email" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-email.svg"/> </a> </li> <li class="custom_widget_Social_Sharing_social-share-rss_c7xxz_33" id="RSS"> <a class="custom_widget_Social_Sharing_social-share-rss_c7xxz_33" href="/t5/s/gxcuf89792/rss/board?board.id=DesenvolvedoresBR" target="_blank"> <img alt="Subscribe to RSS" src="https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/rss.svg"/> </a> </li> </ul> </div></section></article></div></div></div></div></section></main><footer data-testid="QuiltWrapperSection"><div class="CustomComponent_lia-wrapper__7IqeO" style="--lia-local-bg-color:transparent"><article class="CustomComponent_lia-article__sQ7z4" data-testid="CustomComponent"><section><footer id="uhf-footer" class="custom_widget_MicrosoftFooter_c-uhff_f95yq_12 custom_widget_MicrosoftFooter_context-uhf_f95yq_1" data-uhf-mscc-rq="false" data-footer-footprint="/MSTechnical/MSTechnicalFooter, fromService: True" data-m="{"cN":"Uhf footer_cont","cT":"Container","id":"c1m1r1a2","sN":1,"aN":"m1r1a2"}"> <nav class="custom_widget_MicrosoftFooter_c-uhff-nav_f95yq_35" aria-label="Footer Resource links" data-m="{"cN":"Footer nav_cont","cT":"Container","id":"c1c1m1r1a2","sN":1,"aN":"c1m1r1a2"}"> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-row_f95yq_57"> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58" data-m="{"cN":"footerNavColumn1_cont","cT":"Container","id":"c1c1c1m1r1a2","sN":1,"aN":"c1c1m1r1a2"}"> <div class="custom_widget_MicrosoftFooter_c-heading-4_f95yq_49" role="heading" aria-level="2">What's new</div> <ul class="custom_widget_MicrosoftFooter_c-list_f95yq_78 custom_widget_MicrosoftFooter_f-bare_f95yq_78"> <li> <a aria-label="Surface Pro 9 What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/d/surface-pro-9/93VKD8NP4FVK" data-m="{"cN":"Footer_WhatsNew_NewSurfacePro8_nav","id":"n1c1c1c1m1r1a2","sN":1,"aN":"c1c1c1m1r1a2"}">Surface Pro 9</a> </li> <li> <a aria-label="Surface Laptop 5 What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/d/surface-laptop-5/8XN49V61S1BN" data-m="{"cN":"Footer_WhatsNew_SurfaceLaptop2_nav","id":"n2c1c1c1m1r1a2","sN":2,"aN":"c1c1c1m1r1a2"}">Surface Laptop 5</a> </li> <li> <a aria-label="Surface Studio 2+ What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/d/surface-studio-2plus/8VLFQC3597K4" data-m="{"cN":"Footer_WhatsNew_SurfaceStudio_nav","id":"n3c1c1c1m1r1a2","sN":3,"aN":"c1c1c1m1r1a2"}">Surface Studio 2+</a> </li> <li> <a aria-label="Surface Laptop Go 2 What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/d/surface-laptop-go-2/8PGLPV76MJHN" data-m="{"cN":"Footer_WhatsNew_SurfaceLaptopGo_nav","id":"n4c1c1c1m1r1a2","sN":4,"aN":"c1c1c1m1r1a2"}">Surface Laptop Go 2</a> </li> <li> <a aria-label="Surface Laptop Studio What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/d/surface-laptop-studio/8SRDF62SWKPF" data-m="{"cN":"Footer_WhatsNew_SurfaceLaptopStudio_nav","id":"n5c1c1c1m1r1a2","sN":5,"aN":"c1c1c1m1r1a2"}">Surface Laptop Studio</a> </li> <li> <a aria-label="Surface Duo 2 What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/d/surface-duo-2/9408KGXP4XJL" data-m="{"cN":"Footer_WhatsNew_SurfaceDuo2_nav","id":"n6c1c1c1m1r1a2","sN":6,"aN":"c1c1c1m1r1a2"}">Surface Duo 2</a> </li> <li> <a aria-label="Microsoft 365 What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/microsoft-365" data-m="{"cN":"Whatsnew_Microsoft365_nav","id":"n7c1c1c1m1r1a2","sN":7,"aN":"c1c1c1m1r1a2"}">Microsoft 365</a> </li> <li> <a aria-label="Windows 11 apps What's new" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/windows/windows-11-apps" data-m="{"cN":"Footer_WhatsNew_Windows_11_apps_nav","id":"n8c1c1c1m1r1a2","sN":8,"aN":"c1c1c1m1r1a2"}">Windows 11 apps</a> </li> </ul> </div> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58" data-m="{"cN":"footerNavColumn2_cont","cT":"Container","id":"c2c1c1m1r1a2","sN":2,"aN":"c1c1m1r1a2"}"> <div class="custom_widget_MicrosoftFooter_c-heading-4_f95yq_49" role="heading" aria-level="2">Microsoft Store</div> <ul class="custom_widget_MicrosoftFooter_c-list_f95yq_78 custom_widget_MicrosoftFooter_f-bare_f95yq_78"> <li> <a aria-label="Account profile Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://account.microsoft.com/" data-m="{"cN":"Footer_StoreandSupport_AccountProfile_nav","id":"n1c2c1c1m1r1a2","sN":1,"aN":"c2c1c1m1r1a2"}">Account profile</a> </li> <li> <a aria-label="Download Center Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/download" data-m="{"cN":"Footer_StoreandSupport_DownloadCenter_nav","id":"n2c2c1c1m1r1a2","sN":2,"aN":"c2c1c1m1r1a2"}">Download Center</a> </li> <li> <a aria-label="Microsoft Store support Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://go.microsoft.com/fwlink/?linkid=2139749" data-m="{"cN":"Footer_StoreandSupport_SalesAndSupport_nav","id":"n3c2c1c1m1r1a2","sN":3,"aN":"c2c1c1m1r1a2"}">Microsoft Store support</a> </li> <li> <a aria-label="Returns Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://go.microsoft.com/fwlink/p/?LinkID=824764&clcid=0x409" data-m="{"cN":"MicrosoftStore_ExtendedHolidayReturns_nav","id":"n4c2c1c1m1r1a2","sN":4,"aN":"c2c1c1m1r1a2"}">Returns</a> </li> <li> <a aria-label="Order tracking Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://account.microsoft.com/orders" data-m="{"cN":"Footer_StoreandSupport_OrderTracking_nav","id":"n5c2c1c1m1r1a2","sN":5,"aN":"c2c1c1m1r1a2"}">Order tracking</a> </li> <li> <a aria-label="Virtual workshops and training Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/store/workshops-training-and-events?icid=vl_uf_932020" data-m="{"cN":"Footer_StoreandSupport_StoreLocations_nav","id":"n6c2c1c1m1r1a2","sN":6,"aN":"c2c1c1m1r1a2"}">Virtual workshops and training</a> </li> <li> <a aria-label="Microsoft Store Promise Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/store/b/why-microsoft-store?icid=footer_why-msft-store_7102020" data-m="{"cN":"Footer_StoreandSupport_MicrosoftPromise_nav","id":"n7c2c1c1m1r1a2","sN":7,"aN":"c2c1c1m1r1a2"}">Microsoft Store Promise</a> </li> <li> <a aria-label="Flexible Payments Microsoft Store" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/store/b/payment-financing-options?icid=footer_financing_vcc" data-m="{"cN":"Footer_StoreandSupport_Financing_nav","id":"n8c2c1c1m1r1a2","sN":8,"aN":"c2c1c1m1r1a2"}">Flexible Payments</a> </li> </ul> </div> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58" data-m="{"cN":"footerNavColumn3_cont","cT":"Container","id":"c3c1c1m1r1a2","sN":3,"aN":"c1c1m1r1a2"}"> <div class="custom_widget_MicrosoftFooter_c-heading-4_f95yq_49" role="heading" aria-level="2">Education</div> <ul class="custom_widget_MicrosoftFooter_c-list_f95yq_78 custom_widget_MicrosoftFooter_f-bare_f95yq_78"> <li> <a aria-label="Microsoft in education Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/education" data-m="{"cN":"Footer_Education_MicrosoftInEducation_nav","id":"n1c3c1c1m1r1a2","sN":1,"aN":"c3c1c1m1r1a2"}">Microsoft in education</a> </li> <li> <a aria-label="Devices for education Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/education/devices/overview" data-m="{"cN":"Footer_Education_DevicesforEducation_nav","id":"n2c3c1c1m1r1a2","sN":2,"aN":"c3c1c1m1r1a2"}">Devices for education</a> </li> <li> <a aria-label="Microsoft Teams for Education Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/education/products/teams" data-m="{"cN":"Footer_Education_MicrosoftTeamsforEducation_nav","id":"n3c3c1c1m1r1a2","sN":3,"aN":"c3c1c1m1r1a2"}">Microsoft Teams for Education</a> </li> <li> <a aria-label="Microsoft 365 Education Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/education/buy-license/microsoft365" data-m="{"cN":"Footer_Education_Microsoft365Education_nav","id":"n4c3c1c1m1r1a2","sN":4,"aN":"c3c1c1m1r1a2"}">Microsoft 365 Education</a> </li> <li> <a aria-label="Education consultation appointment Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/store/b/business-consultation?tab=educationconsultation&icid=CNavfooter_educationconsultation" data-m="{"cN":"Footer_Education_ConsultationAppointment_nav","id":"n5c3c1c1m1r1a2","sN":5,"aN":"c3c1c1m1r1a2"}">Education consultation appointment</a> </li> <li> <a aria-label="Educator training and development Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://education.microsoft.com/" data-m="{"cN":"Footer_Education_EducatorTrainingDevelopment_nav","id":"n6c3c1c1m1r1a2","sN":6,"aN":"c3c1c1m1r1a2"}">Educator training and development</a> </li> <li> <a aria-label="Deals for students and parents Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/store/b/education" data-m="{"cN":"Footer_Education_DealsForStudentsandParents_nav","id":"n7c3c1c1m1r1a2","sN":7,"aN":"c3c1c1m1r1a2"}">Deals for students and parents</a> </li> <li> <a aria-label="Azure for students Education" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://azure.microsoft.com/en-us/free/students/" data-m="{"cN":"Footer_Azureforstudents_nav","id":"n8c3c1c1m1r1a2","sN":8,"aN":"c3c1c1m1r1a2"}">Azure for students</a> </li> </ul> </div> </div> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-row_f95yq_57"> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58" data-m="{"cN":"footerNavColumn4_cont","cT":"Container","id":"c4c1c1m1r1a2","sN":4,"aN":"c1c1m1r1a2"}"> <div class="custom_widget_MicrosoftFooter_c-heading-4_f95yq_49" role="heading" aria-level="2">Business</div> <ul class="custom_widget_MicrosoftFooter_c-list_f95yq_78 custom_widget_MicrosoftFooter_f-bare_f95yq_78"> <li> <a aria-label="Microsoft Cloud Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/microsoft-cloud" data-m="{"cN":"Footer_Business_Microsoft_Cloud_nav","id":"n1c4c1c1m1r1a2","sN":1,"aN":"c4c1c1m1r1a2"}">Microsoft Cloud</a> </li> <li> <a aria-label="Microsoft Security Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/security" data-m="{"cN":"Footer_Business_Microsoft Security_nav","id":"n2c4c1c1m1r1a2","sN":2,"aN":"c4c1c1m1r1a2"}">Microsoft Security</a> </li> <li> <a aria-label="Dynamics 365 Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://dynamics.microsoft.com/en-us/" data-m="{"cN":"Footer_Business_MicrosoftDynamics365_nav","id":"n3c4c1c1m1r1a2","sN":3,"aN":"c4c1c1m1r1a2"}">Dynamics 365</a> </li> <li> <a aria-label="Microsoft 365 Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/microsoft-365/business/" data-m="{"cN":"More_Business_Microsoft365_nav","id":"n4c4c1c1m1r1a2","sN":4,"aN":"c4c1c1m1r1a2"}">Microsoft 365</a> </li> <li> <a aria-label="Microsoft Power Platform Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://powerplatform.microsoft.com/en-us/" data-m="{"cN":"Footer_DeveloperAndIT_Power Platform_nav","id":"n5c4c1c1m1r1a2","sN":5,"aN":"c4c1c1m1r1a2"}">Microsoft Power Platform</a> </li> <li> <a aria-label="Microsoft Teams Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m="{"cN":"Footer_Business_Microsoft365_nav","id":"n6c4c1c1m1r1a2","sN":6,"aN":"c4c1c1m1r1a2"}">Microsoft Teams</a> </li> <li> <a aria-label="Microsoft Industry Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/industry" data-m="{"cN":"Footer_Business_MicrosoftIndustry_nav","id":"n7c4c1c1m1r1a2","sN":7,"aN":"c4c1c1m1r1a2"}">Microsoft Industry</a> </li> <li> <a aria-label="Small Business Business" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/store/b/business?icid=CNavBusinessStore" data-m="{"cN":"Footer_Business-SmallBusiness_nav","id":"n8c4c1c1m1r1a2","sN":8,"aN":"c4c1c1m1r1a2"}">Small Business</a> </li> </ul> </div> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58" data-m="{"cN":"footerNavColumn5_cont","cT":"Container","id":"c5c1c1m1r1a2","sN":5,"aN":"c1c1m1r1a2"}"> <div class="custom_widget_MicrosoftFooter_c-heading-4_f95yq_49" role="heading" aria-level="2">Developer & IT</div> <ul class="custom_widget_MicrosoftFooter_c-list_f95yq_78 custom_widget_MicrosoftFooter_f-bare_f95yq_78"> <li> <a aria-label="Azure Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://azure.microsoft.com/en-us/" data-m="{"cN":"Footer_Enterprise_MicrosoftAzure_nav","id":"n1c5c1c1m1r1a2","sN":1,"aN":"c5c1c1m1r1a2"}">Azure</a> </li> <li> <a aria-label="Developer Center Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://developer.microsoft.com/en-us/" data-m="{"cN":"Footer_Developer_DeveloperCenter_nav","id":"n2c5c1c1m1r1a2","sN":2,"aN":"c5c1c1m1r1a2"}">Developer Center</a> </li> <li> <a aria-label="Documentation Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://learn.microsoft.com/docs/" data-m="{"cN":"Footer_DeveloperAndIT_Documentation_nav","id":"n3c5c1c1m1r1a2","sN":3,"aN":"c5c1c1m1r1a2"}">Documentation</a> </li> <li> <a aria-label="Microsoft Learn Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://learn.microsoft.com/" data-m="{"cN":"Footer_DeveloperAndIT_MicrosoftLearn_nav","id":"n4c5c1c1m1r1a2","sN":4,"aN":"c5c1c1m1r1a2"}">Microsoft Learn</a> </li> <li> <a aria-label="Microsoft Tech Community Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://techcommunity.microsoft.com/" data-m="{"cN":"Footer_DeveloperAndIT_MicrosoftTechCommunity_nav","id":"n5c5c1c1m1r1a2","sN":5,"aN":"c5c1c1m1r1a2"}">Microsoft Tech Community</a> </li> <li> <a aria-label="Azure Marketplace Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://azuremarketplace.microsoft.com/en-us/" data-m="{"cN":"More_DeveloperAndIT_AzureMarketplace_nav","id":"n6c5c1c1m1r1a2","sN":6,"aN":"c5c1c1m1r1a2"}">Azure Marketplace</a> </li> <li> <a aria-label="AppSource Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://appsource.microsoft.com/en-us/" data-m="{"cN":"Footer_DeveloperAndIT_AppSource_nav","id":"n7c5c1c1m1r1a2","sN":7,"aN":"c5c1c1m1r1a2"}">AppSource</a> </li> <li> <a aria-label="Visual Studio Developer & IT" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://visualstudio.microsoft.com/" data-m="{"cN":"Footer_Developer_MicrosoftVisualStudio_nav","id":"n8c5c1c1m1r1a2","sN":8,"aN":"c5c1c1m1r1a2"}">Visual Studio</a> </li> </ul> </div> <div class="custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58" data-m="{"cN":"footerNavColumn6_cont","cT":"Container","id":"c6c1c1m1r1a2","sN":6,"aN":"c1c1m1r1a2"}"> <div class="custom_widget_MicrosoftFooter_c-heading-4_f95yq_49" role="heading" aria-level="2">Company</div> <ul class="custom_widget_MicrosoftFooter_c-list_f95yq_78 custom_widget_MicrosoftFooter_f-bare_f95yq_78"> <li> <a aria-label="Careers Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://careers.microsoft.com/" data-m="{"cN":"Footer_Company_Careers_nav","id":"n1c6c1c1m1r1a2","sN":1,"aN":"c6c1c1m1r1a2"}">Careers</a> </li> <li> <a aria-label="About Microsoft Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/about" data-m="{"cN":"Footer_Company_AboutMicrosoft_nav","id":"n2c6c1c1m1r1a2","sN":2,"aN":"c6c1c1m1r1a2"}">About Microsoft</a> </li> <li> <a aria-label="Company news Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://news.microsoft.com/" data-m="{"cN":"Footer_Company_CompanyNews_nav","id":"n3c6c1c1m1r1a2","sN":3,"aN":"c6c1c1m1r1a2"}">Company news</a> </li> <li> <a aria-label="Privacy at Microsoft Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://privacy.microsoft.com/en-us" data-m="{"cN":"Footer_Company_PrivacyAtMicrosoft_nav","id":"n4c6c1c1m1r1a2","sN":4,"aN":"c6c1c1m1r1a2"}">Privacy at Microsoft</a> </li> <li> <a aria-label="Investors Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/investor/default.aspx" data-m="{"cN":"Footer_Company_Investors_nav","id":"n5c6c1c1m1r1a2","sN":5,"aN":"c6c1c1m1r1a2"}">Investors</a> </li> <li> <a aria-label="Diversity and inclusion Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/diversity/" data-m="{"cN":"Footer_Company_DiversityAndInclusion_nav","id":"n6c6c1c1m1r1a2","sN":6,"aN":"c6c1c1m1r1a2"}">Diversity and inclusion</a> </li> <li> <a aria-label="Accessibility Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/accessibility" data-m="{"cN":"Footer_Company_Accessibility_nav","id":"n7c6c1c1m1r1a2","sN":7,"aN":"c6c1c1m1r1a2"}">Accessibility</a> </li> <li> <a aria-label="Sustainability Company" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/sustainability/" data-m="{"cN":"Footer_Company_Sustainability_nav","id":"n8c6c1c1m1r1a2","sN":8,"aN":"c6c1c1m1r1a2"}">Sustainability</a> </li> </ul> </div> </div> </nav> <div class="custom_widget_MicrosoftFooter_c-uhff-base_f95yq_94"> <a data-m="{"id":"n8c1c1m1r1a2","sN":8,"aN":"c1c1m1r1a2"}" href="https://aka.ms/yourcaliforniaprivacychoices" class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12 custom_widget_MicrosoftFooter_c-uhff-ccpa_f95yq_107"> <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43"> <title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path> </svg> <span>Your Privacy Choices</span> </a> <nav aria-label="Microsoft corporate links"> <ul class="custom_widget_MicrosoftFooter_c-list_f95yq_78 custom_widget_MicrosoftFooter_f-bare_f95yq_78" data-m="{"cN":"Corp links_cont","cT":"Container","id":"c8c1c1m1r1a2","sN":8,"aN":"c1c1m1r1a2"}"> <li id="c-uhff-footer_sitemap"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://www.microsoft.com/en-us/sitemap1.aspx" data-mscc-ic="false" data-m="{"cN":"Footer_Sitemap_nav","id":"n1c8c1c1m1r1a2","sN":1,"aN":"c8c1c1m1r1a2"}">Sitemap</a> </li> <li id="c-uhff-footer_contactus"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://support.microsoft.com/contactus" data-mscc-ic="false" data-m="{"cN":"Footer_ContactUs_nav","id":"n2c8c1c1m1r1a2","sN":2,"aN":"c8c1c1m1r1a2"}">Contact Microsoft</a> </li> <li id="c-uhff-footer_privacyandcookies"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-mscc-ic="false" data-m="{"cN":"Footer_PrivacyandCookies_nav","id":"n3c8c1c1m1r1a2","sN":3,"aN":"c8c1c1m1r1a2"}">Privacy </a> </li> <li class="x-hidden" id="c-uhff-footer_managecookies"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="javascript:manageConsent();" data-mscc-ic="false" data-m="{"cN":"Footer_ManageCookies_nav","id":"n4c8c1c1m1r1a2","sN":4,"aN":"c8c1c1m1r1a2"}">Manage cookies</a> </li> <li id="c-uhff-footer_termsofuse"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://go.microsoft.com/fwlink/?LinkID=206977" data-mscc-ic="false" data-m="{"cN":"Footer_TermsOfUse_nav","id":"n5c8c1c1m1r1a2","sN":5,"aN":"c8c1c1m1r1a2"}">Terms of use</a> </li> <li id="c-uhff-footer_trademarks"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://go.microsoft.com/fwlink/?linkid=2196228" data-mscc-ic="false" data-m="{"cN":"Footer_Trademarks_nav","id":"n6c8c1c1m1r1a2","sN":6,"aN":"c8c1c1m1r1a2"}">Trademarks</a> </li> <li id="c-uhff-footer_safetyandeco"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://go.microsoft.com/fwlink/?linkid=2196227" data-mscc-ic="false" data-m="{"cN":"Footer_SafetyAndEco_nav","id":"n7c8c1c1m1r1a2","sN":7,"aN":"c8c1c1m1r1a2"}">Safety & eco</a> </li> <li id="c-uhff-footer_aboutourads"> <a class="custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12" href="https://choice.microsoft.com" data-mscc-ic="false" data-m="{"cN":"Footer_AboutourAds_nav","id":"n8c8c1c1m1r1a2","sN":8,"aN":"c8c1c1m1r1a2"}">About our ads</a> </li> <li>© Microsoft 2024</li> </ul> </nav> </div> </footer></section></article></div></footer></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{"locale":"en-US","tenant":{"id":"o365.prod","enabled":true,"auroraHost":"https://techcommunity.microsoft.com","host":"https://techcommunity.microsoft.com","phase":"prod","community":"gxcuf89792","ssl":true,"basePath":"","liaContextPath":"/t5/s","sameSite":true,"useEncodedIds":false,"publicConfig":{"repoName":"o365","moduleFederationHost":"https://aurora-customization-usw2.lithium.com","mainBranchName":"main","sdkEnabled":false,"auroraAnalyticsEnabled":true,"auroraAuditEnabled":false,"auroraFeaturedWidgetsEnabled":true,"auroraFeaturedContentTopicMessagesLimit":50,"auroraFeaturedPlacesNodesLimit":50,"auroraUnreleasedSettingsEnabled":false,"googleMapsApiKey":"AIzaSyCU2qaVJD5yWJQJannmoRnvql4qTowFcrQ","labelsEnabled":true,"pendoEnabled":false,"pendoApiKey":"16d69dfe-7be6-4eb7-59b7-708c84e89099","reCaptchaV3Enabled":true,"reCaptchaV3ScoreThreshold":0.5,"reCaptchaV3SiteKey":"6LcfUxUcAAAAAH1DBxd4uJIxf5ITF4YwCRUVJHsY","supportedLanguages":["en-US","es-ES","fr-FR","ja-JP","it-IT","nl-NL","pt-BR","pt-PT","ru-RU","pl-PL","de-DE"],"trafficVisitorCookieMaxAge":31536000,"videosFileType":[".wmv",".avi",".mov",".moov",".mpg",".mpeg",".m2t",".m2v",".vob",".flv",".mp4",".mpg4",".mkv",".asf",".m4v",".m2p",".3gp",".3g2",".f4v",".mp3",".m4a",".wma",".aac"],"sitemapEnabled":true,"quiltsV2Enabled":true,"multiTemplatesEnabled":true,"localizedQuiltWrapperEnabled":false,"samlEnabled":false,"ssoAllowNormalSignon":false,"ideasEnabled":true,"occasionsEnabled":true,"oidcssEnabled":true,"oidcssPostLogoutEndpointEnabled":false,"jwtSsoEnabled":false,"multiAuthEnabled":false,"multiAuthLocalisation":false,"inviteByEmailForGrouphubsEnabled":true,"switchUserFeatureEnabled":true,"messageStatusEnabled":true,"videoEnabled":false,"externalVideoEnabled":true,"salesforceIntegrationEnabled":false,"casePortalEnabled":false,"resetPermissionsEnabled":false,"closeAccountEnabled":true,"threadSummaryLimit":-1,"maxFeaturedGuestForEvents":10,"auroraEndpointsEnabled":true,"anonymousUserDeletionEnabled":false,"poweredByLogoEnabled":true,"endpointReloadInterval":120000,"maxOpenStreamsForEndpoints":0,"endpointBranchCompareIncludeFilter":"*.js,*.json,*.graphql","showExternalVideoCookieBanner":true,"maxGuidesAndContentLimit":500,"auroraThirdPartyAnalyticsEnabled":false,"contentArchiveEnabled":true,"auroraFirehoseEnabled":false,"auroraFirehoseFilterEventsEnabled":false,"mentionsEnabled":true,"featuredGuideLimit":50},"fresh":true,"useBasicAuth":false,"baseUrl":"https://techcommunity.microsoft.com"},"routeInfo":{"path":"/blog/desenvolvedoresbr/escalando-nodes-e-pods-no-aks/4221166","pageName":"BlogMessagePage"},"csrfToken":"960d80ae625466cf7ca90bab66cdb202232c31fd418e8b887a8922ce89368eefac770de3302f9643004ae1ba952c3dea3e1df28852c81310570de95b19760454","authToken":{"token":"Bearer Lfpf0HhfQGfLTbZuc9yAcQ/VIDwObvZd4qdWG20wkPA=","expires":86400,"headerName":"Authorization","providerName":"OAUTH2_CC_None"},"switchUserId":null,"isCrawler":false,"apolloState":{"Community:community:gxcuf89792":{"__typename":"Community","id":"community:gxcuf89792","ssoProperties":{"__typename":"SsoProperties","ssoEnabled":{"__typename":"PolicyResult","failureReason":null},"communitySignUpUrl":"/t5/s/gxcuf89792/auth/oidcss/sso_login_redirect/provider/default","communitySignOnUrl":"/t5/s/gxcuf89792/auth/oidcss/sso_login_redirect/provider/default","communitySignOffUrl":"","khorosSignUpUrl":"","khorosSignOnUrl":"","khorosSignOffUrl":"","samlSignOnUrl":"","samlSignOffUrl":"","oidcssSignOnUrl":"","oidcssSignOffUrl":"","jwtSsoSignOnUrl":null,"jwtSsoSignOffUrl":null,"ssoBounceUrl":"","ssoQsParam":"referer"},"samlProperties":{"__typename":"SamlProperties","samlEnabled":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.saml.enabled.accessDenied","key":"error.lithium.policies.feature.saml.enabled.accessDenied","args":[]}},"registerQueryStringEnabled":false,"registerQueryStringValue":"","registerQueryStringEncodeValueEnabled":false,"loginQueryStringEnabled":false,"loginQueryStringValue":"","loginQueryStringEncodeValueEnabled":false,"idpBindingType":"post","idpOneBindingType":"post","idpTwoBindingType":"post"},"seoProperties":{"__typename":"SeoProperties","customOGSiteName":"TECHCOMMUNITY.MICROSOFT.COM","appendTopicUidInHead":false,"linkCommentToTimeStamp":true,"lowercasePath":true},"languageProperties":{"__typename":"LanguageProperties","language":"en-US"},"cookieProperties":{"__typename":"CookieProperties","cookiePrivacyPolicyUrl":"","isCookieBannerEnabled":false},"searchProperties":{"__typename":"SearchProperties","chatProperties":{"__typename":"ChatProperties","brandMessengerWidgetId":"","brandMessengerCompanyKey":"","brandMessengerScriptSource":"","brandMessengerElementSelector":""}},"knowledgeBaseProperties":{"__typename":"KnowledgeBaseProperties","isGuidesAndChaptersEnabled":true},"communityPolicies":{"__typename":"CommunityPolicies","localizedCategoriesFeatureEnabled":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.localized_categories.enabled.accessDenied","key":"error.lithium.policies.feature.localized_categories.enabled.accessDenied","args":[]}}},"badgeProperties":{"__typename":"BadgeProperties","enabled":{"__typename":"PolicyResult","failureReason":null}},"timezoneProperties":{"__typename":"TimezoneProperties","timezone":"US/Pacific"},"displayId":"gxcuf89792","nodeType":"community","title":"Microsoft Community Hub","seoTitle":null,"description":"","avatar":null,"userContext":{"__typename":"NodeUserContext","canUpdateNode":false},"depth":0,"entityType":"COMMUNITY","shortTitle":"Home"},"ROOT_QUERY":{"__typename":"Query","community":{"__ref":"Community:community:gxcuf89792"},"allowedLanguages":["en-US"],"authProviders":[],"cachedAsset({\"assetId\":\"pages\",\"assetType\":\"pages\",\"lastModified\":\"000\"})":{"__ref":"CachedAsset:pages-1732228016755"},"cachedText({\"locale\":\"en-US\",\"namespaces\":[\"components/context/AppContext/AppContextProvider\"]})":[{"__ref":"CachedAsset:text:en_US-components/context/AppContext/AppContextProvider-0"}],"cachedText({\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/Loading/LoadingDot\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-0"}],"self":{"__ref":"User:user:-1"},"theme({\"nodeId\":null})":{"__typename":"ThemeResponse","result":{"__ref":"Theme:customTheme1"}},"canAccess":true,"canRegister":true,"componentsLastModified":"1732228088639","quiltLastModified":"1732228013874","pagesLastModified":"1732228016755","pageScriptsLastModified":"1732228096543","textLastModified":"1731977288000","themeLastModified":"1732228015673","fieldDefinitionsLastModified":"1730139072000","entityDefinitionsLastModified":"1730139072000","quiltWrapperLastModified":"1732227962288","coreNode({\"id\":\"board:desenvolvedoresbr\"})":{"__ref":"Blog:board:DesenvolvedoresBR"},"message({\"id\":\"message:4221166\"})":{"__ref":"BlogTopicMessage:message:4221166"},"theme({\"nodeId\":\"board:DesenvolvedoresBR\"})":{"__typename":"ThemeResponse","result":{"__ref":"Theme:customTheme1"}},"cachedAsset({\"assetId\":\"pages\",\"assetType\":\"pages\",\"lastModified\":\"1732228016755\"})":{"__ref":"CachedAsset:pages-1732228016755"},"cachedAsset({\"assetId\":\"customTheme1\",\"assetType\":\"theme\",\"lastModified\":\"1732228015673\",\"locale\":null,\"node\":null})":{"__ref":"CachedAsset:theme:customTheme1-1732228015673"},"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/common/EmailVerification\"]})":[{"__ref":"CachedAsset:text:en_US-components/common/EmailVerification-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/Loading/LoadingDot\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1731977288000"}],"cachedAsset({\"assetId\":\"pages/blogs/BlogMessagePage\",\"assetType\":\"quilt\",\"lastModified\":\"1732228013874\",\"locale\":null,\"node\":\"board:DesenvolvedoresBR\"})":{"__ref":"CachedAsset:quilt:o365.prod:pages/blogs/BlogMessagePage:board:DesenvolvedoresBR-1732228013874"},"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"pages/blogs/BlogMessagePage\"]})":[{"__ref":"CachedAsset:text:en_US-pages/blogs/BlogMessagePage-1731977288000"}],"cachedAsset({\"assetId\":\"Common\",\"assetType\":\"quiltWrapper\",\"lastModified\":\"1732227962288\",\"locale\":null,\"node\":null})":{"__ref":"CachedAsset:quiltWrapper:o365.prod:Common:1732227962288"},"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/common/ActionFeedback\"]})":[{"__ref":"CachedAsset:text:en_US-components/common/ActionFeedback-1731977288000"}],"cachedAsset({\"assetId\":\"custom.widget.HeroBanner-en-US\",\"assetType\":\"component\",\"lastModified\":\"1732228088639\",\"locale\":null,\"node\":null})":{"__ref":"CachedAsset:component:custom.widget.HeroBanner-en-1732228088639"},"cachedAsset({\"assetId\":\"custom.widget.Social_Sharing-en-US\",\"assetType\":\"component\",\"lastModified\":\"1732228088639\",\"locale\":null,\"node\":null})":{"__ref":"CachedAsset:component:custom.widget.Social_Sharing-en-1732228088639"},"cachedAsset({\"assetId\":\"custom.widget.MicrosoftFooter-en-US\",\"assetType\":\"component\",\"lastModified\":\"1732228088639\",\"locale\":null,\"node\":null})":{"__ref":"CachedAsset:component:custom.widget.MicrosoftFooter-en-1732228088639"},"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/Breadcrumb\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/Breadcrumb-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageBanner\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageBanner-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageView/MessageViewStandard\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageView/MessageViewStandard-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageReplyCallToAction\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageReplyCallToAction-1731977288000"}],"coreNodes({\"constraints\":{\"id\":{\"in\":[\"community:gxcuf89792\",\"category:microsoft365\",\"category:MicrosoftTeams\",\"category:Windows\",\"category:MicrosoftSecurityandCompliance\",\"category:Outlook\",\"category:Planner\",\"category:Windows-Server\",\"category:Azure\",\"category:Exchange\",\"category:microsoft-endpoint-manager\",\"category:SQL-Server\",\"category:EducationSector\",\"category:AI\",\"category:ITOpsTalk\",\"category:PartnerCommunity\",\"category:MicrosoftMechanics\",\"category:HealthcareAndLifeSciences\",\"category:PublicSector\",\"category:IoT\",\"category:DrivingAdoption\",\"category:SMB\",\"category:StartupsatMicrosoft\",\"category:MicrosoftLearn\",\"category:MicrosoftLearn\",\"board:MicrosoftLearnBlog\",\"category:Community-Info-Center\"]}},\"first\":27})":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:gxcuf89792"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:Exchange"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:Planner"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:Outlook"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:Community-Info-Center"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:EducationSector"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:DrivingAdoption"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:Azure"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:Windows-Server"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:SQL-Server"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:MicrosoftTeams"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:PublicSector"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:microsoft365"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:IoT"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:HealthcareAndLifeSciences"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:SMB"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:ITOpsTalk"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:microsoft-endpoint-manager"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:MicrosoftSecurityandCompliance"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:MicrosoftLearn"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Blog:board:MicrosoftLearnBlog"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:AI"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:MicrosoftMechanics"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:StartupsatMicrosoft"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:PartnerCommunity"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:Windows"}}]},"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/Navbar\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/Navbar-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarHamburgerDropdown\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/BrandLogo\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/BrandLogo-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarTextLinks\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarTextLinks-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/authentication/AuthenticationLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/nodes/NodeLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/nodes/NodeLink-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageCoverImage\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageCoverImage-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeTitle\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeTitle-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTimeToRead\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTimeToRead-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageSubject\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageSubject-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserLink-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserRank\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserRank-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTime\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTime-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageBody\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageBody-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageCustomFields\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageCustomFields-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageRevision\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageRevision-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/QueryHandler\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageReplyButton\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageReplyButton-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageAuthorBio\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/customComponent/CustomComponent\"]})":[{"__ref":"CachedAsset:text:en_US-components/customComponent/CustomComponent-1731977288000"}],"component({\"componentId\":\"custom.widget.Social_Sharing\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[\"board:DesenvolvedoresBR\",\"message:4221166\"],\"name\":\"BlogMessagePage\",\"props\":{},\"url\":\"https://techcommunity.microsoft.com\"}}})":{"__typename":"ComponentRenderResult","html":"\u003cdiv class=\"social-share\"\u003e \u003cul class=\"sharing-options\"\u003e \u003cli\u003e \u003ca class=\"social-share-linkedin\" href=\"http://www.linkedin.com/shareArticle?mini=true\u0026url=https://techcommunity.microsoft.com\" target=\"_blank\"\u003e \u003cimg alt=\"Share to LinkedIn\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-linkedin.svg\" /\u003e \u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca class=\"social-share-facebook\" href=\"http://www.facebook.com/share.php?u=https://techcommunity.microsoft.com\" target=\"_blank\"\u003e \u003cimg alt=\"Share to Facebook\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-facebook.svg\" /\u003e \u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca class=\"social-share-x\" href=\"http://twitter.com/share?text=Check out this post on the Microsoft Tech Community : BlogMessagePage\u0026url=https://techcommunity.microsoft.com\" target=\"_blank\"\u003e \u003cimg alt=\"Share to X\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-x.svg\" /\u003e \u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca class=\"social-share-reddit\" href=\"http://www.reddit.com/submit?url=https://techcommunity.microsoft.com\u0026title=Check%20out%20this%20post%20on%20Microsoft%20Tech%20Community\" target=\"_blank\"\u003e \u003cimg alt=\"Share to Reddit\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-reddit.svg\" /\u003e \u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca class=\"social-share-email\" href=\"mailto:?subject=\u0026body=I found this on the Microsoft Tech Community and wanted to share it with you, check it out : https://techcommunity.microsoft.com\" target=\"_blank\"\u003e \u003cimg alt=\"Share to Email\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/social-share-email.svg\" /\u003e \u003c/a\u003e \u003c/li\u003e \u003cli class=\"social-share-rss\" id=\"RSS\"\u003e \u003ca class=\"social-share-rss\" href=\"/t5/s/gxcuf89792/rss/board?board.id=DesenvolvedoresBR\" target=\"_blank\"\u003e \u003cimg alt=\"Subscribe to RSS\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/m_assets/components/Social_Sharing/assets/rss.svg\" /\u003e \u003c/a\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/ul\u003e"}},"coreNode({\"id\":\"board:DesenvolvedoresBR\"})":{"__ref":"Blog:board:DesenvolvedoresBR"},"component({\"componentId\":\"custom.widget.MicrosoftFooter\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[\"board:DesenvolvedoresBR\",\"message:4221166\"],\"name\":\"BlogMessagePage\",\"props\":{},\"url\":\"https://techcommunity.microsoft.com\"}}})":{"__typename":"ComponentRenderResult","html":"\u003cfooter id=\"uhf-footer\" class=\"c-uhff context-uhf\" data-uhf-mscc-rq=\"false\" data-footer-footprint=\"/MSTechnical/MSTechnicalFooter, fromService: True\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Uhf footer_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;m1r1a2\u0026quot;}\"\u003e \u003cnav class=\"c-uhff-nav\" aria-label=\"Footer Resource links\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer nav_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c1m1r1a2\u0026quot;}\"\u003e \u003cdiv class=\"c-uhff-nav-row\"\u003e \u003cdiv class=\"c-uhff-nav-group\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;footerNavColumn1_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\"\u003e \u003cdiv class=\"c-heading-4\" role=\"heading\" aria-level=\"2\"\u003eWhat's new\u003c/div\u003e \u003cul class=\"c-list f-bare\"\u003e \u003cli\u003e \u003ca aria-label=\"Surface Pro 9 What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/d/surface-pro-9/93VKD8NP4FVK\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_WhatsNew_NewSurfacePro8_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n1c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eSurface Pro 9\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Surface Laptop 5 What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/d/surface-laptop-5/8XN49V61S1BN\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_WhatsNew_SurfaceLaptop2_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n2c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eSurface Laptop 5\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Surface Studio 2+ What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/d/surface-studio-2plus/8VLFQC3597K4\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_WhatsNew_SurfaceStudio_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n3c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eSurface Studio 2+\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Surface Laptop Go 2 What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/d/surface-laptop-go-2/8PGLPV76MJHN\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_WhatsNew_SurfaceLaptopGo_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n4c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eSurface Laptop Go 2\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Surface Laptop Studio What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/d/surface-laptop-studio/8SRDF62SWKPF\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_WhatsNew_SurfaceLaptopStudio_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n5c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eSurface Laptop Studio\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Surface Duo 2 What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/d/surface-duo-2/9408KGXP4XJL\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_WhatsNew_SurfaceDuo2_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n6c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eSurface Duo 2\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft 365 What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/microsoft-365\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Whatsnew_Microsoft365_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n7c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:7,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft 365\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Windows 11 apps What's new\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/windows/windows-11-apps\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_WhatsNew_Windows_11_apps_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n8c1c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c1c1c1m1r1a2\u0026quot;}\"\u003eWindows 11 apps\u003c/a\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003cdiv class=\"c-uhff-nav-group\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;footerNavColumn2_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\"\u003e \u003cdiv class=\"c-heading-4\" role=\"heading\" aria-level=\"2\"\u003eMicrosoft Store\u003c/div\u003e \u003cul class=\"c-list f-bare\"\u003e \u003cli\u003e \u003ca aria-label=\"Account profile Microsoft Store\" class=\"c-uhff-link\" href=\"https://account.microsoft.com/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_StoreandSupport_AccountProfile_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n1c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eAccount profile\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Download Center Microsoft Store\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/download\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_StoreandSupport_DownloadCenter_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n2c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eDownload Center\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Store support Microsoft Store\" class=\"c-uhff-link\" href=\"https://go.microsoft.com/fwlink/?linkid=2139749\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_StoreandSupport_SalesAndSupport_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n3c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Store support\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Returns Microsoft Store\" class=\"c-uhff-link\" href=\"https://go.microsoft.com/fwlink/p/?LinkID=824764\u0026amp;clcid=0x409\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;MicrosoftStore_ExtendedHolidayReturns_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n4c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eReturns\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Order tracking Microsoft Store\" class=\"c-uhff-link\" href=\"https://account.microsoft.com/orders\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_StoreandSupport_OrderTracking_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n5c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eOrder tracking\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Virtual workshops and training Microsoft Store\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/store/workshops-training-and-events?icid=vl_uf_932020\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_StoreandSupport_StoreLocations_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n6c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eVirtual workshops and training\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Store Promise Microsoft Store\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/store/b/why-microsoft-store?icid=footer_why-msft-store_7102020\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_StoreandSupport_MicrosoftPromise_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n7c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:7,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Store Promise\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Flexible Payments Microsoft Store\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/store/b/payment-financing-options?icid=footer_financing_vcc\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_StoreandSupport_Financing_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n8c2c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c2c1c1m1r1a2\u0026quot;}\"\u003eFlexible Payments\u003c/a\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003cdiv class=\"c-uhff-nav-group\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;footerNavColumn3_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\"\u003e \u003cdiv class=\"c-heading-4\" role=\"heading\" aria-level=\"2\"\u003eEducation\u003c/div\u003e \u003cul class=\"c-list f-bare\"\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft in education Education\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/education\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Education_MicrosoftInEducation_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n1c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft in education\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Devices for education Education\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/education/devices/overview\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Education_DevicesforEducation_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n2c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eDevices for education\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Teams for Education Education\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/education/products/teams\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Education_MicrosoftTeamsforEducation_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n3c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Teams for Education\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft 365 Education Education\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/education/buy-license/microsoft365\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Education_Microsoft365Education_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n4c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft 365 Education\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Education consultation appointment Education\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/store/b/business-consultation?tab=educationconsultation\u0026amp;icid=CNavfooter_educationconsultation\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Education_ConsultationAppointment_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n5c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eEducation consultation appointment\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Educator training and development Education\" class=\"c-uhff-link\" href=\"https://education.microsoft.com/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Education_EducatorTrainingDevelopment_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n6c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eEducator training and development\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Deals for students and parents Education\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/store/b/education\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Education_DealsForStudentsandParents_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n7c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:7,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eDeals for students and parents\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Azure for students Education\" class=\"c-uhff-link\" href=\"https://azure.microsoft.com/en-us/free/students/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Azureforstudents_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n8c3c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c3c1c1m1r1a2\u0026quot;}\"\u003eAzure for students\u003c/a\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"c-uhff-nav-row\"\u003e \u003cdiv class=\"c-uhff-nav-group\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;footerNavColumn4_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\"\u003e \u003cdiv class=\"c-heading-4\" role=\"heading\" aria-level=\"2\"\u003eBusiness\u003c/div\u003e \u003cul class=\"c-list f-bare\"\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Cloud Business\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/microsoft-cloud\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Business_Microsoft_Cloud_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n1c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Cloud\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Security Business\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/security\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Business_Microsoft Security_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n2c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Security\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Dynamics 365 Business\" class=\"c-uhff-link\" href=\"https://dynamics.microsoft.com/en-us/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Business_MicrosoftDynamics365_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n3c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eDynamics 365\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft 365 Business\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/microsoft-365/business/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;More_Business_Microsoft365_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n4c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft 365\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Power Platform Business\" class=\"c-uhff-link\" href=\"https://powerplatform.microsoft.com/en-us/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_DeveloperAndIT_Power Platform_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n5c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Power Platform\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Teams Business\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/microsoft-teams/group-chat-software\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Business_Microsoft365_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n6c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Teams\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Industry Business\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/industry\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Business_MicrosoftIndustry_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n7c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:7,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Industry\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Small Business Business\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/store/b/business?icid=CNavBusinessStore\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Business-SmallBusiness_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n8c4c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c4c1c1m1r1a2\u0026quot;}\"\u003eSmall Business\u003c/a\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003cdiv class=\"c-uhff-nav-group\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;footerNavColumn5_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\"\u003e \u003cdiv class=\"c-heading-4\" role=\"heading\" aria-level=\"2\"\u003eDeveloper \u0026amp; IT\u003c/div\u003e \u003cul class=\"c-list f-bare\"\u003e \u003cli\u003e \u003ca aria-label=\"Azure Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://azure.microsoft.com/en-us/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Enterprise_MicrosoftAzure_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n1c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eAzure\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Developer Center Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://developer.microsoft.com/en-us/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Developer_DeveloperCenter_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n2c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eDeveloper Center\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Documentation Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://learn.microsoft.com/docs/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_DeveloperAndIT_Documentation_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n3c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eDocumentation\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Learn Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://learn.microsoft.com/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_DeveloperAndIT_MicrosoftLearn_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n4c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Learn\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Microsoft Tech Community Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://techcommunity.microsoft.com/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_DeveloperAndIT_MicrosoftTechCommunity_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n5c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eMicrosoft Tech Community\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Azure Marketplace Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://azuremarketplace.microsoft.com/en-us/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;More_DeveloperAndIT_AzureMarketplace_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n6c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eAzure Marketplace\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"AppSource Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://appsource.microsoft.com/en-us/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_DeveloperAndIT_AppSource_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n7c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:7,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eAppSource\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Visual Studio Developer \u0026amp; IT\" class=\"c-uhff-link\" href=\"https://visualstudio.microsoft.com/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Developer_MicrosoftVisualStudio_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n8c5c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c5c1c1m1r1a2\u0026quot;}\"\u003eVisual Studio\u003c/a\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003cdiv class=\"c-uhff-nav-group\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;footerNavColumn6_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\"\u003e \u003cdiv class=\"c-heading-4\" role=\"heading\" aria-level=\"2\"\u003eCompany\u003c/div\u003e \u003cul class=\"c-list f-bare\"\u003e \u003cli\u003e \u003ca aria-label=\"Careers Company\" class=\"c-uhff-link\" href=\"https://careers.microsoft.com/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_Careers_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n1c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003eCareers\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"About Microsoft Company\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/about\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_AboutMicrosoft_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n2c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003eAbout Microsoft\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Company news Company\" class=\"c-uhff-link\" href=\"https://news.microsoft.com/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_CompanyNews_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n3c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003eCompany news\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Privacy at Microsoft Company\" class=\"c-uhff-link\" href=\"https://privacy.microsoft.com/en-us\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_PrivacyAtMicrosoft_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n4c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003ePrivacy at Microsoft\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Investors Company\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/investor/default.aspx\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_Investors_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n5c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003eInvestors\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Diversity and inclusion Company\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/diversity/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_DiversityAndInclusion_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n6c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003eDiversity and inclusion\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Accessibility Company\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/accessibility\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_Accessibility_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n7c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:7,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003eAccessibility\u003c/a\u003e \u003c/li\u003e \u003cli\u003e \u003ca aria-label=\"Sustainability Company\" class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/sustainability/\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Company_Sustainability_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n8c6c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c6c1c1m1r1a2\u0026quot;}\"\u003eSustainability\u003c/a\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/div\u003e \u003c/div\u003e \u003c/nav\u003e \u003cdiv class=\"c-uhff-base\"\u003e \u003ca data-m=\"{\u0026quot;id\u0026quot;:\u0026quot;n8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\" href=\"https://aka.ms/yourcaliforniaprivacychoices\" class=\"c-uhff-link c-uhff-ccpa\"\u003e \u003csvg role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 14\" xml:space=\"preserve\" height=\"16\" width=\"43\"\u003e \u003ctitle\u003eCalifornia Consumer Privacy Act (CCPA) Opt-Out Icon\u003c/title\u003e \u003cpath d=\"M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z\" style=\"fill-rule:evenodd;clip-rule:evenodd;fill:#fff\"\u003e\u003c/path\u003e \u003cpath d=\"M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z\" style=\"fill-rule:evenodd;clip-rule:evenodd;fill:#06f\"\u003e\u003c/path\u003e \u003cpath d=\"M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z\" style=\"fill:#fff\"\u003e\u003c/path\u003e \u003cpath d=\"M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z\" style=\"fill:#06f\"\u003e\u003c/path\u003e \u003c/svg\u003e \u003cspan\u003eYour Privacy Choices\u003c/span\u003e \u003c/a\u003e \u003cnav aria-label=\"Microsoft corporate links\"\u003e \u003cul class=\"c-list f-bare\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Corp links_cont\u0026quot;,\u0026quot;cT\u0026quot;:\u0026quot;Container\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c1c1m1r1a2\u0026quot;}\"\u003e \u003cli id=\"c-uhff-footer_sitemap\"\u003e \u003ca class=\"c-uhff-link\" href=\"https://www.microsoft.com/en-us/sitemap1.aspx\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Sitemap_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n1c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:1,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003eSitemap\u003c/a\u003e \u003c/li\u003e \u003cli id=\"c-uhff-footer_contactus\"\u003e \u003ca class=\"c-uhff-link\" href=\"https://support.microsoft.com/contactus\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_ContactUs_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n2c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:2,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003eContact Microsoft\u003c/a\u003e \u003c/li\u003e \u003cli id=\"c-uhff-footer_privacyandcookies\"\u003e \u003ca class=\"c-uhff-link\" href=\"https://go.microsoft.com/fwlink/?LinkId=521839\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_PrivacyandCookies_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n3c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:3,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003ePrivacy \u003c/a\u003e \u003c/li\u003e \u003cli class=\"x-hidden\" id=\"c-uhff-footer_managecookies\"\u003e \u003ca class=\"c-uhff-link\" href=\"javascript:manageConsent();\" onClick=\"javascript:manageConsent(); return false;\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_ManageCookies_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n4c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:4,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003eManage cookies\u003c/a\u003e \u003c/li\u003e \u003cli id=\"c-uhff-footer_termsofuse\"\u003e \u003ca class=\"c-uhff-link\" href=\"https://go.microsoft.com/fwlink/?LinkID=206977\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_TermsOfUse_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n5c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:5,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003eTerms of use\u003c/a\u003e \u003c/li\u003e \u003cli id=\"c-uhff-footer_trademarks\"\u003e \u003ca class=\"c-uhff-link\" href=\"https://go.microsoft.com/fwlink/?linkid=2196228\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_Trademarks_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n6c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:6,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003eTrademarks\u003c/a\u003e \u003c/li\u003e \u003cli id=\"c-uhff-footer_safetyandeco\"\u003e \u003ca class=\"c-uhff-link\" href=\"https://go.microsoft.com/fwlink/?linkid=2196227\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_SafetyAndEco_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n7c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:7,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003eSafety \u0026amp; eco\u003c/a\u003e \u003c/li\u003e \u003cli id=\"c-uhff-footer_aboutourads\"\u003e \u003ca class=\"c-uhff-link\" href=\"https://choice.microsoft.com\" data-mscc-ic=\"false\" data-m=\"{\u0026quot;cN\u0026quot;:\u0026quot;Footer_AboutourAds_nav\u0026quot;,\u0026quot;id\u0026quot;:\u0026quot;n8c8c1c1m1r1a2\u0026quot;,\u0026quot;sN\u0026quot;:8,\u0026quot;aN\u0026quot;:\u0026quot;c8c1c1m1r1a2\u0026quot;}\"\u003eAbout our ads\u003c/a\u003e \u003c/li\u003e \u003cli\u003e© Microsoft 2024\u003c/li\u003e \u003c/ul\u003e \u003c/nav\u003e \u003c/div\u003e \u003c/footer\u003e"}},"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/ranks/UserRankLabel\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserRegistrationDate\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserRegistrationDate-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeDescription\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1731977288000"}],"cachedText({\"lastModified\":\"1731977288000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeIcon\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1731977288000"}]},"CachedAsset:pages-1732228016755":{"__typename":"CachedAsset","id":"pages-1732228016755","value":[{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"UserBlogPermissions.Page","type":"COMMUNITY","urlPath":"/c/user-blog-permissions/page","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TkbViewAllArticlesPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730142000000,"localOverride":null,"page":{"id":"AllEvents","type":"CUSTOM","urlPath":"/Events","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"KhorosSignInPage","type":"USER","urlPath":"/kh-signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"IdeaPostPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730142000000,"localOverride":null,"page":{"id":"CommunityHub.Page","type":"CUSTOM","urlPath":"/Directory","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ResetPasswordPage","type":"USER","urlPath":"/resetpassword/:userId/:resetPasswordToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730142000000,"localOverride":null,"page":{"id":"AllBlogs.Page","type":"CUSTOM","urlPath":"/blogs","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1732228016755,"localOverride":null,"page":{"id":"GroupHubPostPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"}],"localOverride":false},"CachedAsset:text:en_US-components/context/AppContext/AppContextProvider-0":{"__typename":"CachedAsset","id":"text:en_US-components/context/AppContext/AppContextProvider-0","value":{"noCommunity":"Cannot find community","noUser":"Cannot find current user","noNode":"Cannot find node with id {nodeId}","noMessage":"Cannot find message with id {messageId}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-0":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-0","value":{"title":"Loading..."},"localOverride":false},"User:user:-1":{"__typename":"User","id":"user:-1","uid":-1,"login":"Deleted","email":"","avatar":null,"rank":null,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":"ANONYMOUS","registrationTime":null,"confirmEmailStatus":false,"registrationAccessLevel":"VIEW","ssoRegistrationFields":[]},"ssoId":null,"profileSettings":{"__typename":"ProfileSettings","dateDisplayStyle":{"__typename":"InheritableStringSettingWithPossibleValues","key":"layout.friendly_dates_enabled","value":"false","localValue":"true","possibleValues":["true","false"]},"dateDisplayFormat":{"__typename":"InheritableStringSetting","key":"layout.format_pattern_date","value":"MMM dd yyyy","localValue":"MM-dd-yyyy"},"language":{"__typename":"InheritableStringSettingWithPossibleValues","key":"profile.language","value":"en-US","localValue":"en","possibleValues":["en-US"]}},"deleted":false},"Theme:customTheme1":{"__typename":"Theme","id":"customTheme1"},"Category:category:RegionalBlogs":{"__typename":"Category","id":"category:RegionalBlogs","entityType":"CATEGORY","displayId":"RegionalBlogs","nodeType":"category","depth":3,"title":"Regional Blogs","shortTitle":"Regional Blogs","parent":{"__ref":"Category:category:solutions"}},"Category:category:top":{"__typename":"Category","id":"category:top","displayId":"top","nodeType":"category","depth":0,"title":"Top","entityType":"CATEGORY","shortTitle":"Top"},"Category:category:communities":{"__typename":"Category","id":"category:communities","displayId":"communities","nodeType":"category","depth":1,"parent":{"__ref":"Category:category:top"},"title":"Communities","entityType":"CATEGORY","shortTitle":"Communities"},"Category:category:solutions":{"__typename":"Category","id":"category:solutions","displayId":"solutions","nodeType":"category","depth":2,"parent":{"__ref":"Category:category:communities"},"title":"Topics","entityType":"CATEGORY","shortTitle":"Topics"},"Blog:board:DesenvolvedoresBR":{"__typename":"Blog","id":"board:DesenvolvedoresBR","entityType":"BLOG","displayId":"DesenvolvedoresBR","nodeType":"board","depth":4,"conversationStyle":"BLOG","title":"Desenvolvedores BR","description":"","avatar":null,"profileSettings":{"__typename":"ProfileSettings","language":null},"parent":{"__ref":"Category:category:RegionalBlogs"},"ancestors":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:gxcuf89792"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:communities"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:solutions"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:RegionalBlogs"}}]},"userContext":{"__typename":"NodeUserContext","canAddAttachments":false,"canUpdateNode":false,"canPostMessages":false,"isSubscribed":false},"boardPolicies":{"__typename":"BoardPolicies","canPublishArticleOnCreate":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","args":[]}}},"shortTitle":"Desenvolvedores BR","tagProperties":{"__typename":"TagNodeProperties","tagsEnabled":{"__typename":"PolicyResult","failureReason":null}},"requireTags":false,"tagType":"PRESET_ONLY"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc","height":512,"width":512,"mimeType":"image/png"},"Rank:rank:4":{"__typename":"Rank","id":"rank:4","position":5,"name":"Microsoft","color":"333333","icon":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc\"}"},"rankStyle":"OUTLINE"},"User:user:1171673":{"__typename":"User","id":"user:1171673","uid":1171673,"login":"wdossantos","deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMTcxNjczLTMyNTM2MGkwNjkyMDE1OTQ0RkQ5MTM0"},"rank":{"__ref":"Rank:rank:4"},"email":"","messagesCount":19,"biography":null,"topicsCount":13,"kudosReceivedCount":69,"kudosGivenCount":45,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2021-09-30T12:29:41.220-07:00","confirmEmailStatus":null},"followersCount":null,"solutionsCount":0},"BlogTopicMessage:message:4221166":{"__typename":"BlogTopicMessage","uid":4221166,"subject":"Escalando Nodes e Pods no AKS","id":"message:4221166","revisionNum":9,"author":{"__ref":"User:user:1171673"},"depth":0,"hasGivenKudo":false,"board":{"__ref":"Blog:board:DesenvolvedoresBR"},"conversation":{"__ref":"Conversation:conversation:4221166"},"messagePolicies":{"__typename":"MessagePolicies","canPublishArticleOnEdit":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","args":[]}},"canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}},"contentWorkflow":{"__typename":"ContentWorkflow","state":"PUBLISH","scheduledPublishTime":null,"scheduledTimezone":null,"userContext":{"__typename":"MessageWorkflowContext","canSubmitForReview":null,"canEdit":false,"canRecall":null,"canSubmitForPublication":null,"canReturnToAuthor":null,"canPublish":null,"canReturnToReview":null,"canSchedule":null},"shortScheduledTimezone":null},"readOnly":false,"editFrozen":false,"moderationData":{"__ref":"ModerationData:moderation_data:4221166"},"teaser":"\u003cP\u003eEscalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade de computação, memória e armazenamento ao seu clu\u003c/P\u003e\n\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"autosacle.jpg\"\u003e\u003cbutton class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image autosacle.jpg\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg1NmlFRDdDQzY4QkZCMzBDM0U3?image-dimensions=750x750\u0026amp;revision=9\" alt=\"autosacle.jpg\" /\u003e\u003c/button\u003e\u003c/span\u003e\n\u003cP\u003ester, o que ajuda a lidar com picos de tráfego ou carga de trabalho.\u003c/P\u003e","body":"\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH1 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--1221464141\"\u003eEscalando Nodes e Pods no AKS\u003c/H1\u003e\n\u003cP\u003e\u0026nbsp;Escalar nodes e escalar pods são dois conceitos distintos no contexto do AKS (Azure Kubernetes Service).\u003c/P\u003e\n\u003cA id=\"user-content-escalando-nodes-e-pods-no-aks\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#escalando-nodes-e-pods-no-aks\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Escalando Nodes e Pods no AKS\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eEscalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade de computação, memória e armazenamento ao seu cluster, o que ajuda a lidar com picos de tráfego ou carga de trabalho.\u003c/P\u003e\n\u003cP\u003ePor outro lado, escalar pods refere-se ao aumento ou diminuição da quantidade de instâncias de um pod específico em execução no cluster do AKS. Isso auxilia no gerenciamento de picos de tráfego ou demanda por recursos específicos, como CPU ou memória.\u003c/P\u003e\n\u003cP\u003ePara escalar manualmente os nodes no AKS, você pode utilizar o comando ‘az aks scale’. Por exemplo, para escalar o cluster para 3 nodes, execute o seguinte comando:\u003c/P\u003e\n\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003eaz aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eOs dimensionadores automáticos de cluster e de pod horizontal podem operar em conjunto e geralmente são implantados em um cluster. Quando combinados, o dimensionador automático de pod horizontal foca na execução do número de pods necessário para atender à demanda do aplicativo. Já o dimensionador automático de cluster concentra-se na execução do número de nós necessários para dar suporte aos pods agendados.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cBLOCKQUOTE\u003e\n\u003cP\u003eO dimensionamento manual é desabilitado quando o dimensionador automático de cluster é usado. Deixe o dimensionador automático de cluster determinar o número de nós necessários. Caso deseje dimensionar o cluster manualmente,\u0026nbsp;\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/cluster-autoscaler#disable-the-cluster-autoscaler-on-a-cluster\" target=\"_blank\" rel=\"noopener noreferrer\"\u003edesabilite o dimensionador automático de cluster\u003c/A\u003e.\u003c/P\u003e\n\u003c/BLOCKQUOTE\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--530902667\"\u003eHabilitar o dimensionador automático em um cluster existente\u003c/H2\u003e\n\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003eaz aks update \\ --resource-group myResourceGroup \\ --name myAKSCluster \\ --enable-cluster-autoscaler \\ --min-count 1 \\ --max-count 3\u003c/code\u003e\u003c/pre\u003e\u003cA id=\"user-content-habilitar-o-dimensionador-automático-em-um-cluster-existente\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#habilitar-o-dimensionador-autom%C3%A1tico-em-um-cluster-existente\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Habilitar o dimensionador automático em um cluster existente\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-1956610166\"\u003eDesabilitar o dimensionador automático de cluster em um cluster\u003c/H2\u003e\n\u003cA id=\"user-content-desabilitar-o-dimensionador-automático-de-cluster-em-um-cluster\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#desabilitar-o-dimensionador-autom%C3%A1tico-de-cluster-em-um-cluster\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Desabilitar o dimensionador automático de cluster em um cluster\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003eaz aks update \\ --resource-group myResourceGroup \\ --name myAKSCluster \\ --disable-cluster-autoscaler\u003c/code\u003e\u003c/pre\u003e\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-149155703\"\u003eMostrar configuração do profile padrão\u003c/H2\u003e\n\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003eaz aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles\u003c/code\u003e\u003c/pre\u003e\u003cA id=\"user-content-mostrar-configuração-do-profile-padrão\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#mostrar-configura%C3%A7%C3%A3o-do-profile-padr%C3%A3o\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Mostrar configuração do profile padrão\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVocê pode configurar detalhes mais granulares do autoscaler de cluster alterando os valores padrão no perfil.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--1658298760\"\u003eEscalar pods (HPA)\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-escalar-pods-hpa\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#escalar-pods-hpa\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Escalar pods (HPA)\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003ePara escalar os pods no AKS, você pode usar a horizontal pod autoscaler (HPA) do Kubernetes. A HPA ajusta automaticamente o número de pods com base na utilização de recursos. Você pode configurar a HPA usando um arquivo YAML, que especifica a regra para aumentar ou diminuir o número de pods. Por exemplo, você pode definir uma regra para aumentar o número de pods em 1 sempre que a utilização de CPU de um pod ultrapassar 80%. Aqui está um exemplo de arquivo YAML para configurar a HPA:\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: my-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-deployment minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 80\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eEsse arquivo YAML especifica que a HPA deve ajustar o número de pods para um deployment chamado\u0026nbsp;\u003cCODE\u003emy-deployment\u003c/CODE\u003e, aumentando ou diminuindo a quantidade de pods para manter a utilização média de CPU em 80%. Além disso, o número mínimo de pods é definido como 1 e o número máximo como 10.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-829214073\"\u003eMas quando eu devo usar o KEDA no lugar do HPA ?\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-mas-quando-eu-devo-usar-o-keda-no-lugar-do-hpa-\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#mas-quando-eu-devo-usar-o-keda-no-lugar-do-hpa-\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Mas quando eu devo usar o KEDA no lugar do HPA ?\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eO KEDA (Kubernetes-based Event-Driven Autoscaling) é uma ferramenta de escala automática para cargas de trabalho de eventos baseada em Kubernetes. O KEDA estende o recurso de escala automática do Kubernetes e permite a escala com base em eventos, em vez de apenas na utilização de recursos.\u003c/P\u003e\n\u003cP\u003eEmbora o HPA do Kubernetes seja capaz de escalar horizontalmente com base na utilização de recursos, ele não é projetado para escalar automaticamente as cargas de trabalho baseadas em eventos. O KEDA, por outro lado, é projetado especificamente para escalar cargas de trabalho baseadas em eventos, como filas de mensagens, stream de eventos e cronjobs.\u003c/P\u003e\n\u003cP\u003eSe sua carga de trabalho envolve eventos que acionam a criação de novas instâncias de pods ou ajustes no número de réplicas em tempo real, o KEDA pode ser uma opção melhor do que o HPA do Kubernetes quando o gatilho para a escala é uma fila por exemplo.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--978240390\"\u003ePara configurar o HPA (Horizontal Pod Autoscaler) no AKS\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-para-configurar-o-hpa-horizontal-pod-autoscaler-no-aks\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#para-configurar-o-hpa-horizontal-pod-autoscaler-no-aks\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Para configurar o HPA (Horizontal Pod Autoscaler) no AKS\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003ePara configurar o HPA (Horizontal Pod Autoscaler) no AKS (Azure Kubernetes Service) do zero, você pode seguir os seguintes passos:\u003c/P\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003eCertifique-se de ter uma conta do Azure e um cluster do AKS criados.\u003c/LI\u003e\n\u003cLI\u003eInstale o kubectl em sua máquina local e configure-o para acessar seu cluster do AKS.\u003c/LI\u003e\n\u003cLI\u003eCrie um deployment no cluster do AKS:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl create deployment \u0026lt;deployment-name\u0026gt; --image=\u0026lt;container-image\u0026gt;\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eVerifique se o deployment foi criado corretamente:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl get deployments\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eCrie um serviço para expor o deployment:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl expose deployment \u0026lt;deployment-name\u0026gt; --port=\u0026lt;port-number\u0026gt; --type=LoadBalancer\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eVerifique se o serviço foi criado corretamente:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl get services\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eCrie um HPA para o deployment:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl autoscale deployment \u0026lt;deployment-name\u0026gt; --cpu-percent=\u0026lt;cpu-percent\u0026gt; --min=\u0026lt;min-replicas\u0026gt; --max=\u0026lt;max-replicas\u0026gt;\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eSubstitua\u0026nbsp;\u003cCODE\u003e\u0026lt;cpu-percent\u0026gt;\u003c/CODE\u003e,\u0026nbsp;\u003cCODE\u003e\u0026lt;min-replicas\u0026gt;\u003c/CODE\u003e\u0026nbsp;e\u0026nbsp;\u003cCODE\u003e\u0026lt;max-replicas\u0026gt;\u003c/CODE\u003e\u0026nbsp;pelos valores desejados.\u003c/LI\u003e\n\u003cLI\u003eVerifique se o HPA foi criado corretamente:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl get hpa\u003c/CODE\u003e\u003c/LI\u003e\n\u003c/OL\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-1509272443\"\u003eDemo aplicação\u0026nbsp;\u003cA href=\"https://mcr.microsoft.com/en-us/product/dotnet/samples/about\" target=\"_blank\" rel=\"noopener noreferrer\"\u003easpnet\u003c/A\u003e\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-demo-aplicação-aspnet\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#demo-aplica%C3%A7%C3%A3o-aspnet\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Demo aplicação aspnet\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eVamos utilizar a imagem de uma aplicação dotnet simples. O objetivo é testar diferentes configurações de HPA para os cenários de aumento de escala (Scale Up) e redução de escala (Scale Down).\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003ePrimeiro passo vamos connecter nos cluster\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003eaz aks get-credentials --resource-group AKS_BLOG --name ask_poc_hpa\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVamos criar uma Namespace\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl create namespace aspnet\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eCriando um manifesto de deploy\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl create deploy aspnetapp --image=mcr.microsoft.com/dotnet/samples:aspnetapp --dry-run=client -o yaml \u0026gt; samples-aspnetapp-deploy.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eo seguinte arquivo será gerado\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cpre class=\"lia-code-sample language-\"\u003e\u003ccode\u003eapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: aspnetapp resources: {} status: {}\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003eRodar o deploy\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl apply -f samples-aspnetapp-deploy.yaml -n aspnet\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eCriando um manifesto de serviço\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl expose -f samples-aspnetapp-deploy.yaml --name=sampleapisvc --type=LoadBalancer --port=80 --target-port=8080 --dry-run=client -o yaml \u0026gt; samples-aspnetapp-svc.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eo seguinte arquivo será gerado\u003c/P\u003e\n\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: v1 kind: Service metadata: creationTimestamp: null labels: app: aspnetapp name: sampleapisvc spec: ports: - port: 80 protocol: TCP targetPort: 8080 selector: app: aspnetapp type: LoadBalancer status: loadBalancer: {}\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eRodar Servico\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl apply -f samples-aspnetapp-svc.yaml -n aspnet\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eCriando um manifesto de hpa\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml \u0026gt; samples-aspnetapp-hpa-01.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eo seguinte arquivo será gerado\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003erodar o hpa\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl apply -f samples-aspnetapp-hpa-01.yaml -n aspnet\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--298182020\"\u003e\u003cSTRONG\u003eUsando os comandos abaixo pode verificar o estado dos objetos\u003c/STRONG\u003e\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-usando-os-comandos-abaixo-pode-verificar-o-estado-dos-objetos\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#usando-os-comandos-abaixo-pode-verificar-o-estado-dos-objetos\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Usando os comandos abaixo pode verificar o estado dos objetos\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl top pods # Visualiza o consumo de CPU e memória dos pods kubectl get hpa # Mostra a configuração corrente do HPA com os valores das métricas kubectl describe hpa \u0026lt;name\u0026gt; # Visualiza as configurações do HPA, assim como eventos de aumento e diminuição de pods\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"Detalhes da configuração HPA\"\u003e\u003cbutton aria-labelledby=\"610860i8A2B3625877CAA20_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image Detalhes da configuração HPA\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MGk4QTJCMzYyNTg3N0NBQTIw?image-dimensions=750x750\u0026amp;revision=9\" alt=\"Detalhes da configuração HPA\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610860i8A2B3625877CAA20_caption\"\u003eDetalhes da configuração HPA\u003c/span\u003e\u003c/span\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--2105636483\"\u003eUm dos erros mais comuns ao configurar HPA\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-um-dos-erros-mais-comuns-ao-configurar-hpa\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#um-dos-erros-mais-comuns-ao-configurar-hpa\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Um dos erros mais comuns ao configurar HPA\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eTudo ocorreu conforme esperado. No entanto, ao executar o comando\u0026nbsp;\u003cCODE\u003ekubectl get hpa\u003c/CODE\u003e, recebi a informação\u0026nbsp;\u003cCODE\u003e\u0026lt;unknown\u0026gt;/60%\u003c/CODE\u003e\u0026nbsp;no campo TARGETS. Comecei verificando se o metrics-server está em execução no seu cluster do AKS utilizando o comando\u0026nbsp;\u003cCODE\u003ekubectl\u003c/CODE\u003e.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl get pods -n kube-system\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVerificando os detalhes do HPA\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl describe hpa \u0026lt;nome\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cBLOCKQUOTE\u003e\n\u003cP\u003eThe HPA was unable to compute the replica count: failed to get cpu utilization: missing request for cpu\u003c/P\u003e\n\u003c/BLOCKQUOTE\u003e\n\u003cP\u003eE por fim precisei editar com os limites do manifesto de deploy segue referência\u0026nbsp;\u003cA href=\"https://stacksimplify.com/azure-aks/azure-kubernetes-service-requests-and-limits/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003ehttps://stacksimplify.com/azure-aks/azure-kubernetes-service-requests-and-limits/\u003c/A\u003e\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eresources: limits: cpu: \"500m\" memory: \"512Mi\" requests: cpu: \"100m\" memory: \"256Mi\"\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eOnde:\u003c/P\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003eé o valor da CPU solicitado pelo deployment. Por exemplo, “100m” representa 100 milicores (ou 0,1 CPU).\u003c/LI\u003e\n\u003cLI\u003eé o valor máximo da CPU que o deployment pode usar. Por exemplo, “500m” representa 500 milicores (ou 0,5 CPU).\u003c/LI\u003e\n\u003c/OL\u003e\n\u003cP\u003efinal\u003c/P\u003e\n\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: \"500m\" memory: \"512Mi\" requests: cpu: \"100m\" memory: \"256Mi\" status: {}\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eapós atualizar o deploy rodei\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl get hpa -n aspnet\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet\"\u003e\u003cbutton aria-labelledby=\"610862i2634033184ED843C_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MmkyNjM0MDMzMTg0RUQ4NDND?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610862i2634033184ED843C_caption\"\u003ekubectl get hpa -n aspnet\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVemos os percentuais de CPU, o atual e o gatilho do algoritmo HPA, acima de 60 % aumenta e abaixo disso diminui respeitando o parâmetro stabilizationWindowSeconds para evitar as flutuações\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-2055646089\"\u003eConsiderações sobre recursos disponíveis para pods\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-considerações-sobre-recursos-disponíveis-para-pods\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#considera%C3%A7%C3%B5es-sobre-recursos-dispon%C3%ADveis-para-pods\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Considerações sobre recursos disponíveis para pods\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eEm uma máquina virtual de 8 GB e 2 vCPU, você pode esperar:\u003c/P\u003e\n\u003cUL dir=\"auto\"\u003e\n\u003cLI\u003e100 MB de memória e 0,1 vCPU a serem reservados para o sistema operacional.\u003c/LI\u003e\n\u003cLI\u003e1,8 GB de memória e 0,07 vCPU a serem reservados para o Kubelet.\u003c/LI\u003e\n\u003cLI\u003e100 MB de memória para o limite de despejo.\u003c/LI\u003e\n\u003c/UL\u003e\n\u003cP\u003eOs ~6 GB restantes de memória e 1,83 vCPU podem ser usados pelos pods.\u003c/P\u003e\n\u003cBLOCKQUOTE\u003e\n\u003cP\u003eO Kubelet é um agente que executa em cada nó de um cluster do Kubernetes. Ele é responsável por garantir que os containers estejam em execução no nó e em conformidade com o estado desejado declarado no manifesto do Kubernetes.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/BLOCKQUOTE\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-248191626\"\u003eAdicionando o fortio para teste de carga\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-adicionando-o-fortio-para-teste-de-carga\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#adicionando-o-fortio-para-teste-de-carga\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Adicionando o fortio para teste de carga\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/sample-client/fortio-deploy.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eFortio é uma ferramenta de teste de carga inicialmente parte do Istio e depois se tornou independente. Executa consultas por segundo, registra tempo de execução.É uma biblioteca Go rápida e pequena, com uma imagem Docker de 4 MB.\u003c/P\u003e\n\u003cP\u003eexecutando uma chamada de teste usando curl\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -n httpbin -- /usr/bin/fortio curl -quiet http://localhost:8080\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eUsando o Fortio, este comando, por exemplo, executa 20 threads, totalizando 20 mil requisições.\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -- /usr/bin/fortio load -c 20 -qps 0 -n 20000 -loglevel Warning http://52.226.198.73/\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--1559262837\"\u003eQuais as opções de configuração do HPA\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-quais-as-opções-de-configuração-do-hpa\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#quais-as-op%C3%A7%C3%B5es-de-configura%C3%A7%C3%A3o-do-hpa\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Quais as opções de configuração do HPA\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-01.yaml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando targetCPUUtilizationPercentage\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml \u0026gt; samples-aspnetapp-hpa-01.yaml\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003emanifesto gerado pelo kubctl\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet\"\u003e\u003cbutton aria-labelledby=\"610864iCC7E65E3428CB880_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2NGlDQzdFNjVFMzQyOENCODgw?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610864iCC7E65E3428CB880_caption\"\u003ekubectl get hpa -n aspnet\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-02.yaml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando um comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 10 behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003e\u003cSTRONG\u003estabilizationWindowSeconds\u003c/STRONG\u003e\u0026nbsp;A janela de estabilização é usada para restringir a\u0026nbsp;\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#flapping\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eoscilação\u003c/A\u003e\u0026nbsp;da contagem de réplicas quando as métricas usadas para dimensionamento continuam flutuand\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003eperiodSeconds\u003c/CODE\u003eindica o período de tempo no passado durante o qual a política deve ser válida\u003c/LI\u003e\n\u003cLI\u003eA política\u0026nbsp;\u003cEM\u003e(Porcentagem)\u003c/EM\u003e\u0026nbsp;permite que no máximo 50% das réplicas atuais sejam reduzidas em 30 segundos.\u0026nbsp;\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#scaling-policies\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003esaiba mais\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003eA seleção da política pode ser alterada especificando o\u0026nbsp;\u003cCODE\u003eselectPolicy\u003c/CODE\u003e\u003c/LI\u003e\n\u003c/OL\u003e\n\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet\"\u003e\u003cbutton aria-labelledby=\"610867i08910ECCB0703C3B_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2N2kwODkxMEVDQ0IwNzAzQzNC?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610867i08910ECCB0703C3B_caption\"\u003ekubectl get hpa -n aspnet\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-03.yaml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando um comportamento que permite um controle mais refinado dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada no consumo médio em milissegundos como gatilho para iniciar os movimentos.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: AverageValue averageValue: 10m behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet\"\u003e\u003cbutton aria-labelledby=\"610868iED5646BC0F23FAB6_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OGlFRDU2NDZCQzBGMjNGQUI2?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610868iED5646BC0F23FAB6_caption\"\u003ekubectl get hpa -n aspnet\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-04.yml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando o comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU e memória baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 6 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet\"\u003e\u003cbutton aria-labelledby=\"610869i9418DDA7F5EF13FC_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OWk5NDE4RERBN0Y1RUYxM0ZD?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610869i9418DDA7F5EF13FC_caption\"\u003ekubectl get hpa -n aspnet\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVou fazer um teste com a configuração 4, para simular a carga vou usar o fortio e analisar o comportamento de up e down.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eO teste começou as 14:22\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet\"\u003e\u003cbutton aria-labelledby=\"610870i5F3B32AA0ECB0B02_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MGk1RjNCMzJBQTBFQ0IwQjAy?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610870i5F3B32AA0ECB0B02_caption\"\u003ekubectl get hpa -n aspnet\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eentão usei o parâmetro -w para observar as mudanças de replicas\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-powershell\"\u003e\u003ccode\u003ekubectl get hpa -n aspnet -w\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eAs 14:25 cheguei em 6 réplicas, podemos observar que os pods são acionados um por um conforme o comportamento definido.\u003c/P\u003e\n\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet -w\"\u003e\u003cbutton aria-labelledby=\"610872iB96B73F835182DB6_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet -w\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MmlCOTZCNzNGODM1MTgyREI2?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet -w\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610872iB96B73F835182DB6_caption\"\u003ekubectl get hpa -n aspnet -w\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eAs 14:35 baixou para 2 pods\u003c/P\u003e\n\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet -w\"\u003e\u003cbutton aria-labelledby=\"610873i5A1E25402D602EFD_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet -w\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3M2k1QTFFMjU0MDJENjAyRUZE?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet -w\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610873i5A1E25402D602EFD_caption\"\u003ekubectl get hpa -n aspnet -w\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003ee as 14:38 chegamos em 1\u003c/P\u003e\n\u003cspan class=\"lia-media-object lia-media-is-inline lia-media-size-large\" data-image-alt=\"kubectl get hpa -n aspnet -w\"\u003e\u003cbutton aria-labelledby=\"610875i0739D7D316B5A7C6_caption\" class=\"lia-media-unstyled-btn\" type=\"button\" aria-haspopup=\"true\" aria-label=\"Enlarge Image kubectl get hpa -n aspnet -w\"\u003e\u003cimg src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3NWkwNzM5RDdEMzE2QjVBN0M2?image-dimensions=750x750\u0026amp;revision=9\" alt=\"kubectl get hpa -n aspnet -w\" /\u003e\u003c/button\u003e\u003cspan class=\"lia-media-caption-text\" id=\"610875i0739D7D316B5A7C6_caption\"\u003ekubectl get hpa -n aspnet -w\u003c/span\u003e\u003c/span\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eO Comportamento de Scale Down não aconteceu exatamente como eu pensei, ele não baixou 100% no primeiro ciclo de verificação.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-928249996\"\u003eTestes com 30 pods\u003c/H2\u003e\n\u003cA id=\"user-content-testes-com-30-pods\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#testes-com-30-pods\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Testes com 30 pods\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003ePara finalizar fiz um teste com mais pods e coloquei os dados aqui para análise, mudei o deploy para o seguinte:\u003c/P\u003e\n\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: \"100m\" memory: \"256Mi\" requests: cpu: \"30m\" memory: \"128Mi\" status: {}\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eAlterei o HPA para\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\u003c/code\u003e\u003c/pre\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003ee comecei a monitorar\u003c/P\u003e\n\u003cDIV class=\"snippet-clipboard-content notranslate position-relative overflow-auto\"\u003e\n\u003cPRE class=\"notranslate\"\u003e\u003cCODE\u003eNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE \naspnetapp Deployment/aspnetapp \u0026lt;unknown\u0026gt;/80%, 21%/100% 1 30 1 45m \naspnetapp Deployment/aspnetapp 13%/80%, 21%/100% 1 30 1 45m \naspnetapp Deployment/aspnetapp 3%/80%, 21%/100% 1 30 1 46m \naspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 1 47m \naspnetapp Deployment/aspnetapp 256%/80%, 51%/100% 1 30 2 48m \naspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 2 48m \naspnetapp Deployment/aspnetapp 256%/80%, 54%/100% 1 30 3 48m \naspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 3 48m \naspnetapp Deployment/aspnetapp 330%/80%, 31%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 50m \naspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 4 50m \naspnetapp Deployment/aspnetapp 82%/80%, 45%/100% 1 30 5 51m \naspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 5 51m \naspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m \naspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m \naspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 7 52m \naspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 7 52m \naspnetapp Deployment/aspnetapp 101%/80%, 36%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 10 54m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 10 54m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 12 55m \naspnetapp Deployment/aspnetapp 146%/80%, 43%/100% 1 30 12 55m \naspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m \naspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m \naspnetapp Deployment/aspnetapp 109%/80%, 42%/100% 1 30 14 56m \naspnetapp Deployment/aspnetapp 113%/80%, 43%/100% 1 30 14 56m \naspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 32%/80%, 42%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 94%/80%, 45%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 17 59m \naspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 17 60m \naspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 18 60m \naspnetapp Deployment/aspnetapp 138%/80%, 43%/100% 1 30 18 60m \naspnetapp Deployment/aspnetapp 52%/80%, 43%/100% 1 30 19 60m \naspnetapp Deployment/aspnetapp 66%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 52%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 122%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 61m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 62m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 21 62m ** \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 65m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m \naspnetapp Deployment/aspnetapp 54%/80%, 42%/100% 1 30 9 67m ** \naspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 67m \naspnetapp Deployment/aspnetapp 54%/80%, 44%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 81%/80%, 45%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 217%/80%, 45%/100% 1 30 10 69m \naspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 10 69m \naspnetapp Deployment/aspnetapp 217%/80%, 40%/100% 1 30 11 69m \naspnetapp Deployment/aspnetapp 174%/80%, 40%/100% 1 30 11 69m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 13 70m \naspnetapp Deployment/aspnetapp 143%/80%, 42%/100% 1 30 13 70m \naspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m \naspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m \naspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 71m \naspnetapp Deployment/aspnetapp 96%/80%, 40%/100% 1 30 15 71m \naspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 72m \naspnetapp Deployment/aspnetapp 96%/80%, 39%/100% 1 30 16 72m ** \naspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 72m \naspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 73m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 73m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 76m \naspnetapp Deployment/aspnetapp 3%/80%, 38%/100% 1 30 16 77m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 77m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 77m ** \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 79m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 80m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 82m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 84m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 84m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 5%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 87m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 5%/80%, 33%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 89m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 92m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 92m \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 1 93m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 94m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m\n\u003c/CODE\u003e\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003ePodemos observar que, ao atingir 21 réplicas por volta dos 62 minutos, houve uma diminuição nas cargas. Logo após a janela de estabilização, que durou cerca de 5 minutos, o número de réplicas diminui para 9 por volta dos 67 minutos. Fiz uma segunda simulação de carga e as réplicas aumentam para 16 por volta dos 72 minutos e, aproximadamente 5 minutos depois, ou seja, aos 77 minutos, elas diminuem para 7.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId--879204467\"\u003esamples-aspnetapp-hpa-05.yaml\u003c/H2\u003e\n\u003cA id=\"user-content-samples-aspnetapp-hpa-05yaml\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#samples-aspnetapp-hpa-05yaml\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: samples-aspnetapp-hpa-05.yaml\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eMudei a politicas de Scale Down e Scale up para pods, baixando um pod de cada vez\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cpre class=\"lia-code-sample language-yaml\"\u003e\u003ccode\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\u003c/code\u003e\u003c/pre\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003ee dessa forma foi deterministico um por um\u003c/P\u003e\n\u003cDIV class=\"snippet-clipboard-content notranslate position-relative overflow-auto\"\u003e\n\u003cPRE class=\"notranslate\"\u003e\u003cCODE\u003eNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE \naspnetapp Deployment/aspnetapp 30%/80%, 61%/100% 1 30 1 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 1 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 330%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 114%/80%, 30%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 6%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 5%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 63%/100% 1 30 1 20h\n\u003c/CODE\u003e\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eParece que o problema está associado à tentativa de encerrar pods que ainda estão em uso, resultando na baixa de apenas uma fração da quantidade especificada na política. O único cenário em que pude observar um determinismo em relação à quantidade de pods baixados foi no exemplo em que defini o comportamento de redução para apenas um pod por vez.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\" id=\"community-4221166-toc-hId-1608308366\"\u003eReferências\u003c/H2\u003e\n\u003cA id=\"user-content-referências\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#refer%C3%AAncias\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Permalink: Referências\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/cluster-autoscaler\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eDimensionar automaticamente um cluster para atender às demandas de aplicativo no AKS (Serviço de Kubernetes do Azure)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/scale-cluster?tabs=azure-cli\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eDimensionar a contagem de nós em um cluster do AKS (Serviço de Kubernetes do Azure)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/troubleshoot/azure/azure-kubernetes/node-count-is-not-in-autoscaler-min-max-range\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eA contagem de nós atual não está no intervalo mínimo e mínimo do dimensionador automático — Azure | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eHorizontal Pod Autoscaling | Kubernetes\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/tutorial-kubernetes-scale?tabs=azure-cli#autoscale-pods\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eTutorial do Kubernetes no Azure — Dimensionar Aplicativo — Azure Kubernetes Service | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learnk8s.io/kubernetes-autoscaling-strategies#choosing-the-optimal-instance-size-for-a-kubernetes-node\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eArchitecting Kubernetes clusters — choosing the best autoscaling strategy (learnk8s.io)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learnk8s.io/kubernetes-instance-calculator\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eKubernetes instance calculator (learnk8s.io)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/concepts-scale\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eConceitos — dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/tutorial-kubernetes-scale?tabs=azure-cli#autoscale-pods\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eTutorial do Kubernetes no Azure — Dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003eHorizontal Pod Autoscaling | Kubernetes\u003c/A\u003e\u003c/LI\u003e\n\u003c/OL\u003e","body@stringLength":"60897","rawBody":"\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH1 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eEscalando Nodes e Pods no AKS\u003c/H1\u003e\n\u003cP\u003e\u0026nbsp;Escalar nodes e escalar pods são dois conceitos distintos no contexto do AKS (Azure Kubernetes Service).\u003c/P\u003e\n\u003cA id=\"user-content-escalando-nodes-e-pods-no-aks\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#escalando-nodes-e-pods-no-aks\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Escalando Nodes e Pods no AKS\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eEscalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade de computação, memória e armazenamento ao seu cluster, o que ajuda a lidar com picos de tráfego ou carga de trabalho.\u003c/P\u003e\n\u003cP\u003ePor outro lado, escalar pods refere-se ao aumento ou diminuição da quantidade de instâncias de um pod específico em execução no cluster do AKS. Isso auxilia no gerenciamento de picos de tráfego ou demanda por recursos específicos, como CPU ou memória.\u003c/P\u003e\n\u003cP\u003ePara escalar manualmente os nodes no AKS, você pode utilizar o comando ‘az aks scale’. Por exemplo, para escalar o cluster para 3 nodes, execute o seguinte comando:\u003c/P\u003e\n\u003cLI-CODE lang=\"powershell\"\u003eaz aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3\u003c/LI-CODE\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eOs dimensionadores automáticos de cluster e de pod horizontal podem operar em conjunto e geralmente são implantados em um cluster. Quando combinados, o dimensionador automático de pod horizontal foca na execução do número de pods necessário para atender à demanda do aplicativo. Já o dimensionador automático de cluster concentra-se na execução do número de nós necessários para dar suporte aos pods agendados.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cBLOCKQUOTE\u003e\n\u003cP\u003eO dimensionamento manual é desabilitado quando o dimensionador automático de cluster é usado. Deixe o dimensionador automático de cluster determinar o número de nós necessários. Caso deseje dimensionar o cluster manualmente,\u0026nbsp;\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/cluster-autoscaler#disable-the-cluster-autoscaler-on-a-cluster\" target=\"_blank\" rel=\"nofollow noopener\"\u003edesabilite o dimensionador automático de cluster\u003c/A\u003e.\u003c/P\u003e\n\u003c/BLOCKQUOTE\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eHabilitar o dimensionador automático em um cluster existente\u003c/H2\u003e\n\u003cLI-CODE lang=\"powershell\"\u003eaz aks update \\ --resource-group myResourceGroup \\ --name myAKSCluster \\ --enable-cluster-autoscaler \\ --min-count 1 \\ --max-count 3\u003c/LI-CODE\u003e\u003cA id=\"user-content-habilitar-o-dimensionador-automático-em-um-cluster-existente\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#habilitar-o-dimensionador-autom%C3%A1tico-em-um-cluster-existente\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Habilitar o dimensionador automático em um cluster existente\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eDesabilitar o dimensionador automático de cluster em um cluster\u003c/H2\u003e\n\u003cA id=\"user-content-desabilitar-o-dimensionador-automático-de-cluster-em-um-cluster\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#desabilitar-o-dimensionador-autom%C3%A1tico-de-cluster-em-um-cluster\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Desabilitar o dimensionador automático de cluster em um cluster\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cLI-CODE lang=\"powershell\"\u003eaz aks update \\ --resource-group myResourceGroup \\ --name myAKSCluster \\ --disable-cluster-autoscaler\u003c/LI-CODE\u003e\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eMostrar configuração do profile padrão\u003c/H2\u003e\n\u003cLI-CODE lang=\"powershell\"\u003eaz aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles\u003c/LI-CODE\u003e\u003cA id=\"user-content-mostrar-configuração-do-profile-padrão\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#mostrar-configura%C3%A7%C3%A3o-do-profile-padr%C3%A3o\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Mostrar configuração do profile padrão\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVocê pode configurar detalhes mais granulares do autoscaler de cluster alterando os valores padrão no perfil.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eEscalar pods (HPA)\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-escalar-pods-hpa\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#escalar-pods-hpa\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Escalar pods (HPA)\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003ePara escalar os pods no AKS, você pode usar a horizontal pod autoscaler (HPA) do Kubernetes. A HPA ajusta automaticamente o número de pods com base na utilização de recursos. Você pode configurar a HPA usando um arquivo YAML, que especifica a regra para aumentar ou diminuir o número de pods. Por exemplo, você pode definir uma regra para aumentar o número de pods em 1 sempre que a utilização de CPU de um pod ultrapassar 80%. Aqui está um exemplo de arquivo YAML para configurar a HPA:\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: my-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-deployment minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 80\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eEsse arquivo YAML especifica que a HPA deve ajustar o número de pods para um deployment chamado\u0026nbsp;\u003cCODE\u003emy-deployment\u003c/CODE\u003e, aumentando ou diminuindo a quantidade de pods para manter a utilização média de CPU em 80%. Além disso, o número mínimo de pods é definido como 1 e o número máximo como 10.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eMas quando eu devo usar o KEDA no lugar do HPA ?\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-mas-quando-eu-devo-usar-o-keda-no-lugar-do-hpa-\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#mas-quando-eu-devo-usar-o-keda-no-lugar-do-hpa-\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Mas quando eu devo usar o KEDA no lugar do HPA ?\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eO KEDA (Kubernetes-based Event-Driven Autoscaling) é uma ferramenta de escala automática para cargas de trabalho de eventos baseada em Kubernetes. O KEDA estende o recurso de escala automática do Kubernetes e permite a escala com base em eventos, em vez de apenas na utilização de recursos.\u003c/P\u003e\n\u003cP\u003eEmbora o HPA do Kubernetes seja capaz de escalar horizontalmente com base na utilização de recursos, ele não é projetado para escalar automaticamente as cargas de trabalho baseadas em eventos. O KEDA, por outro lado, é projetado especificamente para escalar cargas de trabalho baseadas em eventos, como filas de mensagens, stream de eventos e cronjobs.\u003c/P\u003e\n\u003cP\u003eSe sua carga de trabalho envolve eventos que acionam a criação de novas instâncias de pods ou ajustes no número de réplicas em tempo real, o KEDA pode ser uma opção melhor do que o HPA do Kubernetes quando o gatilho para a escala é uma fila por exemplo.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003ePara configurar o HPA (Horizontal Pod Autoscaler) no AKS\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-para-configurar-o-hpa-horizontal-pod-autoscaler-no-aks\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#para-configurar-o-hpa-horizontal-pod-autoscaler-no-aks\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Para configurar o HPA (Horizontal Pod Autoscaler) no AKS\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003ePara configurar o HPA (Horizontal Pod Autoscaler) no AKS (Azure Kubernetes Service) do zero, você pode seguir os seguintes passos:\u003c/P\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003eCertifique-se de ter uma conta do Azure e um cluster do AKS criados.\u003c/LI\u003e\n\u003cLI\u003eInstale o kubectl em sua máquina local e configure-o para acessar seu cluster do AKS.\u003c/LI\u003e\n\u003cLI\u003eCrie um deployment no cluster do AKS:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl create deployment \u0026lt;deployment-name\u0026gt; --image=\u0026lt;container-image\u0026gt;\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eVerifique se o deployment foi criado corretamente:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl get deployments\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eCrie um serviço para expor o deployment:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl expose deployment \u0026lt;deployment-name\u0026gt; --port=\u0026lt;port-number\u0026gt; --type=LoadBalancer\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eVerifique se o serviço foi criado corretamente:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl get services\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eCrie um HPA para o deployment:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl autoscale deployment \u0026lt;deployment-name\u0026gt; --cpu-percent=\u0026lt;cpu-percent\u0026gt; --min=\u0026lt;min-replicas\u0026gt; --max=\u0026lt;max-replicas\u0026gt;\u003c/CODE\u003e\u003c/LI\u003e\n\u003cLI\u003eSubstitua\u0026nbsp;\u003cCODE\u003e\u0026lt;cpu-percent\u0026gt;\u003c/CODE\u003e,\u0026nbsp;\u003cCODE\u003e\u0026lt;min-replicas\u0026gt;\u003c/CODE\u003e\u0026nbsp;e\u0026nbsp;\u003cCODE\u003e\u0026lt;max-replicas\u0026gt;\u003c/CODE\u003e\u0026nbsp;pelos valores desejados.\u003c/LI\u003e\n\u003cLI\u003eVerifique se o HPA foi criado corretamente:\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003ekubectl get hpa\u003c/CODE\u003e\u003c/LI\u003e\n\u003c/OL\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eDemo aplicação\u0026nbsp;\u003cA href=\"https://mcr.microsoft.com/en-us/product/dotnet/samples/about\" target=\"_blank\" rel=\"nofollow noopener\"\u003easpnet\u003c/A\u003e\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-demo-aplicação-aspnet\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#demo-aplica%C3%A7%C3%A3o-aspnet\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Demo aplicação aspnet\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eVamos utilizar a imagem de uma aplicação dotnet simples. O objetivo é testar diferentes configurações de HPA para os cenários de aumento de escala (Scale Up) e redução de escala (Scale Down).\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003ePrimeiro passo vamos connecter nos cluster\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003eaz aks get-credentials --resource-group AKS_BLOG --name ask_poc_hpa\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVamos criar uma Namespace\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl create namespace aspnet\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eCriando um manifesto de deploy\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl create deploy aspnetapp --image=mcr.microsoft.com/dotnet/samples:aspnetapp --dry-run=client -o yaml \u0026gt; samples-aspnetapp-deploy.yaml\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eo seguinte arquivo será gerado\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cLI-CODE lang=\"\"\u003eapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: aspnetapp resources: {} status: {}\u003c/LI-CODE\u003e\n\u003cP\u003eRodar o deploy\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl apply -f samples-aspnetapp-deploy.yaml -n aspnet\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eCriando um manifesto de serviço\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl expose -f samples-aspnetapp-deploy.yaml --name=sampleapisvc --type=LoadBalancer --port=80 --target-port=8080 --dry-run=client -o yaml \u0026gt; samples-aspnetapp-svc.yaml\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eo seguinte arquivo será gerado\u003c/P\u003e\n\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: v1 kind: Service metadata: creationTimestamp: null labels: app: aspnetapp name: sampleapisvc spec: ports: - port: 80 protocol: TCP targetPort: 8080 selector: app: aspnetapp type: LoadBalancer status: loadBalancer: {}\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eRodar Servico\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl apply -f samples-aspnetapp-svc.yaml -n aspnet\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eCriando um manifesto de hpa\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml \u0026gt; samples-aspnetapp-hpa-01.yaml\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eo seguinte arquivo será gerado\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003erodar o hpa\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl apply -f samples-aspnetapp-hpa-01.yaml -n aspnet\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003e\u003cSTRONG\u003eUsando os comandos abaixo pode verificar o estado dos objetos\u003c/STRONG\u003e\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-usando-os-comandos-abaixo-pode-verificar-o-estado-dos-objetos\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#usando-os-comandos-abaixo-pode-verificar-o-estado-dos-objetos\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Usando os comandos abaixo pode verificar o estado dos objetos\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl top pods # Visualiza o consumo de CPU e memória dos pods kubectl get hpa # Mostra a configuração corrente do HPA com os valores das métricas kubectl describe hpa \u0026lt;name\u0026gt; # Visualiza as configurações do HPA, assim como eventos de aumento e diminuição de pods\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cLI-IMAGE id=\"610860i8A2B3625877CAA20\" caption=\"true\" alt=\"Detalhes da configuração HPA\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MGk4QTJCMzYyNTg3N0NBQTIw?image-dimensions=750x750\u0026amp;revision=9\"\u003eDetalhes da configuração HPA\u003c/LI-IMAGE\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eUm dos erros mais comuns ao configurar HPA\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-um-dos-erros-mais-comuns-ao-configurar-hpa\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#um-dos-erros-mais-comuns-ao-configurar-hpa\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Um dos erros mais comuns ao configurar HPA\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eTudo ocorreu conforme esperado. No entanto, ao executar o comando\u0026nbsp;\u003cCODE\u003ekubectl get hpa\u003c/CODE\u003e, recebi a informação\u0026nbsp;\u003cCODE\u003e\u0026lt;unknown\u0026gt;/60%\u003c/CODE\u003e\u0026nbsp;no campo TARGETS. Comecei verificando se o metrics-server está em execução no seu cluster do AKS utilizando o comando\u0026nbsp;\u003cCODE\u003ekubectl\u003c/CODE\u003e.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl get pods -n kube-system\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVerificando os detalhes do HPA\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl describe hpa \u0026lt;nome\u0026gt;\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cBLOCKQUOTE\u003e\n\u003cP\u003eThe HPA was unable to compute the replica count: failed to get cpu utilization: missing request for cpu\u003c/P\u003e\n\u003c/BLOCKQUOTE\u003e\n\u003cP\u003eE por fim precisei editar com os limites do manifesto de deploy segue referência\u0026nbsp;\u003cA href=\"https://stacksimplify.com/azure-aks/azure-kubernetes-service-requests-and-limits/\" target=\"_blank\" rel=\"nofollow noopener\"\u003ehttps://stacksimplify.com/azure-aks/azure-kubernetes-service-requests-and-limits/\u003c/A\u003e\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eresources: limits: cpu: \"500m\" memory: \"512Mi\" requests: cpu: \"100m\" memory: \"256Mi\"\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eOnde:\u003c/P\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003eé o valor da CPU solicitado pelo deployment. Por exemplo, “100m” representa 100 milicores (ou 0,1 CPU).\u003c/LI\u003e\n\u003cLI\u003eé o valor máximo da CPU que o deployment pode usar. Por exemplo, “500m” representa 500 milicores (ou 0,5 CPU).\u003c/LI\u003e\n\u003c/OL\u003e\n\u003cP\u003efinal\u003c/P\u003e\n\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: \"500m\" memory: \"512Mi\" requests: cpu: \"100m\" memory: \"256Mi\" status: {}\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eapós atualizar o deploy rodei\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl get hpa -n aspnet\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cLI-IMAGE id=\"610862i2634033184ED843C\" caption=\"true\" alt=\"kubectl get hpa -n aspnet\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MmkyNjM0MDMzMTg0RUQ4NDND?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVemos os percentuais de CPU, o atual e o gatilho do algoritmo HPA, acima de 60 % aumenta e abaixo disso diminui respeitando o parâmetro stabilizationWindowSeconds para evitar as flutuações\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eConsiderações sobre recursos disponíveis para pods\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-considerações-sobre-recursos-disponíveis-para-pods\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#considera%C3%A7%C3%B5es-sobre-recursos-dispon%C3%ADveis-para-pods\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Considerações sobre recursos disponíveis para pods\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eEm uma máquina virtual de 8 GB e 2 vCPU, você pode esperar:\u003c/P\u003e\n\u003cUL dir=\"auto\"\u003e\n\u003cLI\u003e100 MB de memória e 0,1 vCPU a serem reservados para o sistema operacional.\u003c/LI\u003e\n\u003cLI\u003e1,8 GB de memória e 0,07 vCPU a serem reservados para o Kubelet.\u003c/LI\u003e\n\u003cLI\u003e100 MB de memória para o limite de despejo.\u003c/LI\u003e\n\u003c/UL\u003e\n\u003cP\u003eOs ~6 GB restantes de memória e 1,83 vCPU podem ser usados pelos pods.\u003c/P\u003e\n\u003cBLOCKQUOTE\u003e\n\u003cP\u003eO Kubelet é um agente que executa em cada nó de um cluster do Kubernetes. Ele é responsável por garantir que os containers estejam em execução no nó e em conformidade com o estado desejado declarado no manifesto do Kubernetes.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/BLOCKQUOTE\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eAdicionando o fortio para teste de carga\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-adicionando-o-fortio-para-teste-de-carga\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#adicionando-o-fortio-para-teste-de-carga\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Adicionando o fortio para teste de carga\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/sample-client/fortio-deploy.yaml\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eFortio é uma ferramenta de teste de carga inicialmente parte do Istio e depois se tornou independente. Executa consultas por segundo, registra tempo de execução.É uma biblioteca Go rápida e pequena, com uma imagem Docker de 4 MB.\u003c/P\u003e\n\u003cP\u003eexecutando uma chamada de teste usando curl\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -n httpbin -- /usr/bin/fortio curl -quiet http://localhost:8080\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eUsando o Fortio, este comando, por exemplo, executa 20 threads, totalizando 20 mil requisições.\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl exec fortio-deploy-5669d4866b-bqp8n -c fortio -- /usr/bin/fortio load -c 20 -qps 0 -n 20000 -loglevel Warning http://52.226.198.73/\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eQuais as opções de configuração do HPA\u003c/H2\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cA id=\"user-content-quais-as-opções-de-configuração-do-hpa\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#quais-as-op%C3%A7%C3%B5es-de-configura%C3%A7%C3%A3o-do-hpa\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Quais as opções de configuração do HPA\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-01.yaml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando targetCPUUtilizationPercentage\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl autoscale deployment aspnetapp --cpu-percent=60 --min=1 --max=5 --dry-run=client -o yaml \u0026gt; samples-aspnetapp-hpa-01.yaml\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003emanifesto gerado pelo kubctl\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp targetCPUUtilizationPercentage: 60 status: currentReplicas: 0 desiredReplicas: 0\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cLI-IMAGE id=\"610864iCC7E65E3428CB880\" caption=\"true\" alt=\"kubectl get hpa -n aspnet\" align=\"inline\" resized=\"false\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2NGlDQzdFNjVFMzQyOENCODgw?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-02.yaml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando um comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 10 behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003e\u003cSTRONG\u003estabilizationWindowSeconds\u003c/STRONG\u003e\u0026nbsp;A janela de estabilização é usada para restringir a\u0026nbsp;\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#flapping\" target=\"_blank\" rel=\"nofollow noopener\"\u003eoscilação\u003c/A\u003e\u0026nbsp;da contagem de réplicas quando as métricas usadas para dimensionamento continuam flutuand\u003c/LI\u003e\n\u003cLI\u003e\u003cCODE\u003eperiodSeconds\u003c/CODE\u003eindica o período de tempo no passado durante o qual a política deve ser válida\u003c/LI\u003e\n\u003cLI\u003eA política\u0026nbsp;\u003cEM\u003e(Porcentagem)\u003c/EM\u003e\u0026nbsp;permite que no máximo 50% das réplicas atuais sejam reduzidas em 30 segundos.\u0026nbsp;\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#scaling-policies\" target=\"_blank\" rel=\"nofollow noopener\"\u003esaiba mais\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003eA seleção da política pode ser alterada especificando o\u0026nbsp;\u003cCODE\u003eselectPolicy\u003c/CODE\u003e\u003c/LI\u003e\n\u003c/OL\u003e\n\u003cLI-IMAGE id=\"610867i08910ECCB0703C3B\" caption=\"true\" alt=\"kubectl get hpa -n aspnet\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2N2kwODkxMEVDQ0IwNzAzQzNC?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-03.yaml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando um comportamento que permite um controle mais refinado dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU baseada no consumo médio em milissegundos como gatilho para iniciar os movimentos.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp metrics: - type: Resource resource: name: cpu target: type: AverageValue averageValue: 10m behavior: scaleDown: stabilizationWindowSeconds: 30 policies: - type: Percent value: 50 periodSeconds: 30\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cLI-IMAGE id=\"610868iED5646BC0F23FAB6\" caption=\"true\" alt=\"kubectl get hpa -n aspnet\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OGlFRDU2NDZCQzBGMjNGQUI2?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003e\u003cSTRONG\u003eExemplo samples-aspnetapp-hpa-04.yml\u003c/STRONG\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eUtilizando o comportamento que permite um controle mais preciso dos detalhes do movimento para cima ou para baixo, e adotando a métrica de CPU e memória baseada na porcentagem de utilização média como gatilho para iniciar os movimentos.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 6 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u003cLI-IMAGE id=\"610869i9418DDA7F5EF13FC\" caption=\"true\" alt=\"kubectl get hpa -n aspnet\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OWk5NDE4RERBN0Y1RUYxM0ZD?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eVou fazer um teste com a configuração 4, para simular a carga vou usar o fortio e analisar o comportamento de up e down.\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eO teste começou as 14:22\u003c/P\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cLI-IMAGE id=\"610870i5F3B32AA0ECB0B02\" caption=\"true\" alt=\"kubectl get hpa -n aspnet\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MGk1RjNCMzJBQTBFQ0IwQjAy?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eentão usei o parâmetro -w para observar as mudanças de replicas\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-powershell notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"powershell\"\u003ekubectl get hpa -n aspnet -w\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003c/DIV\u003e\n\u003cP\u003eAs 14:25 cheguei em 6 réplicas, podemos observar que os pods são acionados um por um conforme o comportamento definido.\u003c/P\u003e\n\u003cLI-IMAGE id=\"610872iB96B73F835182DB6\" caption=\"true\" alt=\"kubectl get hpa -n aspnet -w\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MmlCOTZCNzNGODM1MTgyREI2?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet -w\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eAs 14:35 baixou para 2 pods\u003c/P\u003e\n\u003cLI-IMAGE id=\"610873i5A1E25402D602EFD\" caption=\"true\" alt=\"kubectl get hpa -n aspnet -w\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3M2k1QTFFMjU0MDJENjAyRUZE?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet -w\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003ee as 14:38 chegamos em 1\u003c/P\u003e\n\u003cLI-IMAGE id=\"610875i0739D7D316B5A7C6\" caption=\"true\" alt=\"kubectl get hpa -n aspnet -w\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3NWkwNzM5RDdEMzE2QjVBN0M2?image-dimensions=750x750\u0026amp;revision=9\"\u003ekubectl get hpa -n aspnet -w\u003c/LI-IMAGE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cP\u003eO Comportamento de Scale Down não aconteceu exatamente como eu pensei, ele não baixou 100% no primeiro ciclo de verificação.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eTestes com 30 pods\u003c/H2\u003e\n\u003cA id=\"user-content-testes-com-30-pods\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#testes-com-30-pods\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Testes com 30 pods\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003ePara finalizar fiz um teste com mais pods e coloquei os dados aqui para análise, mudei o deploy para o seguinte:\u003c/P\u003e\n\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: aspnetapp name: aspnetapp spec: replicas: 1 selector: matchLabels: app: aspnetapp strategy: {} template: metadata: creationTimestamp: null labels: app: aspnetapp spec: containers: - image: mcr.microsoft.com/dotnet/samples:aspnetapp name: samples resources: limits: cpu: \"100m\" memory: \"256Mi\" requests: cpu: \"30m\" memory: \"128Mi\" status: {}\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\n\u003cPRE\u003e\u0026nbsp;\u003c/PRE\u003e\n\u003c/DIV\u003e\n\u003cP\u003eAlterei o HPA para\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\u003c/LI-CODE\u003e\n\u003cP\u003e\u0026nbsp;\u003c/P\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003ee comecei a monitorar\u003c/P\u003e\n\u003cDIV class=\"snippet-clipboard-content notranslate position-relative overflow-auto\"\u003e\n\u003cPRE class=\"notranslate\"\u003e\u003cCODE\u003eNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE \naspnetapp Deployment/aspnetapp \u0026lt;unknown\u0026gt;/80%, 21%/100% 1 30 1 45m \naspnetapp Deployment/aspnetapp 13%/80%, 21%/100% 1 30 1 45m \naspnetapp Deployment/aspnetapp 3%/80%, 21%/100% 1 30 1 46m \naspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 1 47m \naspnetapp Deployment/aspnetapp 256%/80%, 51%/100% 1 30 2 48m \naspnetapp Deployment/aspnetapp 223%/80%, 54%/100% 1 30 2 48m \naspnetapp Deployment/aspnetapp 256%/80%, 54%/100% 1 30 3 48m \naspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 3 48m \naspnetapp Deployment/aspnetapp 330%/80%, 31%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 333%/80%, 31%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 49m \naspnetapp Deployment/aspnetapp 114%/80%, 28%/100% 1 30 4 50m \naspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 4 50m \naspnetapp Deployment/aspnetapp 82%/80%, 45%/100% 1 30 5 51m \naspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 5 51m \naspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m \naspnetapp Deployment/aspnetapp 266%/80%, 42%/100% 1 30 6 52m \naspnetapp Deployment/aspnetapp 265%/80%, 42%/100% 1 30 7 52m \naspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 7 52m \naspnetapp Deployment/aspnetapp 101%/80%, 36%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 108%/80%, 36%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 8 53m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 9 54m \naspnetapp Deployment/aspnetapp 200%/80%, 42%/100% 1 30 10 54m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 10 54m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 11 55m \naspnetapp Deployment/aspnetapp 158%/80%, 42%/100% 1 30 12 55m \naspnetapp Deployment/aspnetapp 146%/80%, 43%/100% 1 30 12 55m \naspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m \naspnetapp Deployment/aspnetapp 158%/80%, 43%/100% 1 30 13 56m \naspnetapp Deployment/aspnetapp 109%/80%, 42%/100% 1 30 14 56m \naspnetapp Deployment/aspnetapp 113%/80%, 43%/100% 1 30 14 56m \naspnetapp Deployment/aspnetapp 109%/80%, 43%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 57m \naspnetapp Deployment/aspnetapp 39%/80%, 42%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 32%/80%, 42%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 94%/80%, 45%/100% 1 30 15 58m \naspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 91%/80%, 45%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 16 59m \naspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 17 59m \naspnetapp Deployment/aspnetapp 130%/80%, 44%/100% 1 30 17 60m \naspnetapp Deployment/aspnetapp 138%/80%, 44%/100% 1 30 18 60m \naspnetapp Deployment/aspnetapp 138%/80%, 43%/100% 1 30 18 60m \naspnetapp Deployment/aspnetapp 52%/80%, 43%/100% 1 30 19 60m \naspnetapp Deployment/aspnetapp 66%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 52%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 122%/80%, 44%/100% 1 30 19 61m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 61m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 20 62m \naspnetapp Deployment/aspnetapp 122%/80%, 43%/100% 1 30 21 62m ** \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 62m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 63m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 64m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 65m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 66m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m \naspnetapp Deployment/aspnetapp 3%/80%, 41%/100% 1 30 21 67m \naspnetapp Deployment/aspnetapp 54%/80%, 42%/100% 1 30 9 67m ** \naspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 67m \naspnetapp Deployment/aspnetapp 54%/80%, 44%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 81%/80%, 44%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 81%/80%, 45%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 9 68m \naspnetapp Deployment/aspnetapp 217%/80%, 45%/100% 1 30 10 69m \naspnetapp Deployment/aspnetapp 216%/80%, 45%/100% 1 30 10 69m \naspnetapp Deployment/aspnetapp 217%/80%, 40%/100% 1 30 11 69m \naspnetapp Deployment/aspnetapp 174%/80%, 40%/100% 1 30 11 69m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 12 70m \naspnetapp Deployment/aspnetapp 150%/80%, 40%/100% 1 30 13 70m \naspnetapp Deployment/aspnetapp 143%/80%, 42%/100% 1 30 13 70m \naspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m \naspnetapp Deployment/aspnetapp 125%/80%, 42%/100% 1 30 14 71m \naspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 71m \naspnetapp Deployment/aspnetapp 96%/80%, 40%/100% 1 30 15 71m \naspnetapp Deployment/aspnetapp 108%/80%, 40%/100% 1 30 15 72m \naspnetapp Deployment/aspnetapp 96%/80%, 39%/100% 1 30 16 72m ** \naspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 72m \naspnetapp Deployment/aspnetapp 13%/80%, 39%/100% 1 30 16 73m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 73m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 74m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 75m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 76m \naspnetapp Deployment/aspnetapp 3%/80%, 38%/100% 1 30 16 77m \naspnetapp Deployment/aspnetapp 3%/80%, 39%/100% 1 30 16 77m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 77m ** \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 78m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 79m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 80m \naspnetapp Deployment/aspnetapp 3%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 81m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 7 82m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 82m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 83m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 84m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 84m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 85m \naspnetapp Deployment/aspnetapp 4%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 5%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 86m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m \naspnetapp Deployment/aspnetapp 3%/80%, 36%/100% 1 30 3 87m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 87m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 5%/80%, 33%/100% 1 30 2 88m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 89m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 90m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 91m \naspnetapp Deployment/aspnetapp 3%/80%, 32%/100% 1 30 2 92m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 92m \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 1 93m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 94m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m \naspnetapp Deployment/aspnetapp 3%/80%, 44%/100% 1 30 1 95m\n\u003c/CODE\u003e\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003ePodemos observar que, ao atingir 21 réplicas por volta dos 62 minutos, houve uma diminuição nas cargas. Logo após a janela de estabilização, que durou cerca de 5 minutos, o número de réplicas diminui para 9 por volta dos 67 minutos. Fiz uma segunda simulação de carga e as réplicas aumentam para 16 por volta dos 72 minutos e, aproximadamente 5 minutos depois, ou seja, aos 77 minutos, elas diminuem para 7.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003esamples-aspnetapp-hpa-05.yaml\u003c/H2\u003e\n\u003cA id=\"user-content-samples-aspnetapp-hpa-05yaml\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#samples-aspnetapp-hpa-05yaml\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: samples-aspnetapp-hpa-05.yaml\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cP\u003eMudei a politicas de Scale Down e Scale up para pods, baixando um pod de cada vez\u003c/P\u003e\n\u003cDIV class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\"\u003e\u003cLI-CODE lang=\"yaml\"\u003eapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: creationTimestamp: null name: aspnetapp spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: aspnetapp minReplicas: 1 maxReplicas: 30 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 100 behavior: scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 20 scaleUp: stabilizationWindowSeconds: 0 policies: - type: Pods value: 1 periodSeconds: 30\u003c/LI-CODE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003ee dessa forma foi deterministico um por um\u003c/P\u003e\n\u003cDIV class=\"snippet-clipboard-content notranslate position-relative overflow-auto\"\u003e\n\u003cPRE class=\"notranslate\"\u003e\u003cCODE\u003eNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE \naspnetapp Deployment/aspnetapp 30%/80%, 61%/100% 1 30 1 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 1 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 330%/80%, 58%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 330%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 330%/80%, 33%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 114%/80%, 30%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 77%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 31%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 4%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 6%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 8%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 5%/80%, 32%/100% 1 30 4 20h \naspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 3%/80%, 35%/100% 1 30 3 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 5%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 43%/100% 1 30 2 20h \naspnetapp Deployment/aspnetapp 3%/80%, 63%/100% 1 30 1 20h\n\u003c/CODE\u003e\u003c/PRE\u003e\n\u003cDIV class=\"zeroclipboard-container\"\u003e\u0026nbsp;\u003c/DIV\u003e\n\u003c/DIV\u003e\n\u003cP\u003eParece que o problema está associado à tentativa de encerrar pods que ainda estão em uso, resultando na baixa de apenas uma fração da quantidade especificada na política. O único cenário em que pude observar um determinismo em relação à quantidade de pods baixados foi no exemplo em que defini o comportamento de redução para apenas um pod por vez.\u003c/P\u003e\n\u003cDIV class=\"markdown-heading\" dir=\"auto\"\u003e\n\u003cH2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\"\u003eReferências\u003c/H2\u003e\n\u003cA id=\"user-content-referências\" class=\"anchor\" href=\"https://github.com/DesenvolvedoresBR/blog/blob/main/drafts/Escalando-Nodes-e-Pods-no-AKS.md#refer%C3%AAncias\" target=\"_blank\" rel=\"noopener\" aria-label=\"Permalink: Referências\"\u003e\u003c/A\u003e\u003c/DIV\u003e\n\u003cOL dir=\"auto\"\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/cluster-autoscaler\" target=\"_blank\" rel=\"nofollow noopener\"\u003eDimensionar automaticamente um cluster para atender às demandas de aplicativo no AKS (Serviço de Kubernetes do Azure)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/scale-cluster?tabs=azure-cli\" target=\"_blank\" rel=\"nofollow noopener\"\u003eDimensionar a contagem de nós em um cluster do AKS (Serviço de Kubernetes do Azure)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/troubleshoot/azure/azure-kubernetes/node-count-is-not-in-autoscaler-min-max-range\" target=\"_blank\" rel=\"nofollow noopener\"\u003eA contagem de nós atual não está no intervalo mínimo e mínimo do dimensionador automático — Azure | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/\" target=\"_blank\" rel=\"nofollow noopener\"\u003eHorizontal Pod Autoscaling | Kubernetes\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/tutorial-kubernetes-scale?tabs=azure-cli#autoscale-pods\" target=\"_blank\" rel=\"nofollow noopener\"\u003eTutorial do Kubernetes no Azure — Dimensionar Aplicativo — Azure Kubernetes Service | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learnk8s.io/kubernetes-autoscaling-strategies#choosing-the-optimal-instance-size-for-a-kubernetes-node\" target=\"_blank\" rel=\"nofollow noopener\"\u003eArchitecting Kubernetes clusters — choosing the best autoscaling strategy (learnk8s.io)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learnk8s.io/kubernetes-instance-calculator\" target=\"_blank\" rel=\"nofollow noopener\"\u003eKubernetes instance calculator (learnk8s.io)\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/concepts-scale\" target=\"_blank\" rel=\"nofollow noopener\"\u003eConceitos — dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://learn.microsoft.com/pt-br/azure/aks/tutorial-kubernetes-scale?tabs=azure-cli#autoscale-pods\" target=\"_blank\" rel=\"nofollow noopener\"\u003eTutorial do Kubernetes no Azure — Dimensionar aplicativos no AKS (Serviço de Kubernetes do Azure) — Azure Kubernetes Service | Microsoft Learn\u003c/A\u003e\u003c/LI\u003e\n\u003cLI\u003e\u003cA href=\"https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/\" target=\"_blank\" rel=\"nofollow noopener\"\u003eHorizontal Pod Autoscaling | Kubernetes\u003c/A\u003e\u003c/LI\u003e\n\u003c/OL\u003e","kudosSumWeight":0,"repliesCount":0,"postTime":"2024-11-23T08:21:52.810-08:00","images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3wx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTRicnlvOA?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3wy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg1NmlFRDdDQzY4QkZCMzBDM0U3?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3wz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MGk4QTJCMzYyNTg3N0NBQTIw?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3w0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MmkyNjM0MDMzMTg0RUQ4NDND?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3w1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2NGlDQzdFNjVFMzQyOENCODgw?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3w2","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2N2kwODkxMEVDQ0IwNzAzQzNC?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3w3","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OGlFRDU2NDZCQzBGMjNGQUI2?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3w4","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OWk5NDE4RERBN0Y1RUYxM0ZD?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3w5","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MGk1RjNCMzJBQTBFQ0IwQjAy?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3wxMA","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MmlCOTZCNzNGODM1MTgyREI2?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3wxMQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3M2k1QTFFMjU0MDJENjAyRUZE?revision=9\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjQuMTB8Mi4xfG98MjV8X05WX3wxMg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3NWkwNzM5RDdEMzE2QjVBN0M2?revision=9\"}"}}],"totalCount":12,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"attachments":{"__typename":"AttachmentConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"tags":{"__typename":"TagConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"timeToRead":19,"rawTeaser":"\u003cP\u003eEscalar nodes refere-se ao aumento ou diminuição da quantidade de nós (VMs) em execução no cluster do AKS. Ao escalar os nodes, você adiciona mais capacidade de computação, memória e armazenamento ao seu clu\u003c/P\u003e\n\u003cLI-IMAGE id=\"610856iED7CC68BFB30C3E7\" caption=\"false\" alt=\"autosacle.jpg\" align=\"inline\" resized=\"null\" size=\"large\" layout=\"null\" name=\"null\" src=\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg1NmlFRDdDQzY4QkZCMzBDM0U3?image-dimensions=750x750\u0026amp;revision=9\"\u003e\u003c/LI-IMAGE\u003e\n\u003cP\u003ester, o que ajuda a lidar com picos de tráfego ou carga de trabalho.\u003c/P\u003e","introduction":"Escalar nodes e escalar pods são dois conceitos distintos no contexto do AKS (Azure Kubernetes Service).","coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTRicnlvOA?revision=9","width":1024,"height":1024},"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""},"currentRevision":{"__ref":"Revision:revision:4221166_9"},"latestVersion":{"__typename":"FriendlyVersion","major":"1","minor":"0"},"metrics":{"__typename":"MessageMetrics","views":34},"visibilityScope":"PUBLIC","canonicalUrl":null,"seoTitle":null,"seoDescription":null,"placeholder":false,"originalMessageForPlaceholder":null,"contributors":{"__typename":"UserConnection","edges":[]},"nonCoAuthorContributors":{"__typename":"UserConnection","edges":[]},"coAuthors":{"__typename":"UserConnection","edges":[]},"blogMessagePolicies":{"__typename":"BlogMessagePolicies","canDoAuthoringActionsOnBlog":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.blog.action_can_do_authoring_action.accessDenied","key":"error.lithium.policies.blog.action_can_do_authoring_action.accessDenied","args":[]}}},"archivalData":null,"customFields":[],"revisions({\"constraints\":{\"isPublished\":{\"eq\":true}},\"first\":1})":{"__typename":"RevisionConnection","totalCount":9}},"Conversation:conversation:4221166":{"__typename":"Conversation","id":"conversation:4221166","solved":false,"topic":{"__ref":"BlogTopicMessage:message:4221166"},"lastPostingActivityTime":"2024-11-23T08:21:52.810-08:00","lastPostTime":"2024-11-23T08:21:52.810-08:00","unreadReplyCount":0,"isSubscribed":false},"ModerationData:moderation_data:4221166":{"__typename":"ModerationData","id":"moderation_data:4221166","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTRicnlvOA?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTRicnlvOA?revision=9","title":"Designer.jpg","associationType":"COVER","width":1024,"height":1024,"altText":""},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg1NmlFRDdDQzY4QkZCMzBDM0U3?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg1NmlFRDdDQzY4QkZCMzBDM0U3?revision=9","title":"autosacle.jpg","associationType":"TEASER","width":1024,"height":1024,"altText":"autosacle.jpg"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MGk4QTJCMzYyNTg3N0NBQTIw?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MGk4QTJCMzYyNTg3N0NBQTIw?revision=9","title":"wdossantos_0-1723838920377.png","associationType":"BODY","width":875,"height":220,"altText":"Detalhes da configuração HPA"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MmkyNjM0MDMzMTg0RUQ4NDND?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2MmkyNjM0MDMzMTg0RUQ4NDND?revision=9","title":"wdossantos_1-1723839069849.png","associationType":"BODY","width":840,"height":72,"altText":"kubectl get hpa -n aspnet"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2NGlDQzdFNjVFMzQyOENCODgw?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2NGlDQzdFNjVFMzQyOENCODgw?revision=9","title":"wdossantos_2-1723839137294.png","associationType":"BODY","width":757,"height":68,"altText":"kubectl get hpa -n aspnet"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2N2kwODkxMEVDQ0IwNzAzQzNC?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2N2kwODkxMEVDQ0IwNzAzQzNC?revision=9","title":"wdossantos_3-1723839215782.png","associationType":"BODY","width":875,"height":75,"altText":"kubectl get hpa -n aspnet"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OGlFRDU2NDZCQzBGMjNGQUI2?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OGlFRDU2NDZCQzBGMjNGQUI2?revision=9","title":"wdossantos_4-1723839268489.png","associationType":"BODY","width":797,"height":73,"altText":"kubectl get hpa -n aspnet"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OWk5NDE4RERBN0Y1RUYxM0ZD?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg2OWk5NDE4RERBN0Y1RUYxM0ZD?revision=9","title":"wdossantos_5-1723839392557.png","associationType":"BODY","width":870,"height":63,"altText":"kubectl get hpa -n aspnet"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MGk1RjNCMzJBQTBFQ0IwQjAy?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MGk1RjNCMzJBQTBFQ0IwQjAy?revision=9","title":"wdossantos_6-1723839442046.png","associationType":"BODY","width":875,"height":66,"altText":"kubectl get hpa -n aspnet"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MmlCOTZCNzNGODM1MTgyREI2?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3MmlCOTZCNzNGODM1MTgyREI2?revision=9","title":"wdossantos_7-1723839699558.png","associationType":"BODY","width":800,"height":232,"altText":"kubectl get hpa -n aspnet -w"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3M2k1QTFFMjU0MDJENjAyRUZE?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3M2k1QTFFMjU0MDJENjAyRUZE?revision=9","title":"wdossantos_8-1723839734508.png","associationType":"BODY","width":849,"height":572,"altText":"kubectl get hpa -n aspnet -w"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3NWkwNzM5RDdEMzE2QjVBN0M2?revision=9\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjIxMTY2LTYxMDg3NWkwNzM5RDdEMzE2QjVBN0M2?revision=9","title":"wdossantos_9-1723839846746.png","associationType":"BODY","width":800,"height":726,"altText":"kubectl get hpa -n aspnet -w"},"Revision:revision:4221166_9":{"__typename":"Revision","id":"revision:4221166_9","lastEditTime":"2024-11-23T08:20:49.372-08:00"},"CachedAsset:theme:customTheme1-1732228015673":{"__typename":"CachedAsset","id":"theme:customTheme1-1732228015673","value":{"id":"customTheme1","animation":{"fast":"150ms","normal":"250ms","slow":"500ms","slowest":"750ms","function":"cubic-bezier(0.07, 0.91, 0.51, 1)","__typename":"AnimationThemeSettings"},"avatar":{"borderRadius":"50%","collections":["default"],"__typename":"AvatarThemeSettings"},"basics":{"browserIcon":{"imageAssetName":"favicon-1730836283320.png","imageLastModified":"1730836286415","__typename":"ThemeAsset"},"customerLogo":{"imageAssetName":"favicon-1730836271365.png","imageLastModified":"1730836274203","__typename":"ThemeAsset"},"maximumWidthOfPageContent":"1300px","oneColumnNarrowWidth":"800px","gridGutterWidthMd":"30px","gridGutterWidthXs":"10px","pageWidthStyle":"WIDTH_OF_BROWSER","__typename":"BasicsThemeSettings"},"buttons":{"borderRadiusSm":"3px","borderRadius":"3px","borderRadiusLg":"5px","paddingY":"5px","paddingYLg":"7px","paddingYHero":"var(--lia-bs-btn-padding-y-lg)","paddingX":"12px","paddingXLg":"16px","paddingXHero":"60px","fontStyle":"NORMAL","fontWeight":"700","textTransform":"NONE","disabledOpacity":0.5,"primaryTextColor":"var(--lia-bs-white)","primaryTextHoverColor":"var(--lia-bs-white)","primaryTextActiveColor":"var(--lia-bs-white)","primaryBgColor":"var(--lia-bs-primary)","primaryBgHoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.85))","primaryBgActiveColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.7))","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","primaryBorderActive":"1px solid transparent","primaryBorderFocus":"1px solid var(--lia-bs-white)","primaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","secondaryTextColor":"var(--lia-bs-gray-900)","secondaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","secondaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","secondaryBgColor":"var(--lia-bs-gray-200)","secondaryBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","secondaryBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","secondaryBorder":"1px solid transparent","secondaryBorderHover":"1px solid transparent","secondaryBorderActive":"1px solid transparent","secondaryBorderFocus":"1px solid transparent","secondaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","tertiaryTextColor":"var(--lia-bs-gray-900)","tertiaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","tertiaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","tertiaryBgColor":"transparent","tertiaryBgHoverColor":"transparent","tertiaryBgActiveColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.04)","tertiaryBorder":"1px solid transparent","tertiaryBorderHover":"1px solid hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","tertiaryBorderActive":"1px solid transparent","tertiaryBorderFocus":"1px solid transparent","tertiaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","destructiveTextColor":"var(--lia-bs-danger)","destructiveTextHoverColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95))","destructiveTextActiveColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9))","destructiveBgColor":"var(--lia-bs-gray-200)","destructiveBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","destructiveBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","destructiveBorder":"1px solid transparent","destructiveBorderHover":"1px solid transparent","destructiveBorderActive":"1px solid transparent","destructiveBorderFocus":"1px solid transparent","destructiveBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","__typename":"ButtonsThemeSettings"},"border":{"color":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","mainContent":"NONE","sideContent":"LIGHT","radiusSm":"3px","radius":"5px","radiusLg":"9px","radius50":"100vw","__typename":"BorderThemeSettings"},"boxShadow":{"xs":"0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.16)","sm":"0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.12)","md":"0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","lg":"0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","__typename":"BoxShadowThemeSettings"},"cards":{"bgColor":"var(--lia-panel-bg-color)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":"var(--lia-box-shadow-xs)","__typename":"CardsThemeSettings"},"chip":{"maxWidth":"300px","height":"30px","__typename":"ChipThemeSettings"},"coreTypes":{"defaultMessageLinkColor":"var(--lia-bs-link-color)","defaultMessageLinkDecoration":"none","defaultMessageLinkFontStyle":"NORMAL","defaultMessageLinkFontWeight":"400","defaultMessageFontStyle":"NORMAL","defaultMessageFontWeight":"400","forumColor":"#4099E2","forumFontFamily":"var(--lia-bs-font-family-base)","forumFontWeight":"var(--lia-default-message-font-weight)","forumLineHeight":"var(--lia-bs-line-height-base)","forumFontStyle":"var(--lia-default-message-font-style)","forumMessageLinkColor":"var(--lia-default-message-link-color)","forumMessageLinkDecoration":"var(--lia-default-message-link-decoration)","forumMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","forumMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","forumSolvedColor":"#148563","blogColor":"#1CBAA0","blogFontFamily":"var(--lia-bs-font-family-base)","blogFontWeight":"var(--lia-default-message-font-weight)","blogLineHeight":"1.75","blogFontStyle":"var(--lia-default-message-font-style)","blogMessageLinkColor":"var(--lia-default-message-link-color)","blogMessageLinkDecoration":"var(--lia-default-message-link-decoration)","blogMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","blogMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","tkbColor":"#4C6B90","tkbFontFamily":"var(--lia-bs-font-family-base)","tkbFontWeight":"var(--lia-default-message-font-weight)","tkbLineHeight":"1.75","tkbFontStyle":"var(--lia-default-message-font-style)","tkbMessageLinkColor":"var(--lia-default-message-link-color)","tkbMessageLinkDecoration":"var(--lia-default-message-link-decoration)","tkbMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","tkbMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaColor":"#4099E2","qandaFontFamily":"var(--lia-bs-font-family-base)","qandaFontWeight":"var(--lia-default-message-font-weight)","qandaLineHeight":"var(--lia-bs-line-height-base)","qandaFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkColor":"var(--lia-default-message-link-color)","qandaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","qandaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaSolvedColor":"#3FA023","ideaColor":"#FF8000","ideaFontFamily":"var(--lia-bs-font-family-base)","ideaFontWeight":"var(--lia-default-message-font-weight)","ideaLineHeight":"var(--lia-bs-line-height-base)","ideaFontStyle":"var(--lia-default-message-font-style)","ideaMessageLinkColor":"var(--lia-default-message-link-color)","ideaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","ideaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","ideaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","contestColor":"#FCC845","contestFontFamily":"var(--lia-bs-font-family-base)","contestFontWeight":"var(--lia-default-message-font-weight)","contestLineHeight":"var(--lia-bs-line-height-base)","contestFontStyle":"var(--lia-default-message-link-font-style)","contestMessageLinkColor":"var(--lia-default-message-link-color)","contestMessageLinkDecoration":"var(--lia-default-message-link-decoration)","contestMessageLinkFontStyle":"ITALIC","contestMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","occasionColor":"#D13A1F","occasionFontFamily":"var(--lia-bs-font-family-base)","occasionFontWeight":"var(--lia-default-message-font-weight)","occasionLineHeight":"var(--lia-bs-line-height-base)","occasionFontStyle":"var(--lia-default-message-font-style)","occasionMessageLinkColor":"var(--lia-default-message-link-color)","occasionMessageLinkDecoration":"var(--lia-default-message-link-decoration)","occasionMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","occasionMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","grouphubColor":"#333333","categoryColor":"#949494","communityColor":"#FFFFFF","productColor":"#949494","__typename":"CoreTypesThemeSettings"},"colors":{"black":"#000000","white":"#FFFFFF","gray100":"#F7F7F7","gray200":"#F7F7F7","gray300":"#E8E8E8","gray400":"#D9D9D9","gray500":"#CCCCCC","gray600":"#717171","gray700":"#707070","gray800":"#545454","gray900":"#333333","dark":"#545454","light":"#F7F7F7","primary":"#0069D4","secondary":"#333333","bodyText":"#333333","bodyBg":"#FFFFFF","info":"#409AE2","success":"#41C5AE","warning":"#FCC844","danger":"#BC341B","alertSystem":"#FF6600","textMuted":"#707070","highlight":"#FFFCAD","outline":"var(--lia-bs-primary)","custom":["#D3F5A4","#243A5E"],"__typename":"ColorsThemeSettings"},"divider":{"size":"3px","marginLeft":"4px","marginRight":"4px","borderRadius":"50%","bgColor":"var(--lia-bs-gray-600)","bgColorActive":"var(--lia-bs-gray-600)","__typename":"DividerThemeSettings"},"dropdown":{"fontSize":"var(--lia-bs-font-size-sm)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius-sm)","dividerBg":"var(--lia-bs-gray-300)","itemPaddingY":"5px","itemPaddingX":"20px","headerColor":"var(--lia-bs-gray-700)","__typename":"DropdownThemeSettings"},"emoji":{"skinToneDefault":"#ffcd43","skinToneLight":"#fae3c5","skinToneMediumLight":"#e2cfa5","skinToneMedium":"#daa478","skinToneMediumDark":"#a78058","skinToneDark":"#5e4d43","__typename":"EmojiThemeSettings"},"heading":{"color":"var(--lia-bs-body-color)","fontFamily":"Segoe UI","fontStyle":"NORMAL","fontWeight":"400","h1FontSize":"34px","h2FontSize":"32px","h3FontSize":"28px","h4FontSize":"24px","h5FontSize":"20px","h6FontSize":"16px","lineHeight":"1.3","subHeaderFontSize":"11px","subHeaderFontWeight":"500","h1LetterSpacing":"normal","h2LetterSpacing":"normal","h3LetterSpacing":"normal","h4LetterSpacing":"normal","h5LetterSpacing":"normal","h6LetterSpacing":"normal","subHeaderLetterSpacing":"2px","h1FontWeight":"var(--lia-bs-headings-font-weight)","h2FontWeight":"var(--lia-bs-headings-font-weight)","h3FontWeight":"var(--lia-bs-headings-font-weight)","h4FontWeight":"var(--lia-bs-headings-font-weight)","h5FontWeight":"var(--lia-bs-headings-font-weight)","h6FontWeight":"var(--lia-bs-headings-font-weight)","__typename":"HeadingThemeSettings"},"icons":{"size10":"10px","size12":"12px","size14":"14px","size16":"16px","size20":"20px","size24":"24px","size30":"30px","size40":"40px","size50":"50px","size60":"60px","size80":"80px","size120":"120px","size160":"160px","__typename":"IconsThemeSettings"},"imagePreview":{"bgColor":"var(--lia-bs-gray-900)","titleColor":"var(--lia-bs-white)","controlColor":"var(--lia-bs-white)","controlBgColor":"var(--lia-bs-gray-800)","__typename":"ImagePreviewThemeSettings"},"input":{"borderColor":"var(--lia-bs-gray-600)","disabledColor":"var(--lia-bs-gray-600)","focusBorderColor":"var(--lia-bs-primary)","labelMarginBottom":"10px","btnFontSize":"var(--lia-bs-font-size-sm)","focusBoxShadow":"0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","checkLabelMarginBottom":"2px","checkboxBorderRadius":"3px","borderRadiusSm":"var(--lia-bs-border-radius-sm)","borderRadius":"var(--lia-bs-border-radius)","borderRadiusLg":"var(--lia-bs-border-radius-lg)","formTextMarginTop":"4px","textAreaBorderRadius":"var(--lia-bs-border-radius)","activeFillColor":"var(--lia-bs-primary)","__typename":"InputThemeSettings"},"loading":{"dotDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2)","dotLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5)","barDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06)","barLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4)","__typename":"LoadingThemeSettings"},"link":{"color":"var(--lia-bs-primary)","hoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%))","decoration":"none","hoverDecoration":"underline","__typename":"LinkThemeSettings"},"listGroup":{"itemPaddingY":"15px","itemPaddingX":"15px","borderColor":"var(--lia-bs-gray-300)","__typename":"ListGroupThemeSettings"},"modal":{"contentTextColor":"var(--lia-bs-body-color)","contentBg":"var(--lia-bs-white)","backgroundBg":"var(--lia-bs-black)","smSize":"440px","mdSize":"760px","lgSize":"1080px","backdropOpacity":0.3,"contentBoxShadowXs":"var(--lia-bs-box-shadow-sm)","contentBoxShadow":"var(--lia-bs-box-shadow)","headerFontWeight":"700","__typename":"ModalThemeSettings"},"navbar":{"position":"FIXED","background":{"attachment":null,"clip":null,"color":"var(--lia-bs-white)","imageAssetName":"","imageLastModified":"0","origin":null,"position":"CENTER_CENTER","repeat":"NO_REPEAT","size":"COVER","__typename":"BackgroundProps"},"backgroundOpacity":0.8,"paddingTop":"15px","paddingBottom":"15px","borderBottom":"1px solid var(--lia-bs-border-color)","boxShadow":"var(--lia-bs-box-shadow-sm)","brandMarginRight":"30px","brandMarginRightSm":"10px","brandLogoHeight":"30px","linkGap":"10px","linkJustifyContent":"flex-start","linkPaddingY":"5px","linkPaddingX":"10px","linkDropdownPaddingY":"9px","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkColor":"var(--lia-bs-body-color)","linkHoverColor":"var(--lia-bs-primary)","linkFontSize":"var(--lia-bs-font-size-sm)","linkFontStyle":"NORMAL","linkFontWeight":"400","linkTextTransform":"NONE","linkLetterSpacing":"normal","linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkBgColor":"transparent","linkBgHoverColor":"transparent","linkBorder":"none","linkBorderHover":"none","linkBoxShadow":"none","linkBoxShadowHover":"none","linkTextBorderBottom":"none","linkTextBorderBottomHover":"none","dropdownPaddingTop":"10px","dropdownPaddingBottom":"15px","dropdownPaddingX":"10px","dropdownMenuOffset":"2px","dropdownDividerMarginTop":"10px","dropdownDividerMarginBottom":"10px","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","controllerIconColor":"var(--lia-bs-body-color)","controllerIconHoverColor":"var(--lia-bs-body-color)","controllerTextColor":"var(--lia-nav-controller-icon-color)","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","controllerHighlightColor":"hsla(30, 100%, 50%)","controllerHighlightTextColor":"var(--lia-yiq-light)","controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerColor":"var(--lia-nav-controller-icon-color)","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","hamburgerBgColor":"transparent","hamburgerBgHoverColor":"transparent","hamburgerBorder":"none","hamburgerBorderHover":"none","collapseMenuMarginLeft":"20px","collapseMenuDividerBg":"var(--lia-nav-link-color)","collapseMenuDividerOpacity":0.16,"__typename":"NavbarThemeSettings"},"pager":{"textColor":"var(--lia-bs-link-color)","textFontWeight":"var(--lia-font-weight-md)","textFontSize":"var(--lia-bs-font-size-sm)","__typename":"PagerThemeSettings"},"panel":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-bs-border-radius)","borderColor":"var(--lia-bs-border-color)","boxShadow":"none","__typename":"PanelThemeSettings"},"popover":{"arrowHeight":"8px","arrowWidth":"16px","maxWidth":"300px","minWidth":"100px","headerBg":"var(--lia-bs-white)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius)","boxShadow":"0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15)","__typename":"PopoverThemeSettings"},"prism":{"color":"#000000","bgColor":"#f5f2f0","fontFamily":"var(--font-family-monospace)","fontSize":"var(--lia-bs-font-size-base)","fontWeightBold":"var(--lia-bs-font-weight-bold)","fontStyleItalic":"italic","tabSize":2,"highlightColor":"#b3d4fc","commentColor":"#62707e","punctuationColor":"#6f6f6f","namespaceOpacity":"0.7","propColor":"#990055","selectorColor":"#517a00","operatorColor":"#906736","operatorBgColor":"hsla(0, 0%, 100%, 0.5)","keywordColor":"#0076a9","functionColor":"#d3284b","variableColor":"#c14700","__typename":"PrismThemeSettings"},"rte":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":" var(--lia-panel-box-shadow)","customColor1":"#bfedd2","customColor2":"#fbeeb8","customColor3":"#f8cac6","customColor4":"#eccafa","customColor5":"#c2e0f4","customColor6":"#2dc26b","customColor7":"#f1c40f","customColor8":"#e03e2d","customColor9":"#b96ad9","customColor10":"#3598db","customColor11":"#169179","customColor12":"#e67e23","customColor13":"#ba372a","customColor14":"#843fa1","customColor15":"#236fa1","customColor16":"#ecf0f1","customColor17":"#ced4d9","customColor18":"#95a5a6","customColor19":"#7e8c8d","customColor20":"#34495e","customColor21":"#000000","customColor22":"#ffffff","defaultMessageHeaderMarginTop":"40px","defaultMessageHeaderMarginBottom":"20px","defaultMessageItemMarginTop":"0","defaultMessageItemMarginBottom":"10px","diffAddedColor":"hsla(170, 53%, 51%, 0.4)","diffChangedColor":"hsla(43, 97%, 63%, 0.4)","diffNoneColor":"hsla(0, 0%, 80%, 0.4)","diffRemovedColor":"hsla(9, 74%, 47%, 0.4)","specialMessageHeaderMarginTop":"40px","specialMessageHeaderMarginBottom":"20px","specialMessageItemMarginTop":"0","specialMessageItemMarginBottom":"10px","__typename":"RteThemeSettings"},"tags":{"bgColor":"var(--lia-bs-gray-200)","bgHoverColor":"var(--lia-bs-gray-400)","borderRadius":"var(--lia-bs-border-radius-sm)","color":"var(--lia-bs-body-color)","hoverColor":"var(--lia-bs-body-color)","fontWeight":"var(--lia-font-weight-md)","fontSize":"var(--lia-font-size-xxs)","textTransform":"UPPERCASE","letterSpacing":"0.5px","__typename":"TagsThemeSettings"},"toasts":{"borderRadius":"var(--lia-bs-border-radius)","paddingX":"12px","__typename":"ToastsThemeSettings"},"typography":{"fontFamilyBase":"Segoe UI","fontStyleBase":"NORMAL","fontWeightBase":"400","fontWeightLight":"300","fontWeightNormal":"400","fontWeightMd":"500","fontWeightBold":"700","letterSpacingSm":"normal","letterSpacingXs":"normal","lineHeightBase":"1.5","fontSizeBase":"16px","fontSizeXxs":"11px","fontSizeXs":"12px","fontSizeSm":"14px","fontSizeLg":"20px","fontSizeXl":"24px","smallFontSize":"14px","customFonts":[{"source":"SERVER","name":"Segoe UI","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"},{"style":"NORMAL","weight":"300","__typename":"FontStyleData"},{"style":"NORMAL","weight":"600","__typename":"FontStyleData"},{"style":"NORMAL","weight":"700","__typename":"FontStyleData"},{"style":"ITALIC","weight":"400","__typename":"FontStyleData"}],"assetNames":["SegoeUI-normal-400.woff2","SegoeUI-normal-300.woff2","SegoeUI-normal-600.woff2","SegoeUI-normal-700.woff2","SegoeUI-italic-400.woff2"],"__typename":"CustomFont"},{"source":"SERVER","name":"MWF Fluent Icons","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"}],"assetNames":["MWFFluentIcons-normal-400.woff2"],"__typename":"CustomFont"}],"__typename":"TypographyThemeSettings"},"unstyledListItem":{"marginBottomSm":"5px","marginBottomMd":"10px","marginBottomLg":"15px","marginBottomXl":"20px","marginBottomXxl":"25px","__typename":"UnstyledListItemThemeSettings"},"yiq":{"light":"#ffffff","dark":"#000000","__typename":"YiqThemeSettings"},"colorLightness":{"primaryDark":0.36,"primaryLight":0.74,"primaryLighter":0.89,"primaryLightest":0.95,"infoDark":0.39,"infoLight":0.72,"infoLighter":0.85,"infoLightest":0.93,"successDark":0.24,"successLight":0.62,"successLighter":0.8,"successLightest":0.91,"warningDark":0.39,"warningLight":0.68,"warningLighter":0.84,"warningLightest":0.93,"dangerDark":0.41,"dangerLight":0.72,"dangerLighter":0.89,"dangerLightest":0.95,"__typename":"ColorLightnessThemeSettings"},"localOverride":false,"__typename":"Theme"},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1731977288000","value":{"email.verification.title":"Email Verification Required","email.verification.message.update.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. To change your email, visit \u003clink\u003eMy Settings\u003c/link\u003e.","email.verification.message.resend.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. \u003clink\u003eResend email\u003c/link\u003e."},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1731977288000","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:quilt:o365.prod:pages/blogs/BlogMessagePage:board:DesenvolvedoresBR-1732228013874":{"__typename":"CachedAsset","id":"quilt:o365.prod:pages/blogs/BlogMessagePage:board:DesenvolvedoresBR-1732228013874","value":{"id":"BlogMessagePage","container":{"id":"Common","headerProps":{"backgroundImageProps":null,"backgroundColor":null,"addComponents":null,"removeComponents":["community.widget.bannerWidget"],"componentOrder":null,"__typename":"QuiltContainerSectionProps"},"headerComponentProps":{"community.widget.breadcrumbWidget":{"disableLastCrumbForDesktop":false}},"footerProps":null,"footerComponentProps":null,"items":[{"id":"blog-article","layout":"ONE_COLUMN","bgColor":null,"showTitle":null,"showDescription":null,"textPosition":null,"textColor":null,"sectionEditLevel":"LOCKED","bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"OneColumnQuiltSection","columnMap":{"main":[{"id":"blogs.widget.blogArticleWidget","className":"lia-blog-container","props":null,"__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"}},{"id":"section-1729184836777","layout":"MAIN_SIDE","bgColor":"transparent","showTitle":false,"showDescription":false,"textPosition":"CENTER","textColor":"var(--lia-bs-body-color)","sectionEditLevel":null,"bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"MainSideQuiltSection","columnMap":{"main":[],"side":[{"id":"custom.widget.Social_Sharing","className":null,"props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":true,"title":"Share","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"MainSideSectionColumns"}}],"__typename":"QuiltContainer"},"__typename":"Quilt","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-pages/blogs/BlogMessagePage-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-pages/blogs/BlogMessagePage-1731977288000","value":{"title":"{contextMessageSubject} | {communityTitle}","errorMissing":"This blog post cannot be found","name":"Blog Message Page","section.blog-article.title":"Blog Post","section.section-1729184836777.title":"","section.section-1729184836777.description":"","section.CncIde.title":"Blog Post","section.tifEmD.description":"","section.tifEmD.title":""},"localOverride":false},"CachedAsset:quiltWrapper:o365.prod:Common:1732227962288":{"__typename":"CachedAsset","id":"quiltWrapper:o365.prod:Common:1732227962288","value":{"id":"Common","header":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"community.widget.navbarWidget","props":{"showUserName":true,"showRegisterLink":true,"useIconLanguagePicker":true,"useLabelLanguagePicker":true,"className":"QuiltComponent_lia-component-edit-mode__0nCcm","links":{"sideLinks":[],"mainLinks":[{"children":[],"linkType":"INTERNAL","id":"gxcuf89792","params":{},"routeName":"CommunityPage"},{"children":[],"linkType":"EXTERNAL","id":"external-link","url":"/Directory","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft365","params":{"categoryId":"microsoft365"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-teams","params":{"categoryId":"MicrosoftTeams"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows","params":{"categoryId":"Windows"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-securityand-compliance","params":{"categoryId":"MicrosoftSecurityandCompliance"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"outlook","params":{"categoryId":"Outlook"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"planner","params":{"categoryId":"Planner"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows-server","params":{"categoryId":"Windows-Server"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"azure","params":{"categoryId":"Azure"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"exchange","params":{"categoryId":"Exchange"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-endpoint-manager","params":{"categoryId":"microsoft-endpoint-manager"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"s-q-l-server","params":{"categoryId":"SQL-Server"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-2","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities","url":"/","target":"BLANK"},{"children":[{"linkType":"INTERNAL","id":"education-sector","params":{"categoryId":"EducationSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"a-i","params":{"categoryId":"AI"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"i-t-ops-talk","params":{"categoryId":"ITOpsTalk"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"partner-community","params":{"categoryId":"PartnerCommunity"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-mechanics","params":{"categoryId":"MicrosoftMechanics"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"healthcare-and-life-sciences","params":{"categoryId":"HealthcareAndLifeSciences"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"public-sector","params":{"categoryId":"PublicSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"io-t","params":{"categoryId":"IoT"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"driving-adoption","params":{"categoryId":"DrivingAdoption"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"s-m-b","params":{"categoryId":"SMB"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"startupsat-microsoft","params":{"categoryId":"StartupsatMicrosoft"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-1","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities-1","url":"/","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external","url":"/Blogs","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external-1","url":"/Events","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft-learn-1","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-learn-blog","params":{"boardId":"MicrosoftLearnBlog","categoryId":"MicrosoftLearn"},"routeName":"BlogBoardPage"},{"linkType":"EXTERNAL","id":"external-10","url":"https://learningroomdirectory.microsoft.com/","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-3","url":"https://docs.microsoft.com/learn/dynamics365/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-4","url":"https://docs.microsoft.com/learn/m365/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-5","url":"https://docs.microsoft.com/learn/topics/sci/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-6","url":"https://docs.microsoft.com/learn/powerplatform/?wt.mc_id=techcom_header-webpage-powerplatform","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-7","url":"https://docs.microsoft.com/learn/github/?wt.mc_id=techcom_header-webpage-github","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-8","url":"https://docs.microsoft.com/learn/teams/?wt.mc_id=techcom_header-webpage-teams","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-9","url":"https://docs.microsoft.com/learn/dotnet/?wt.mc_id=techcom_header-webpage-dotnet","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-2","url":"https://docs.microsoft.com/learn/azure/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"}],"linkType":"INTERNAL","id":"microsoft-learn","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"children":[],"linkType":"INTERNAL","id":"community-info-center","params":{"categoryId":"Community-Info-Center"},"routeName":"CategoryPage"}]},"style":{"boxShadow":"var(--lia-bs-box-shadow-sm)","controllerHighlightColor":"hsla(30, 100%, 50%)","linkFontWeight":"400","dropdownDividerMarginBottom":"10px","hamburgerBorderHover":"none","linkBoxShadowHover":"none","linkFontSize":"14px","backgroundOpacity":0.8,"controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerBgColor":"transparent","hamburgerColor":"var(--lia-nav-controller-icon-color)","linkTextBorderBottom":"none","brandLogoHeight":"30px","linkBgHoverColor":"transparent","linkLetterSpacing":"normal","collapseMenuDividerOpacity":0.16,"dropdownPaddingBottom":"15px","paddingBottom":"15px","dropdownMenuOffset":"2px","hamburgerBgHoverColor":"transparent","borderBottom":"1px solid var(--lia-bs-border-color)","hamburgerBorder":"none","dropdownPaddingX":"10px","brandMarginRightSm":"10px","linkBoxShadow":"none","collapseMenuDividerBg":"var(--lia-nav-link-color)","linkColor":"var(--lia-bs-body-color)","linkJustifyContent":"flex-start","dropdownPaddingTop":"10px","controllerHighlightTextColor":"var(--lia-yiq-dark)","controllerTextColor":"var(--lia-nav-controller-icon-color)","background":{"imageAssetName":"","color":"var(--lia-bs-white)","size":"COVER","repeat":"NO_REPEAT","position":"CENTER_CENTER","imageLastModified":""},"linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkHoverColor":"var(--lia-bs-body-color)","position":"FIXED","linkBorder":"none","linkTextBorderBottomHover":"2px solid var(--lia-bs-body-color)","brandMarginRight":"30px","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","linkBorderHover":"none","collapseMenuMarginLeft":"20px","linkFontStyle":"NORMAL","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","linkPaddingX":"10px","linkPaddingY":"5px","paddingTop":"15px","linkTextTransform":"NONE","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","linkBgColor":"transparent","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkDropdownPaddingY":"9px","controllerIconColor":"var(--lia-bs-body-color)","dropdownDividerMarginTop":"10px","linkGap":"10px","controllerIconHoverColor":"var(--lia-bs-body-color)"},"showSearchIcon":false,"languagePickerStyle":"iconAndLabel"},"__typename":"QuiltComponent"},{"id":"community.widget.breadcrumbWidget","props":{"backgroundColor":"transparent","linkHighlightColor":"var(--lia-bs-primary)","visualEffects":{"showBottomBorder":true},"linkTextColor":"var(--lia-bs-gray-700)"},"__typename":"QuiltComponent"},{"id":"custom.widget.HeroBanner","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"usePageWidth":false,"useBackground":false,"cMax_items":3,"title":"","lazyLoad":false,"widgetChooser":"custom.widget.HeroBanner"},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"footer":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"custom.widget.MicrosoftFooter","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"__typename":"QuiltWrapper","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/ActionFeedback-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1731977288000","value":{"joinedGroupHub.title":"Welcome","joinedGroupHub.message":"You are now a member of this group and are subscribed to updates.","groupHubInviteNotFound.title":"Invitation Not Found","groupHubInviteNotFound.message":"Sorry, we could not find your invitation to the group. The owner may have canceled the invite.","groupHubNotFound.title":"Group Not Found","groupHubNotFound.message":"The grouphub you tried to join does not exist. It may have been deleted.","existingGroupHubMember.title":"Already Joined","existingGroupHubMember.message":"You are already a member of this group.","accountLocked.title":"Account Locked","accountLocked.message":"Your account has been locked due to multiple failed attempts. Try again in {lockoutTime} minutes.","editedGroupHub.title":"Changes Saved","editedGroupHub.message":"Your group has been updated.","leftGroupHub.title":"Goodbye","leftGroupHub.message":"You are no longer a member of this group and will not receive future updates.","deletedGroupHub.title":"Deleted","deletedGroupHub.message":"The group has been deleted.","groupHubCreated.title":"Group Created","groupHubCreated.message":"{groupHubName} is ready to use","accountClosed.title":"Account Closed","accountClosed.message":"The account has been closed and you will now be redirected to the homepage","resetTokenExpired.title":"Reset Password Link has Expired","resetTokenExpired.message":"Try resetting your password again","invalidUrl.title":"Invalid URL","invalidUrl.message":"The URL you're using is not recognized. Verify your URL and try again.","accountClosedForUser.title":"Account Closed","accountClosedForUser.message":"{userName}'s account is closed","inviteTokenInvalid.title":"Invitation Invalid","inviteTokenInvalid.message":"Your invitation to the community has been canceled or expired.","inviteTokenError.title":"Invitation Verification Failed","inviteTokenError.message":"The url you are utilizing is not recognized. Verify your URL and try again","pageNotFound.title":"Access Denied","pageNotFound.message":"You do not have access to this area of the community or it doesn't exist","eventAttending.title":"Responded as Attending","eventAttending.message":"You'll be notified when there's new activity and reminded as the event approaches","eventInterested.title":"Responded as Interested","eventInterested.message":"You'll be notified when there's new activity and reminded as the event approaches","eventNotFound.title":"Event Not Found","eventNotFound.message":"The event you tried to respond to does not exist."},"localOverride":false},"CachedAsset:component:custom.widget.HeroBanner-en-1732228088639":{"__typename":"CachedAsset","id":"component:custom.widget.HeroBanner-en-1732228088639","value":{"component":{"id":"custom.widget.HeroBanner","template":{"id":"HeroBanner","markupLanguage":"REACT","style":null,"texts":{"searchPlaceholderText":"Search this community","followActionText":"Follow","unfollowActionText":"Following","searchOnHoverText":"Please enter your search term(s) and then press return key to complete a search."},"defaults":{"config":{"applicablePages":[],"dynamicByCoreNode":null,"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.HeroBanner","form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"dynamicByCoreNode":null,"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"__typename":"Component","localOverride":false},"globalCss":null,"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"}},"localOverride":false},"CachedAsset:component:custom.widget.Social_Sharing-en-1732228088639":{"__typename":"CachedAsset","id":"component:custom.widget.Social_Sharing-en-1732228088639","value":{"component":{"id":"custom.widget.Social_Sharing","template":{"id":"Social_Sharing","markupLanguage":"HANDLEBARS","style":".social-share {\n .sharing-options {\n position: relative;\n margin: 0;\n padding: 0;\n line-height: 10px;\n display: flex;\n justify-content: left;\n gap: 5px;\n list-style-type: none;\n li {\n text-align: left;\n a {\n min-width: 30px;\n min-height: 30px;\n display: block;\n padding: 1px;\n .social-share-linkedin {\n img {\n background-color: rgb(0, 119, 181);\n }\n }\n .social-share-facebook {\n img {\n background-color: rgb(59, 89, 152);\n }\n }\n .social-share-x {\n img {\n background-color: rgb(0, 0, 0);\n }\n }\n .social-share-rss {\n img {\n background-color: rgb(0, 0, 0);\n }\n }\n .social-share-reddit {\n img {\n background-color: rgb(255, 69, 0);\n }\n }\n .social-share-email {\n img {\n background-color: rgb(132, 132, 132);\n }\n }\n }\n a {\n img {\n height: 2rem;\n }\n }\n }\n }\n}\n","texts":null,"defaults":{"config":{"applicablePages":[],"dynamicByCoreNode":false,"description":"Adds buttons to share to various social media websites","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Social_Sharing","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"dynamicByCoreNode":false,"description":"Adds buttons to share to various social media websites","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":{"css":".custom_widget_Social_Sharing_social-share_c7xxz_1 {\n .custom_widget_Social_Sharing_sharing-options_c7xxz_2 {\n position: relative;\n margin: 0;\n padding: 0;\n line-height: 0.625rem;\n display: flex;\n justify-content: left;\n gap: 0.3125rem;\n list-style-type: none;\n li {\n text-align: left;\n a {\n min-width: 1.875rem;\n min-height: 1.875rem;\n display: block;\n padding: 0.0625rem;\n .custom_widget_Social_Sharing_social-share-linkedin_c7xxz_18 {\n img {\n background-color: rgb(0, 119, 181);\n }\n }\n .custom_widget_Social_Sharing_social-share-facebook_c7xxz_23 {\n img {\n background-color: rgb(59, 89, 152);\n }\n }\n .custom_widget_Social_Sharing_social-share-x_c7xxz_28 {\n img {\n background-color: rgb(0, 0, 0);\n }\n }\n .custom_widget_Social_Sharing_social-share-rss_c7xxz_33 {\n img {\n background-color: rgb(0, 0, 0);\n }\n }\n .custom_widget_Social_Sharing_social-share-reddit_c7xxz_38 {\n img {\n background-color: rgb(255, 69, 0);\n }\n }\n .custom_widget_Social_Sharing_social-share-email_c7xxz_43 {\n img {\n background-color: rgb(132, 132, 132);\n }\n }\n }\n a {\n img {\n height: 2rem;\n }\n }\n }\n }\n}\n","tokens":{"social-share":"custom_widget_Social_Sharing_social-share_c7xxz_1","sharing-options":"custom_widget_Social_Sharing_sharing-options_c7xxz_2","social-share-linkedin":"custom_widget_Social_Sharing_social-share-linkedin_c7xxz_18","social-share-facebook":"custom_widget_Social_Sharing_social-share-facebook_c7xxz_23","social-share-x":"custom_widget_Social_Sharing_social-share-x_c7xxz_28","social-share-rss":"custom_widget_Social_Sharing_social-share-rss_c7xxz_33","social-share-reddit":"custom_widget_Social_Sharing_social-share-reddit_c7xxz_38","social-share-email":"custom_widget_Social_Sharing_social-share-email_c7xxz_43"}},"form":null},"localOverride":false},"CachedAsset:component:custom.widget.MicrosoftFooter-en-1732228088639":{"__typename":"CachedAsset","id":"component:custom.widget.MicrosoftFooter-en-1732228088639","value":{"component":{"id":"custom.widget.MicrosoftFooter","template":{"id":"MicrosoftFooter","markupLanguage":"HANDLEBARS","style":".context-uhf {\n min-width: 280px;\n font-size: 15px;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n \u0026 *,\n \u0026 *:before,\n \u0026 *:after {\n box-sizing: inherit;\n }\n a.c-uhff-link {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n \u0026a:link,\n \u0026a:focus,\n \u0026a:hover,\n \u0026a:active,\n \u0026a:visited {\n text-decoration: none;\n color: inherit;\n }\n \u0026 div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.c-uhff {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.c-uhff-nav {\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n \u0026:before,\n \u0026:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n .c-heading-4 {\n color: #616161;\n word-break: break-word;\n font-size: 15px;\n line-height: 20px;\n padding: 36px 0 4px;\n font-weight: 600;\n }\n .c-uhff-nav-row {\n .c-uhff-nav-group {\n display: block;\n float: left;\n min-height: 1px;\n vertical-align: text-top;\n padding: 0 12px;\n width: 100%;\n zoom: 1;\n \u0026:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.c-list.f-bare {\n font-size: 11px;\n line-height: 16px;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 8px 0;\n margin: 0;\n }\n }\n }\n }\n}\n.c-uhff-base {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 30px 5% 16px;\n \u0026:before,\n \u0026:after {\n content: ' ';\n display: table;\n }\n \u0026:after {\n clear: both;\n }\n a.c-uhff-ccpa {\n font-size: 11px;\n line-height: 16px;\n float: left;\n margin: 3px 0;\n }\n a.c-uhff-ccpa:hover {\n text-decoration: underline;\n }\n ul.c-list {\n font-size: 11px;\n line-height: 16px;\n float: right;\n margin: 3px 0;\n color: #616161;\n li {\n padding: 0 24px 4px 0;\n display: inline-block;\n }\n }\n .c-list.f-bare {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 30px 24px 16px;\n }\n}\n","texts":{"New tab":"What's New","New 1":"Surface Laptop Studio 2","New 2":"Surface Laptop Go 3","New 3":"Surface Pro 9","New 4":"Surface Laptop 5","New 5":"Surface Studio 2+","New 6":"Copilot in Windows","New 7":"Microsoft 365","New 8":"Windows 11 apps","Store tab":"Microsoft Store","Store 1":"Account Profile","Store 2":"Download Center","Store 3":"Microsoft Store Support","Store 4":"Returns","Store 5":"Order tracking","Store 6":"Certified Refurbished","Store 7":"Microsoft Store Promise","Store 8":"Flexible Payments","Education tab":"Education","Edu 1":"Microsoft in education","Edu 2":"Devices for education","Edu 3":"Microsoft Teams for Education","Edu 4":"Microsoft 365 Education","Edu 5":"How to buy for your school","Edu 6":"Educator Training and development","Edu 7":"Deals for students and parents","Edu 8":"Azure for students","Business tab":"Business","Bus 1":"Microsoft Cloud","Bus 2":"Microsoft Security","Bus 3":"Dynamics 365","Bus 4":"Microsoft 365","Bus 5":"Microsoft Power Platform","Bus 6":"Microsoft Teams","Bus 7":"Microsoft Industry","Bus 8":"Small Business","Developer tab":"Developer \u0026 IT","Dev 1":"Azure","Dev 2":"Developer Center","Dev 3":"Documentation","Dev 4":"Microsoft Learn","Dev 5":"Microsoft Tech Community","Dev 6":"Azure Marketplace","Dev 7":"AppSource","Dev 8":"Visual Studio","Company tab":"Company","Com 1":"Careers","Com 2":"About Microsoft","Com 3":"Company News","Com 4":"Privacy at Microsoft","Com 5":"Investors","Com 6":"Diversity and inclusion","Com 7":"Accessiblity","Com 8":"Sustainibility"},"defaults":{"config":{"applicablePages":[],"dynamicByCoreNode":false,"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.MicrosoftFooter","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"dynamicByCoreNode":false,"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":{"css":".custom_widget_MicrosoftFooter_context-uhf_f95yq_1 {\n min-width: 17.5rem;\n font-size: 0.9375rem;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n \u0026 *,\n \u0026 *:before,\n \u0026 *:after {\n box-sizing: inherit;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12 {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n \u0026a:link,\n \u0026a:focus,\n \u0026a:hover,\n \u0026a:active,\n \u0026a:visited {\n text-decoration: none;\n color: inherit;\n }\n \u0026 div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff_f95yq_12 {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.custom_widget_MicrosoftFooter_c-uhff-nav_f95yq_35 {\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n \u0026:before,\n \u0026:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n .custom_widget_MicrosoftFooter_c-heading-4_f95yq_49 {\n color: #616161;\n word-break: break-word;\n font-size: 0.9375rem;\n line-height: 1.25rem;\n padding: 2.25rem 0 0.25rem;\n font-weight: 600;\n }\n .custom_widget_MicrosoftFooter_c-uhff-nav-row_f95yq_57 {\n .custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58 {\n display: block;\n float: left;\n min-height: 0.0625rem;\n vertical-align: text-top;\n padding: 0 0.75rem;\n width: 100%;\n zoom: 1;\n \u0026:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.custom_widget_MicrosoftFooter_c-list_f95yq_78.custom_widget_MicrosoftFooter_f-bare_f95yq_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 0.5rem 0;\n margin: 0;\n }\n }\n }\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff-base_f95yq_94 {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 1.875rem 5% 1rem;\n \u0026:before,\n \u0026:after {\n content: ' ';\n display: table;\n }\n \u0026:after {\n clear: both;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_f95yq_107 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: left;\n margin: 0.1875rem 0;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_f95yq_107:hover {\n text-decoration: underline;\n }\n ul.custom_widget_MicrosoftFooter_c-list_f95yq_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: right;\n margin: 0.1875rem 0;\n color: #616161;\n li {\n padding: 0 1.5rem 0.25rem 0;\n display: inline-block;\n }\n }\n .custom_widget_MicrosoftFooter_c-list_f95yq_78.custom_widget_MicrosoftFooter_f-bare_f95yq_78 {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 1.875rem 1.5rem 1rem;\n }\n}\n","tokens":{"context-uhf":"custom_widget_MicrosoftFooter_context-uhf_f95yq_1","c-uhff-link":"custom_widget_MicrosoftFooter_c-uhff-link_f95yq_12","c-uhff":"custom_widget_MicrosoftFooter_c-uhff_f95yq_12","c-uhff-nav":"custom_widget_MicrosoftFooter_c-uhff-nav_f95yq_35","c-heading-4":"custom_widget_MicrosoftFooter_c-heading-4_f95yq_49","c-uhff-nav-row":"custom_widget_MicrosoftFooter_c-uhff-nav-row_f95yq_57","c-uhff-nav-group":"custom_widget_MicrosoftFooter_c-uhff-nav-group_f95yq_58","c-list":"custom_widget_MicrosoftFooter_c-list_f95yq_78","f-bare":"custom_widget_MicrosoftFooter_f-bare_f95yq_78","c-uhff-base":"custom_widget_MicrosoftFooter_c-uhff-base_f95yq_94","c-uhff-ccpa":"custom_widget_MicrosoftFooter_c-uhff-ccpa_f95yq_107"}},"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1731977288000","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBanner-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBanner-1731977288000","value":{"messageMarkedAsSpam":"This post has been marked as spam","messageMarkedAsSpam@board:TKB":"This article has been marked as spam","messageMarkedAsSpam@board:BLOG":"This post has been marked as spam","messageMarkedAsSpam@board:FORUM":"This discussion has been marked as spam","messageMarkedAsSpam@board:OCCASION":"This event has been marked as spam","messageMarkedAsSpam@board:IDEA":"This idea has been marked as spam","manageSpam":"Manage Spam","messageMarkedAsAbuse":"This post has been marked as abuse","messageMarkedAsAbuse@board:TKB":"This article has been marked as abuse","messageMarkedAsAbuse@board:BLOG":"This post has been marked as abuse","messageMarkedAsAbuse@board:FORUM":"This discussion has been marked as abuse","messageMarkedAsAbuse@board:OCCASION":"This event has been marked as abuse","messageMarkedAsAbuse@board:IDEA":"This idea has been marked as abuse","preModCommentAuthorText":"This comment will be published as soon as it is approved","preModCommentModeratorText":"This comment is awaiting moderation","messageMarkedAsOther":"This post has been rejected due to other reasons","messageMarkedAsOther@board:TKB":"This article has been rejected due to other reasons","messageMarkedAsOther@board:BLOG":"This post has been rejected due to other reasons","messageMarkedAsOther@board:FORUM":"This discussion has been rejected due to other reasons","messageMarkedAsOther@board:OCCASION":"This event has been rejected due to other reasons","messageMarkedAsOther@board:IDEA":"This idea has been rejected due to other reasons"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewStandard-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewStandard-1731977288000","value":{"anonymous":"Anonymous","author":"\u003ca\u003e{messageAuthorLogin}\u003c/a\u003e","authorBy":"\u003ca\u003e{messageAuthorLogin}\u003c/a\u003e","board":"\u003ca\u003e{messageBoardTitle}\u003c/a\u003e","replyToUser":" to {parentAuthor}","showMoreReplies":"Show More","replyText":"Reply","repliesText":"Replies","markedAsSolved":"Marked as Solved","movedMessagePlaceholder.BLOG":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.TKB":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.FORUM":"{count, plural, =0 {This reply has been} other {These replies have been} }","movedMessagePlaceholder.IDEA":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.OCCASION":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholderUrlText":"moved.","messageStatus":"Status: ","statusChanged":"Status changed: {previousStatus} to {currentStatus}","statusAdded":"Status added: {status}","statusRemoved":"Status removed: {status}","labelExpand":"expand replies","labelCollapse":"collapse replies","unhelpfulReason.reason1":"Content is outdated","unhelpfulReason.reason2":"Article is missing information","unhelpfulReason.reason3":"Content is for a different Product","unhelpfulReason.reason4":"Doesn't match what I was searching for"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyCallToAction-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyCallToAction-1731977288000","value":{"leaveReply":"Leave a reply...","leaveReply@board:BLOG@message:root":"Leave a comment...","leaveReply@board:TKB@message:root":"Leave a comment...","leaveReply@board:IDEA@message:root":"Leave a comment...","leaveReply@board:OCCASION@message:root":"Leave a comment...","repliesTurnedOff.FORUM":"Replies are turned off for this topic","repliesTurnedOff.BLOG":"Comments are turned off for this topic","repliesTurnedOff.TKB":"Comments are turned off for this topic","repliesTurnedOff.IDEA":"Comments are turned off for this topic","repliesTurnedOff.OCCASION":"Comments are turned off for this topic","infoText":"Stop poking me!"},"localOverride":false},"Category:category:Exchange":{"__typename":"Category","id":"category:Exchange","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Planner":{"__typename":"Category","id":"category:Planner","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Outlook":{"__typename":"Category","id":"category:Outlook","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Community-Info-Center":{"__typename":"Category","id":"category:Community-Info-Center","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:EducationSector":{"__typename":"Category","id":"category:EducationSector","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:DrivingAdoption":{"__typename":"Category","id":"category:DrivingAdoption","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Azure":{"__typename":"Category","id":"category:Azure","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows-Server":{"__typename":"Category","id":"category:Windows-Server","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:SQL-Server":{"__typename":"Category","id":"category:SQL-Server","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftTeams":{"__typename":"Category","id":"category:MicrosoftTeams","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PublicSector":{"__typename":"Category","id":"category:PublicSector","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft365":{"__typename":"Category","id":"category:microsoft365","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:IoT":{"__typename":"Category","id":"category:IoT","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:HealthcareAndLifeSciences":{"__typename":"Category","id":"category:HealthcareAndLifeSciences","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:SMB":{"__typename":"Category","id":"category:SMB","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:ITOpsTalk":{"__typename":"Category","id":"category:ITOpsTalk","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft-endpoint-manager":{"__typename":"Category","id":"category:microsoft-endpoint-manager","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftSecurityandCompliance":{"__typename":"Category","id":"category:MicrosoftSecurityandCompliance","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftLearn":{"__typename":"Category","id":"category:MicrosoftLearn","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Blog:board:MicrosoftLearnBlog":{"__typename":"Blog","id":"board:MicrosoftLearnBlog","blogPolicies":{"__typename":"BlogPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:AI":{"__typename":"Category","id":"category:AI","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftMechanics":{"__typename":"Category","id":"category:MicrosoftMechanics","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:StartupsatMicrosoft":{"__typename":"Category","id":"category:StartupsatMicrosoft","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PartnerCommunity":{"__typename":"Category","id":"category:PartnerCommunity","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows":{"__typename":"Category","id":"category:Windows","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"CachedAsset:text:en_US-components/community/Navbar-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1731977288000","value":{"community":"Community Home","inbox":"Inbox","manageContent":"Manage Content","tos":"Terms of Service","forgotPassword":"Forgot Password","themeEditor":"Theme Editor","edit":"Edit Navigation Bar","skipContent":"Skip to content","gxcuf89792":"Tech Community","external-1":"Events","s-m-b":"Small and Medium Businesses","windows-server":"Windows Server","education-sector":"Education Sector","driving-adoption":"Driving Adoption","microsoft-learn":"Microsoft Learn","s-q-l-server":"SQL Server","partner-community":"Microsoft Partner Community","microsoft365":"Microsoft 365","external-9":".NET","external-8":"Teams","external-7":"Github","products-services":"Products","external-6":"Power Platform","communities-1":"Topics","external-5":"Security, Compliance \u0026 Identity","planner":"Planner","external-4":"Microsoft 365","external-3":"Dynamics 365","azure":"Azure","healthcare-and-life-sciences":"Healthcare and Life Sciences","external-2":"Azure","microsoft-mechanics":"Microsoft Mechanics","microsoft-learn-1":"Community","external-10":"Learning Room Directory","microsoft-learn-blog":"Blog","windows":"Windows","i-t-ops-talk":"ITOps Talk","external-link-1":"View All","microsoft-securityand-compliance":"Security, Compliance, and Identity","public-sector":"Public Sector","community-info-center":"Lounge","external-link-2":"View All","microsoft-teams":"Microsoft Teams","external":"Blogs","microsoft-endpoint-manager":"Microsoft Intune and Configuration Manager","startupsat-microsoft":"Startups at Microsoft","exchange":"Exchange","a-i":"AI and Machine Learning","io-t":"Internet of Things (IoT)","outlook":"Outlook","external-link":"Community Hubs","communities":"Products"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1731977288000","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1731977288000","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1731977288000","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1731977288000","value":{"title.login":"Sign In","title.registration":"Register","title.forgotPassword":"Forgot Password","title.multiAuthLogin":"Sign In"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeLink-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1731977288000","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCoverImage-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCoverImage-1731977288000","value":{"coverImageTitle":"Cover Image"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeTitle-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeTitle-1731977288000","value":{"nodeTitle":"{nodeTitle, select, community {Community} other {{nodeTitle}}} "},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTimeToRead-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTimeToRead-1731977288000","value":{"minReadText":"{min} MIN READ"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1731977288000","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1731977288000","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1731977288000","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1731977288000","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1731977288000","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1731977288000","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRevision-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRevision-1731977288000","value":{"lastUpdatedDatePublished":"{publishCount, plural, one{Published} other{Updated}} {date}","lastUpdatedDateDraft":"Created {date}","version":"Version {major}.{minor}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1731977288000","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1731977288000","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageAuthorBio-1731977288000","value":{"sendMessage":"Send Message","actionMessage":"Follow this blog board to get notified when there's new activity","coAuthor":"CO-PUBLISHER","contributor":"CONTRIBUTOR","userProfile":"View Profile","iconlink":"Go to {name} {type}"},"localOverride":false},"CachedAsset:text:en_US-components/customComponent/CustomComponent-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/customComponent/CustomComponent-1731977288000","value":{"errorMessage":"Error rendering component id: {customComponentId}","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1731977288000","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1731977288000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1731977288000","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserRegistrationDate-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserRegistrationDate-1731977288000","value":{"noPrefix":"{date}","withPrefix":"Joined {date}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeAvatar-1731977288000","value":{"altTitle":"Node avatar for {nodeTitle}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeDescription-1731977288000","value":{"description":"{description}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1731977288000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1731977288000","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false}}}},"page":"/blogs/BlogMessagePage/BlogMessagePage","query":{"boardId":"desenvolvedoresbr","messageSubject":"escalando-nodes-e-pods-no-aks","messageId":"4221166"},"buildId":"PueESxikv_D6pRYmXbJsM","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"o365","openTelemetryServiceVersion":"24.10.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","khorosSignInIdpId":"kh-auth-idp","apolloDevToolsEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["LiUyRmNvbXBvbmVudHMlMkZjb21tdW5pdHklMkZOYXZiYXIlMkZOYXZiYXJXaWRnZXQudHN4","LiUyRmNvbXBvbmVudHMlMkZjb21tdW5pdHklMkZCcmVhZGNydW1iJTJGQnJlYWRjcnVtYldpZGdldC50c3g=","LiUyRmNvbXBvbmVudHMlMkZjdXN0b21Db21wb25lbnQlMkZDdXN0b21Db21wb25lbnQlMkZDdXN0b21Db21wb25lbnQudHN4","LiUyRmNvbXBvbmVudHMlMkZibG9ncyUyRkJsb2dBcnRpY2xlV2lkZ2V0JTJGQmxvZ0FydGljbGVXaWRnZXQudHN4","LiUyRmNvbXBvbmVudHMlMkZtZXNzYWdlcyUyRk1lc3NhZ2VWaWV3JTJGTWVzc2FnZVZpZXdTdGFuZGFyZCUyRk1lc3NhZ2VWaWV3U3RhbmRhcmQudHN4","LiUyRmNvbXBvbmVudHMlMkZleHRlcm5hbCUyRmNvbXBvbmVudHMlMkZFeHRlcm5hbENvbXBvbmVudC50c3g="],"appGip":true,"scriptLoader":[{"id":"analytics","src":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/pagescripts/1729284608000/analytics.js?page.id=BlogMessagePage\u0026entity.id=board%3Adesenvolvedoresbr\u0026entity.id=message%3A4221166","strategy":"afterInteractive"}]}</script><script lang="javascript" type="text/javascript"> const nextDataScript = document.getElementById("__NEXT_DATA__"); if (nextDataScript) { const nextData = JSON.parse(nextDataScript.textContent || '{}'); if (nextData.dynamicIds) { nextData.dynamicIds = nextData.dynamicIds.map(id => { const encodedString = atob(id); return decodeURIComponent(encodedString); }); nextDataScript.textContent = JSON.stringify(nextData); } } </script></body></html>