{"id":37231,"date":"2025-12-27T10:58:44","date_gmt":"2025-12-27T03:58:44","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=37231"},"modified":"2025-12-27T10:58:44","modified_gmt":"2025-12-27T03:58:44","slug":"horizontal-pod-autoscaler-hpa","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/","title":{"rendered":"Horizontal Pod Autoscaler (HPA) Kubernetes: Gi\u1ea3i \u0111\u00e1p to\u00e0n t\u1eadp"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed8I DUNG<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#HPA-la-gi\" >HPA l\u00e0 g\u00ec?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Phan-biet-Scale-out-va-Scale-up\" >Ph\u00e2n bi\u1ec7t Scale out v\u00e0 Scale up<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Co-che-hoat-dong-cua-Horizontal-Pod-Autoscaler-trong-Kubernetes\" >C\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Horizontal Pod Autoscaler trong Kubernetes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Loi-ich-cua-HPA-trong-Kubernetes\" >L\u1ee3i \u00edch c\u1ee7a HPA trong Kubernetes<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Toi-uu-hoa-quan-ly-tai-nguyen-trong-cluster-voi-HPA\" >T\u1ed1i \u01b0u h\u00f3a qu\u1ea3n l\u00fd t\u00e0i nguy\u00ean trong cluster v\u1edbi HPA<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#HPA-giup-han-che-tinh-trang-qua-tai-he-thong\" >HPA gi\u00fap h\u1ea1n ch\u1ebf t\u00ecnh tr\u1ea1ng qu\u00e1 t\u1ea3i h\u1ec7 th\u1ed1ng<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Anh-huong-cua-HPA-den-chi-phi-van-hanh\" >\u1ea2nh h\u01b0\u1edfng c\u1ee7a HPA \u0111\u1ebfn chi ph\u00ed v\u1eadn h\u00e0nh<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Vi-du-thuc-te-ve-cach-HPA-hoat-dong\" >V\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u1ec1 c\u00e1ch HPA ho\u1ea1t \u0111\u1ed9ng<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Vi-du-HPA-trong-ung-dung-web\" >V\u00ed d\u1ee5 HPA trong \u1ee9ng d\u1ee5ng web<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Vi-du-HPA-voi-dich-vu-API\" >V\u00ed d\u1ee5 HPA v\u1edbi d\u1ecbch v\u1ee5 API<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Vi-du-HPA-trong-ung-dung-xu-ly-du-lieu\" >V\u00ed d\u1ee5 HPA trong \u1ee9ng d\u1ee5ng x\u1eed l\u00fd d\u1eef li\u1ec7u<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#HPA-scale-dua-tren-nhung-loai-metrics-nao\" >HPA scale d\u1ef1a tr\u00ean nh\u1eefng lo\u1ea1i metrics n\u00e0o?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#CPU-utilization\" >CPU utilization<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Memory-utilization\" >Memory utilization<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Custom-metrics\" >Custom metrics<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Khi-nao-khong-nen-su-dung-Horizontal-Pod-Autoscaler\" >Khi n\u00e0o kh\u00f4ng n\u00ean s\u1eed d\u1ee5ng Horizontal Pod Autoscaler?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Workload-khong-phu-hop\" >Workload kh\u00f4ng ph\u00f9 h\u1ee3p<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Bottleneck-khong-nam-o-CPURAM\" >Bottleneck kh\u00f4ng n\u1eb1m \u1edf CPU\/RAM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Truong-hop-can-giai-phap-khac\" >Tr\u01b0\u1eddng h\u1ee3p c\u1ea7n gi\u1ea3i ph\u00e1p kh\u00e1c<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#So-sanh-HPA-VPA-va-Cluster-Autoscaler\" >So s\u00e1nh HPA, VPA v\u00e0 Cluster Autoscaler<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Huong-dan-thiet-lap-Horizontal-Pod-Autoscaler-trong-Kubernetes\" >H\u01b0\u1edbng d\u1eabn thi\u1ebft l\u1eadp Horizontal Pod Autoscaler trong Kubernetes<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Dieu-kien-can-co-truoc-khi-cau-hinh-HPA\" >\u0110i\u1ec1u ki\u1ec7n c\u1ea7n c\u00f3 tr\u01b0\u1edbc khi c\u1ea5u h\u00ecnh HPA<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Tao-Horizontal-Pod-Autoscaler-nhanh-bang-kubectl\" >T\u1ea1o Horizontal Pod Autoscaler nhanh b\u1eb1ng kubectl<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Cau-hinh-Horizontal-Pod-Autoscaler-bang-file-YAML\" >C\u1ea5u h\u00ecnh Horizontal Pod Autoscaler b\u1eb1ng file YAML<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Cach-giam-sat-va-kiem-tra-HPA-sau-khi-trien-khai\" >C\u00e1ch gi\u00e1m s\u00e1t v\u00e0 ki\u1ec3m tra HPA sau khi tri\u1ec3n khai<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Nhung-thach-thuc-thuong-gap-khi-su-dung-Horizontal-Pod-Autoscaler\" >Nh\u1eefng th\u00e1ch th\u1ee9c th\u01b0\u1eddng g\u1eb7p khi s\u1eed d\u1ee5ng Horizontal Pod Autoscaler<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Do-tre-trong-viec-thu-thap-va-phan-hoi-metrics\" >\u0110\u1ed9 tr\u1ec5 trong vi\u1ec7c thu th\u1eadp v\u00e0 ph\u1ea3n h\u1ed3i metrics<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Nguong-cau-hinh-chua-phu-hop-dan-den-scaling-khong-chinh-xac\" >Ng\u01b0\u1ee1ng c\u1ea5u h\u00ecnh ch\u01b0a ph\u00f9 h\u1ee3p d\u1eabn \u0111\u1ebfn scaling kh\u00f4ng ch\u00ednh x\u00e1c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Phu-thuoc-vao-Metrics-Server-va-external-metrics\" >Ph\u1ee5 thu\u1ed9c v\u00e0o Metrics Server v\u00e0 external metrics<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/#Ket-luan\" >K\u1ebft lu\u1eadn<\/a><\/li><\/ul><\/nav><\/div>\n<p>B\u1ea1n \u0111ang \u0111au \u0111\u1ea7u v\u00ec \u1ee9ng d\u1ee5ng li\u00ean t\u1ee5c g\u1eb7p s\u1ef1 c\u1ed1 (downtime) m\u1ed7i khi l\u01b0\u1ee3ng truy c\u1eadp t\u0103ng \u0111\u1ed9t bi\u1ebfn, hay lo l\u1eafng khi nh\u00ecn th\u1ea5y h\u00f3a \u0111\u01a1n Cloud cu\u1ed1i th\u00e1ng t\u0103ng v\u1ecdt do c\u1ea5p ph\u00e1t d\u01b0 th\u1eeba t\u00e0i nguy\u00ean?\u00a0Horizontal Pod Autoscaling (HPA)\u00a0ch\u00ednh l\u00e0 gi\u1ea3i ph\u00e1p c\u1ed1t l\u00f5i \u0111\u1ec3 gi\u1ea3i quy\u1ebft b\u00e0i to\u00e1n c\u00e2n b\u1eb1ng gi\u1eefa hi\u1ec7u n\u0103ng v\u00e0 chi ph\u00ed n\u00e0y.<\/p>\n<p>C\u00f9ng InterData ph\u00e2n t\u00edch <strong><a href=\"https:\/\/interdata.vn\/blog\/horizontal-pod-autoscaler-hpa\/\">Horizontal Pod Autoscaling (HPA) l\u00e0 g\u00ec<\/a><\/strong>, t\u01b0\u1eddng t\u1eadn c\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng, so s\u00e1nh HPA, VPA v\u00e0 Cluster Autoscaler v\u00e0 c\u00e1ch c\u1ea5u h\u00ecnh chu\u1ea9n x\u00e1c v\u00e0 nh\u1eefng &#8220;c\u1ea1m b\u1eaby&#8221; th\u1ef1c t\u1ebf c\u1ea7n tr\u00e1nh khi tri\u1ec3n khai HPA tr\u00ean h\u1ec7 th\u1ed1ng Kubernetes. H\u00e3y b\u1eaft \u0111\u1ea7u ngay \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a h\u1ea1 t\u1ea7ng c\u1ee7a b\u1ea1n.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"HPA-la-gi\"><\/span>HPA l\u00e0 g\u00ec?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Horizontal Pod Autoscaling<\/strong> (HPA) l\u00e0 m\u1ed9t API resource (t\u00e0i nguy\u00ean) c\u00f3 s\u1eb5n trong Kubernetes gi\u00fap t\u1ef1 \u0111\u1ed9ng \u0111i\u1ec1u ch\u1ec9nh s\u1ed1 l\u01b0\u1ee3ng Pod (scale out ho\u1eb7c scale in) trong m\u1ed9t Deployment, StatefulSet ho\u1eb7c ReplicaSet d\u1ef1a tr\u00ean m\u1ee9c \u0111\u1ed9 s\u1eed d\u1ee5ng t\u00e0i nguy\u00ean quan s\u00e1t \u0111\u01b0\u1ee3c.<\/p>\n<p>N\u00f3i m\u1ed9t c\u00e1ch \u0111\u01a1n gi\u1ea3n, HPA gi\u1ed1ng nh\u01b0 m\u1ed9t ng\u01b0\u1eddi qu\u1ea3n l\u00fd giao th\u00f4ng th\u00f4ng minh. Khi \u0111\u01b0\u1eddng \u0111\u00f4ng (traffic t\u0103ng), ng\u01b0\u1eddi qu\u1ea3n l\u00fd s\u1ebd m\u1edf th\u00eam l\u00e0n \u0111\u01b0\u1eddng (th\u00eam Pod). Khi \u0111\u01b0\u1eddng v\u1eafng, l\u00e0n \u0111\u01b0\u1eddng s\u1ebd \u0111\u01b0\u1ee3c \u0111\u00f3ng b\u1edbt \u0111\u1ec3 ti\u1ebft ki\u1ec7m chi ph\u00ed b\u1ea3o tr\u00ec.<\/p>\n<figure id=\"attachment_37233\" aria-describedby=\"caption-attachment-37233\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37233\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Horizontal-Pod-Autoscaling-HPA-la-gi.jpg\" alt=\"Horizontal Pod Autoscaling (HPA) l\u00e0 g\u00ec\" width=\"800\" height=\"400\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Horizontal-Pod-Autoscaling-HPA-la-gi.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Horizontal-Pod-Autoscaling-HPA-la-gi-300x150.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Horizontal-Pod-Autoscaling-HPA-la-gi-768x384.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-37233\" class=\"wp-caption-text\">Horizontal Pod Autoscaling (HPA) l\u00e0 g\u00ec?<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"Phan-biet-Scale-out-va-Scale-up\"><\/span>Ph\u00e2n bi\u1ec7t Scale out v\u00e0 Scale up<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u1ec3 hi\u1ec3u r\u00f5 b\u1ea3n ch\u1ea5t, b\u1ea1n c\u1ea7n ph\u00e2n bi\u1ec7t hai kh\u00e1i ni\u1ec7m th\u01b0\u1eddng g\u00e2y nh\u1ea7m l\u1eabn:<\/p>\n<ul>\n<li><strong>Scale out (Horizontal Scaling):<\/strong> \u0110\u00e2y l\u00e0 c\u00e1ch HPA ho\u1ea1t \u0111\u1ed9ng. H\u1ec7 th\u1ed1ng s\u1ebd t\u1ea1o th\u00eam nhi\u1ec1u Pod m\u1edbi gi\u1ed1ng h\u1ec7t nhau \u0111\u1ec3 chia s\u1ebb t\u1ea3i. V\u00ed d\u1ee5: B\u1ea1n \u0111ang c\u00f3 2 Pod ch\u1ea1y web server, khi t\u1ea3i t\u0103ng, HPA s\u1ebd t\u0103ng l\u00ean 5 Pod.<\/li>\n<li><strong>Scale up (Vertical Scaling):<\/strong> \u0110\u00e2y l\u00e0 c\u00e1ch VPA (Vertical Pod Autoscaler) ho\u1ea1t \u0111\u1ed9ng. H\u1ec7 th\u1ed1ng s\u1ebd gi\u1eef nguy\u00ean s\u1ed1 l\u01b0\u1ee3ng Pod nh\u01b0ng t\u0103ng th\u00eam s\u1ee9c m\u1ea1nh cho Pod \u0111\u00f3 (t\u0103ng CPU, t\u0103ng RAM). V\u00ed d\u1ee5: Pod \u0111ang d\u00f9ng 1 Core CPU s\u1ebd \u0111\u01b0\u1ee3c c\u1ea5p l\u00ean 2 Core CPU.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Co-che-hoat-dong-cua-Horizontal-Pod-Autoscaler-trong-Kubernetes\"><\/span>C\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Horizontal Pod Autoscaler trong Kubernetes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kubernetes tri\u1ec3n khai HPA th\u00f4ng qua m\u1ed9t <strong>v\u00f2ng l\u1eb7p \u0111i\u1ec1u khi\u1ec3n<\/strong> ch\u1ea1y theo chu k\u1ef3, \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh b\u1eb1ng c\u00e1c tham s\u1ed1 c\u1ee5 th\u1ec3. C\u00f3 th\u1ec3 hi\u1ec3u \u0111\u01a1n gi\u1ea3n r\u1eb1ng HPA v\u1eadn h\u00e0nh theo m\u1ed9t quy tr\u00ecnh l\u1eb7p g\u1ed3m c\u00e1c b\u01b0\u1edbc ki\u1ec3m tra, \u0111i\u1ec1u ch\u1ec9nh v\u00e0 ti\u1ebfp t\u1ee5c ki\u1ec3m tra l\u1ea1i.<\/p>\n<p>\u1ede b\u01b0\u1edbc \u0111\u1ea7u ti\u00ean, HPA li\u00ean t\u1ee5c theo d\u00f5i h\u1ec7 th\u1ed1ng metrics \u0111\u1ec3 thu th\u1eadp th\u00f4ng tin v\u1ec1 m\u1ee9c s\u1eed d\u1ee5ng t\u00e0i nguy\u00ean. D\u1ef1a tr\u00ean d\u1eef li\u1ec7u n\u00e0y, HPA s\u1ebd t\u00ednh to\u00e1n s\u1ed1 l\u01b0\u1ee3ng Pod c\u1ea7n thi\u1ebft \u0111\u1ec3 \u0111\u00e1p \u1ee9ng t\u1ea3i hi\u1ec7n t\u1ea1i. Sau \u0111\u00f3, HPA \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh m\u1edf r\u1ed9ng ho\u1eb7c thu g\u1ecdn s\u1ed1 l\u01b0\u1ee3ng b\u1ea3n sao c\u1ee7a \u1ee9ng d\u1ee5ng v\u00e0 th\u1ef1c hi\u1ec7n thay \u0111\u1ed5i t\u01b0\u01a1ng \u1ee9ng.<\/p>\n<p>Do qu\u00e1 tr\u00ecnh gi\u00e1m s\u00e1t di\u1ec5n ra li\u00ean t\u1ee5c, chu tr\u00ecnh n\u00e0y s\u1ebd quay l\u1ea1i b\u01b0\u1edbc \u0111\u1ea7u ti\u00ean v\u00e0 l\u1eb7p l\u1ea1i kh\u00f4ng ng\u1eebng, t\u1ea1o th\u00e0nh m\u1ed9t v\u00f2ng l\u1eb7p \u0111i\u1ec1u khi\u1ec3n gi\u00fap h\u1ec7 th\u1ed1ng lu\u00f4n th\u00edch \u1ee9ng v\u1edbi t\u1ea3i th\u1ef1c t\u1ebf.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Loi-ich-cua-HPA-trong-Kubernetes\"><\/span>L\u1ee3i \u00edch c\u1ee7a HPA trong Kubernetes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>T\u00ednh n\u0103ng Horizontal Pod Autoscaler (HPA) kh\u00f4ng ch\u1ec9 l\u00e0 m\u1ed9t c\u01a1 ch\u1ebf t\u1ef1 \u0111\u1ed9ng m\u1edf r\u1ed9ng \u0111\u01a1n thu\u1ea7n, m\u00e0 c\u00f2n \u1ea3nh h\u01b0\u1edfng tr\u1ef1c ti\u1ebfp \u0111\u1ebfn c\u00e1ch Kubernetes ph\u00e2n b\u1ed5 v\u00e0 qu\u1ea3n l\u00fd t\u00e0i nguy\u00ean. Vi\u1ec7c t\u1ef1 \u0111\u1ed9ng \u0111i\u1ec1u ch\u1ec9nh s\u1ed1 l\u01b0\u1ee3ng pod theo t\u1ea3i th\u1ef1c t\u1ebf c\u00f3 th\u1ec3 t\u1ea1o ra nh\u1eefng thay \u0111\u1ed5i \u0111\u00e1ng k\u1ec3 \u0111\u1ed1i v\u1edbi t\u1ed5ng t\u00e0i nguy\u00ean c\u1ee7a to\u00e0n b\u1ed9 cluster.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Toi-uu-hoa-quan-ly-tai-nguyen-trong-cluster-voi-HPA\"><\/span>T\u1ed1i \u01b0u h\u00f3a qu\u1ea3n l\u00fd t\u00e0i nguy\u00ean trong cluster v\u1edbi HPA<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Th\u00f4ng qua vi\u1ec7c t\u1ef1 \u0111\u1ed9ng t\u0103ng ho\u1eb7c gi\u1ea3m s\u1ed1 l\u01b0\u1ee3ng pod d\u1ef1a tr\u00ean nhu c\u1ea7u th\u1ef1c t\u1ebf, HPA gi\u00fap cluster s\u1eed d\u1ee5ng t\u00e0i nguy\u00ean m\u1ed9t c\u00e1ch h\u1ee3p l\u00fd h\u01a1n. Khi t\u1ea3i th\u1ea5p, h\u1ec7 th\u1ed1ng kh\u00f4ng c\u1ea7n duy tr\u00ec qu\u00e1 nhi\u1ec1u pod; ng\u01b0\u1ee3c l\u1ea1i, khi l\u01b0u l\u01b0\u1ee3ng t\u0103ng, HPA s\u1ebd m\u1edf r\u1ed9ng k\u1ecbp th\u1eddi \u0111\u1ec3 \u0111\u00e1p \u1ee9ng.<\/p>\n<p>Nh\u1edd \u0111\u00f3, doanh nghi\u1ec7p c\u00f3 th\u1ec3 gi\u1ea3m l\u00e3ng ph\u00ed t\u00e0i nguy\u00ean, ki\u1ec3m so\u00e1t chi ph\u00ed t\u1ed1t h\u01a1n v\u00e0 \u0111\u1ed3ng th\u1eddi c\u1ea3i thi\u1ec7n hi\u1ec7u su\u1ea5t chung c\u1ee7a h\u1ec7 th\u1ed1ng.<\/p>\n<figure id=\"attachment_37234\" aria-describedby=\"caption-attachment-37234\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37234\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Loi-ich-cua-HPA-trong-Kubernetes.jpg\" alt=\"L\u1ee3i \u00edch c\u1ee7a HPA trong Kubernetes\" width=\"800\" height=\"500\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Loi-ich-cua-HPA-trong-Kubernetes.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Loi-ich-cua-HPA-trong-Kubernetes-300x188.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Loi-ich-cua-HPA-trong-Kubernetes-768x480.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-37234\" class=\"wp-caption-text\">L\u1ee3i \u00edch c\u1ee7a HPA trong Kubernetes<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"HPA-giup-han-che-tinh-trang-qua-tai-he-thong\"><\/span>HPA gi\u00fap h\u1ea1n ch\u1ebf t\u00ecnh tr\u1ea1ng qu\u00e1 t\u1ea3i h\u1ec7 th\u1ed1ng<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Khi \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh v\u00e0 v\u1eadn h\u00e0nh \u0111\u00fang c\u00e1ch, HPA g\u00f3p ph\u1ea7n gi\u1ea3m nguy c\u01a1 qu\u00e1 t\u1ea3i trong cluster. Thay v\u00ec \u0111\u1ec3 m\u1ed9t v\u00e0i pod ph\u1ea3i x\u1eed l\u00fd kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c qu\u00e1 l\u1edbn trong khi c\u00e1c pod kh\u00e1c g\u1ea7n nh\u01b0 nh\u00e0n r\u1ed7i, HPA gi\u1eef cho s\u1ed1 l\u01b0\u1ee3ng pod lu\u00f4n \u1edf m\u1ee9c ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u th\u1ef1c t\u1ebf.<\/p>\n<p>C\u00e1ch ph\u00e2n b\u1ed5 n\u00e0y kh\u00f4ng ch\u1ec9 gi\u00fap h\u1ec7 th\u1ed1ng v\u1eadn h\u00e0nh \u1ed5n \u0111\u1ecbnh h\u01a1n m\u00e0 c\u00f2n c\u1ea3i thi\u1ec7n tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng, h\u1ea1n ch\u1ebf c\u00e1c v\u1ea5n \u0111\u1ec1 v\u1ec1 hi\u1ec7u su\u1ea5t nh\u01b0 \u0111\u1ed9 tr\u1ec5 cao ho\u1eb7c th\u1eddi gian ph\u1ea3n h\u1ed3i k\u00e9o d\u00e0i.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Anh-huong-cua-HPA-den-chi-phi-van-hanh\"><\/span>\u1ea2nh h\u01b0\u1edfng c\u1ee7a HPA \u0111\u1ebfn chi ph\u00ed v\u1eadn h\u00e0nh<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>B\u00ean c\u1ea1nh hi\u1ec7u su\u1ea5t, HPA c\u00f2n \u0111\u00f3ng vai tr\u00f2 quan tr\u1ecdng trong vi\u1ec7c ki\u1ec3m so\u00e1t chi ph\u00ed. Khi h\u1ec7 th\u1ed1ng ch\u1ec9 s\u1eed d\u1ee5ng \u0111\u00fang l\u01b0\u1ee3ng t\u00e0i nguy\u00ean c\u1ea7n thi\u1ebft t\u1ea1i t\u1eebng th\u1eddi \u0111i\u1ec3m, chi ph\u00ed cloud c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u1ed1i \u01b0u \u0111\u00e1ng k\u1ec3. \u0110i\u1ec1u n\u00e0y \u0111\u1eb7c bi\u1ec7t c\u00f3 \u00fd ngh\u0129a v\u1edbi c\u00e1c doanh nghi\u1ec7p nh\u1ecf ho\u1eb7c startup, n\u01a1i ng\u00e2n s\u00e1ch th\u01b0\u1eddng kh\u00f4ng qu\u00e1 d\u01b0 d\u1ea3.<\/p>\n<p>Tuy v\u1eady, vi\u1ec7c theo d\u00f5i v\u00e0 gi\u00e1m s\u00e1t HPA v\u1eabn r\u1ea5t c\u1ea7n thi\u1ebft \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o c\u01a1 ch\u1ebf autoscaling ho\u1ea1t \u0111\u1ed9ng \u0111\u00fang nh\u01b0 mong mu\u1ed1n, tr\u00e1nh tr\u01b0\u1eddng h\u1ee3p scale kh\u00f4ng h\u1ee3p l\u00fd d\u1eabn \u0111\u1ebfn l\u00e3ng ph\u00ed t\u00e0i nguy\u00ean.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Vi-du-thuc-te-ve-cach-HPA-hoat-dong\"><\/span>V\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u1ec1 c\u00e1ch HPA ho\u1ea1t \u0111\u1ed9ng<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0110\u1ec3 h\u00ecnh dung r\u00f5 h\u01a1n c\u00e1ch HPA \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng trong th\u1ef1c t\u1ebf, h\u00e3y c\u00f9ng xem qua m\u1ed9t s\u1ed1 t\u00ecnh hu\u1ed1ng ph\u1ed5 bi\u1ebfn trong c\u00e1c h\u1ec7 th\u1ed1ng hi\u1ec7n nay.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Vi-du-HPA-trong-ung-dung-web\"><\/span>V\u00ed d\u1ee5 HPA trong \u1ee9ng d\u1ee5ng web<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Gi\u1ea3 s\u1eed b\u1ea1n \u0111ang x\u00e2y d\u1ef1ng m\u1ed9t website th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed. V\u00e0o nh\u1eefng d\u1ecbp cao \u0111i\u1ec3m nh\u01b0 Black Friday, l\u01b0u l\u01b0\u1ee3ng truy c\u1eadp c\u00f3 th\u1ec3 t\u0103ng m\u1ea1nh trong th\u1eddi gian ng\u1eafn. V\u1edbi HPA, s\u1ed1 l\u01b0\u1ee3ng pod s\u1ebd \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng m\u1edf r\u1ed9ng \u0111\u1ec3 x\u1eed l\u00fd l\u01b0\u1ee3ng truy c\u1eadp cao m\u00e0 kh\u00f4ng c\u1ea7n can thi\u1ec7p th\u1ee7 c\u00f4ng.<\/p>\n<p>Khi chi\u1ebfn d\u1ecbch k\u1ebft th\u00fac v\u00e0 l\u01b0\u1ee3ng truy c\u1eadp gi\u1ea3m xu\u1ed1ng, HPA s\u1ebd t\u1ef1 \u0111\u1ed9ng thu g\u1ecdn s\u1ed1 pod, gi\u00fap ti\u1ebft ki\u1ec7m t\u00e0i nguy\u00ean. Nh\u1edd \u0111\u00f3, \u1ee9ng d\u1ee5ng v\u1eabn duy tr\u00ec kh\u1ea3 n\u0103ng ph\u1ee5c v\u1ee5 \u1ed5n \u0111\u1ecbnh m\u00e0 kh\u00f4ng l\u00e0m gi\u00e1n \u0111o\u1ea1n tr\u1ea3i nghi\u1ec7m mua s\u1eafm c\u1ee7a ng\u01b0\u1eddi d\u00f9ng.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Vi-du-HPA-voi-dich-vu-API\"><\/span>V\u00ed d\u1ee5 HPA v\u1edbi d\u1ecbch v\u1ee5 API<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Trong tr\u01b0\u1eddng h\u1ee3p b\u1ea1n ph\u00e1t tri\u1ec3n m\u1ed9t d\u1ecbch v\u1ee5 API \u0111\u01b0\u1ee3c nhi\u1ec1u h\u1ec7 th\u1ed1ng kh\u00e1c g\u1ecdi \u0111\u1ebfn, l\u01b0u l\u01b0\u1ee3ng request th\u01b0\u1eddng bi\u1ebfn \u0111\u1ed9ng theo th\u1eddi gian. HPA cho ph\u00e9p t\u1ef1 \u0111\u1ed9ng \u0111i\u1ec1u ch\u1ec9nh s\u1ed1 l\u01b0\u1ee3ng pod d\u1ef1a tr\u00ean m\u1ee9c \u0111\u1ed9 t\u1ea3i m\u00e0 API \u0111ang ph\u1ea3i x\u1eed l\u00fd.<\/p>\n<p>Khi l\u01b0\u1ee3ng request t\u0103ng, HPA s\u1ebd t\u1ea1o th\u00eam pod \u0111\u1ec3 \u0111\u00e1p \u1ee9ng k\u1ecbp th\u1eddi. Khi l\u01b0u l\u01b0\u1ee3ng gi\u1ea3m, s\u1ed1 pod c\u0169ng s\u1ebd \u0111\u01b0\u1ee3c thu h\u1eb9p l\u1ea1i, t\u1eeb \u0111\u00f3 gi\u00fap ti\u1ebft ki\u1ec7m t\u00e0i nguy\u00ean v\u00e0 gi\u1ea3m chi ph\u00ed v\u1eadn h\u00e0nh.<\/p>\n<figure id=\"attachment_37235\" aria-describedby=\"caption-attachment-37235\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37235\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Vi-du-thuc-te-ve-cach-HPA-hoat-dong.jpg\" alt=\"V\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u1ec1 c\u00e1ch HPA ho\u1ea1t \u0111\u1ed9ng\" width=\"800\" height=\"500\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Vi-du-thuc-te-ve-cach-HPA-hoat-dong.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Vi-du-thuc-te-ve-cach-HPA-hoat-dong-300x188.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Vi-du-thuc-te-ve-cach-HPA-hoat-dong-768x480.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-37235\" class=\"wp-caption-text\">V\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u1ec1 c\u00e1ch HPA ho\u1ea1t \u0111\u1ed9ng<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"Vi-du-HPA-trong-ung-dung-xu-ly-du-lieu\"><\/span>V\u00ed d\u1ee5 HPA trong \u1ee9ng d\u1ee5ng x\u1eed l\u00fd d\u1eef li\u1ec7u<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u1ed1i v\u1edbi c\u00e1c \u1ee9ng d\u1ee5ng x\u1eed l\u00fd d\u1eef li\u1ec7u l\u1edbn, HPA c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 \u0111i\u1ec1u ch\u1ec9nh s\u1ed1 l\u01b0\u1ee3ng pod d\u1ef1a tr\u00ean kh\u1ed1i l\u01b0\u1ee3ng d\u1eef li\u1ec7u c\u1ea7n x\u1eed l\u00fd. Khi l\u01b0\u1ee3ng d\u1eef li\u1ec7u t\u0103ng, HPA s\u1ebd m\u1edf r\u1ed9ng pod \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o qu\u00e1 tr\u00ecnh x\u1eed l\u00fd di\u1ec5n ra nhanh v\u00e0 hi\u1ec7u qu\u1ea3.<\/p>\n<p>Sau khi ho\u00e0n t\u1ea5t c\u00e1c t\u00e1c v\u1ee5 v\u00e0 kh\u1ed1i l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c gi\u1ea3m xu\u1ed1ng, HPA s\u1ebd t\u1ef1 \u0111\u1ed9ng gi\u1ea3m s\u1ed1 l\u01b0\u1ee3ng pod. \u0110i\u1ec1u n\u00e0y gi\u00fap h\u1ec7 th\u1ed1ng duy tr\u00ec tr\u1ea1ng th\u00e1i \u1ed5n \u0111\u1ecbnh v\u00e0 s\u1eed d\u1ee5ng t\u00e0i nguy\u00ean m\u1ed9t c\u00e1ch h\u1ee3p l\u00fd trong m\u1ecdi t\u00ecnh hu\u1ed1ng.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"HPA-scale-dua-tren-nhung-loai-metrics-nao\"><\/span>HPA scale d\u1ef1a tr\u00ean nh\u1eefng lo\u1ea1i metrics n\u00e0o?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Vi\u1ec7c ch\u1ecdn \u0111\u00fang lo\u1ea1i metrics \u0111\u1ec3 trigger (k\u00edch ho\u1ea1t) t\u00ednh n\u0103ng <strong>Horizontal Pod Autoscaling (HPA)<\/strong> quy\u1ebft \u0111\u1ecbnh \u0111\u1ed9 nh\u1ea1y v\u00e0 \u0111\u1ed9 ch\u00ednh x\u00e1c c\u1ee7a h\u1ec7 th\u1ed1ng. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 3 nh\u00f3m metrics ch\u00ednh m\u00e0 b\u1ea1n c\u1ea7n n\u1eafm r\u00f5.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"CPU-utilization\"><\/span>CPU utilization<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u00e2y l\u00e0 ch\u1ec9 s\u1ed1 ph\u1ed5 bi\u1ebfn nh\u1ea5t v\u00e0 d\u1ec5 c\u1ea5u h\u00ecnh nh\u1ea5t.<\/p>\n<ul>\n<li><strong>Nguy\u00ean l\u00fd:<\/strong> Khi \u1ee9ng d\u1ee5ng x\u1eed l\u00fd nhi\u1ec1u t\u00e1c v\u1ee5, CPU t\u0103ng cao. HPA s\u1ebd th\u00eam Pod \u0111\u1ec3 chia nh\u1ecf t\u00e1c v\u1ee5.<\/li>\n<li><strong>Ph\u00f9 h\u1ee3p v\u1edbi:<\/strong> C\u00e1c \u1ee9ng d\u1ee5ng t\u00ednh to\u00e1n nhi\u1ec1u, x\u1eed l\u00fd logic, web server truy\u1ec1n th\u1ed1ng.<\/li>\n<li><strong>L\u01b0u \u00fd:<\/strong> CPU l\u00e0 t\u00e0i nguy\u00ean &#8220;n\u00e9n \u0111\u01b0\u1ee3c&#8221; (compressible). N\u1ebfu thi\u1ebfu CPU, \u1ee9ng d\u1ee5ng ch\u1ec9 ch\u1ea1y ch\u1eadm \u0111i ch\u1ee9 \u00edt khi b\u1ecb crash ngay l\u1eadp t\u1ee9c. Do \u0111\u00f3, scale theo CPU kh\u00e1 an to\u00e0n.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Memory-utilization\"><\/span>Memory utilization<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Scale theo RAM ph\u1ee9c t\u1ea1p h\u01a1n nhi\u1ec1u so v\u1edbi CPU.<\/p>\n<ul>\n<li><strong>Nguy\u00ean l\u00fd:<\/strong> Khi l\u01b0\u1ee3ng ng\u01b0\u1eddi d\u00f9ng t\u0103ng, b\u1ed9 nh\u1edb \u0111\u1ec7m (cache) ho\u1eb7c session t\u0103ng, ng\u1ed1n RAM.<\/li>\n<li><strong>V\u1ea5n \u0111\u1ec1:<\/strong> RAM l\u00e0 t\u00e0i nguy\u00ean &#8220;kh\u00f4ng n\u00e9n \u0111\u01b0\u1ee3c&#8221; (incompressible). Khi h\u1ebft RAM, Pod s\u1ebd b\u1ecb OOMKilled (Crash).<\/li>\n<li><strong>R\u1ee7i ro:<\/strong> Vi\u1ec7c th\u00eam Pod m\u1edbi \u0111\u00f4i khi kh\u00f4ng gi\u1ea3i quy\u1ebft \u0111\u01b0\u1ee3c v\u1ea5n \u0111\u1ec1 n\u1ebfu \u1ee9ng d\u1ee5ng b\u1ecb r\u00f2 r\u1ec9 b\u1ed9 nh\u1edb (Memory Leak). N\u1ebfu code b\u1ecb leak memory, HPA s\u1ebd li\u00ean t\u1ee5c t\u1ea1o th\u00eam Pod cho \u0111\u1ebfn khi ch\u1ea1m tr\u1ea7n maxReplicas m\u00e0 v\u1eabn kh\u00f4ng gi\u1ea3m \u0111\u01b0\u1ee3c m\u1ee9c s\u1eed d\u1ee5ng RAM trung b\u00ecnh.<\/li>\n<li><strong>L\u1eddi khuy\u00ean t\u1eeb InterData:<\/strong> Ch\u1ec9 s\u1eed d\u1ee5ng scale theo Memory khi b\u1ea1n ch\u1eafc ch\u1eafn \u1ee9ng d\u1ee5ng qu\u1ea3n l\u00fd b\u1ed9 nh\u1edb t\u1ed1t v\u00e0 h\u00e0nh vi t\u0103ng RAM t\u1ef7 l\u1ec7 thu\u1eadn v\u1edbi l\u01b0\u1ee3ng request.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Custom-metrics\"><\/span>Custom metrics<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u00f4i khi CPU v\u00e0 RAM kh\u00f4ng ph\u1ea3n \u00e1nh \u0111\u00fang t\u1ea3i c\u1ee7a h\u1ec7 th\u1ed1ng. V\u00ed d\u1ee5: M\u1ed9t worker x\u1eed l\u00fd tin nh\u1eafn trong h\u00e0ng \u0111\u1ee3i (Queue). CPU c\u00f3 th\u1ec3 th\u1ea5p, nh\u01b0ng h\u00e0ng \u0111\u1ee3i \u0111ang t\u1eafc ngh\u1ebdn h\u00e0ng ngh\u00ecn tin nh\u1eafn.<br \/>\nL\u00fac n\u00e0y, b\u1ea1n c\u1ea7n <strong>Horizontal Pod Autoscaling (HPA)<\/strong> d\u1ef1a tr\u00ean Custom Metrics:<\/p>\n<ul>\n<li><strong>Requests Per Second (RPS):<\/strong> S\u1ed1 l\u01b0\u1ee3ng y\u00eau c\u1ea7u HTTP tr\u00ean gi\u00e2y.<\/li>\n<li><strong>Queue Length:<\/strong> S\u1ed1 l\u01b0\u1ee3ng message \u0111ang ch\u1edd x\u1eed l\u00fd trong Kafka, RabbitMQ.<\/li>\n<li><strong>Packet Rate:<\/strong> S\u1ed1 l\u01b0\u1ee3ng g\u00f3i tin m\u1ea1ng.<\/li>\n<\/ul>\n<p>\u0110\u1ec3 l\u00e0m \u0111\u01b0\u1ee3c \u0111i\u1ec1u n\u00e0y, b\u1ea1n c\u1ea7n c\u00e0i \u0111\u1eb7t th\u00eam <strong>Prometheus Adapter<\/strong> \u0111\u1ec3 chuy\u1ec3n \u0111\u1ed5i d\u1eef li\u1ec7u t\u1eeb Prometheus th\u00e0nh \u0111\u1ecbnh d\u1ea1ng m\u00e0 HPA hi\u1ec3u \u0111\u01b0\u1ee3c. \u0110\u00e2y l\u00e0 k\u1ef9 thu\u1eadt n\u00e2ng cao d\u00e0nh cho c\u00e1c h\u1ec7 th\u1ed1ng l\u1edbn.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Khi-nao-khong-nen-su-dung-Horizontal-Pod-Autoscaler\"><\/span>Khi n\u00e0o kh\u00f4ng n\u00ean s\u1eed d\u1ee5ng Horizontal Pod Autoscaler?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>D\u00f9 t\u00ednh n\u0103ng <strong>Horizontal Pod Autoscaling (HPA)<\/strong> r\u1ea5t m\u1ea1nh m\u1ebd, nh\u01b0ng n\u00f3 kh\u00f4ng ph\u1ea3i l\u00e0 &#8220;vi\u00ean \u0111\u1ea1n b\u1ea1c&#8221; cho m\u1ecdi v\u1ea5n \u0111\u1ec1. C\u00f3 nh\u1eefng tr\u01b0\u1eddng h\u1ee3p vi\u1ec7c \u00e1p d\u1ee5ng HPA s\u1ebd g\u00e2y h\u1ea1i nhi\u1ec1u h\u01a1n l\u1ee3i.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Workload-khong-phu-hop\"><\/span>Workload kh\u00f4ng ph\u00f9 h\u1ee3p<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>C\u00e1c \u1ee9ng d\u1ee5ng Stateful (c\u00f3 l\u01b0u tr\u1ea1ng th\u00e1i) nh\u01b0 Database (MySQL, PostgreSQL, MongoDB) r\u1ea5t kh\u00f3 \u0111\u1ec3 scale out t\u1ef1 \u0111\u1ed9ng. Vi\u1ec7c th\u00eam m\u1ed9t node database m\u1edbi \u0111\u00f2i h\u1ecfi qu\u00e1 tr\u00ecnh \u0111\u1ed3ng b\u1ed9 d\u1eef li\u1ec7u (replication), sharding ph\u1ee9c t\u1ea1p v\u00e0 t\u1ed1n th\u1eddi gian. N\u1ebfu HPA t\u1ef1 \u0111\u1ed9ng th\u00eam Pod database, nguy c\u01a1 m\u1ea5t d\u1eef li\u1ec7u ho\u1eb7c xung \u0111\u1ed9t (conflict) l\u00e0 r\u1ea5t cao.<\/p>\n<p>V\u1edbi Database, ng\u01b0\u1eddi ta th\u01b0\u1eddng \u01b0u ti\u00ean Vertical Scaling (t\u0103ng c\u1ea5u h\u00ecnh) ho\u1eb7c s\u1eed d\u1ee5ng c\u00e1c Operator chuy\u00ean d\u1ee5ng thay v\u00ec HPA c\u01a1 b\u1ea3n.<\/p>\n<figure id=\"attachment_37237\" aria-describedby=\"caption-attachment-37237\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37237\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-khong-nen-su-dung-HPA.png\" alt=\"Khi n\u00e0o kh\u00f4ng n\u00ean s\u1eed d\u1ee5ng HPA\" width=\"800\" height=\"404\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-khong-nen-su-dung-HPA.png 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-khong-nen-su-dung-HPA-300x152.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-khong-nen-su-dung-HPA-768x388.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-37237\" class=\"wp-caption-text\">Khi n\u00e0o kh\u00f4ng n\u00ean s\u1eed d\u1ee5ng HPA?<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"Bottleneck-khong-nam-o-CPURAM\"><\/span>Bottleneck kh\u00f4ng n\u1eb1m \u1edf CPU\/RAM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>N\u1ebfu \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n b\u1ecb ch\u1eadm do t\u1eafc ngh\u1ebdn I\/O \u1ed5 c\u1ee9ng, ho\u1eb7c b\u1ecb gi\u1edbi h\u1ea1n b\u1edfi s\u1ed1 l\u01b0\u1ee3ng k\u1ebft n\u1ed1i \u0111\u1ebfn Database, ho\u1eb7c ph\u1ee5 thu\u1ed9c v\u00e0o m\u1ed9t API b\u00ean th\u1ee9 3 \u0111ang b\u1ecb l\u1ed7i, th\u00ec vi\u1ec7c HPA t\u1ea1o th\u00eam 100 Pods c\u0169ng v\u00f4 d\u1ee5ng.<\/p>\n<p>V\u00ed d\u1ee5: Database ch\u1ec9 ch\u1ecbu \u0111\u01b0\u1ee3c 100 k\u1ebft n\u1ed1i. B\u1ea1n \u0111ang c\u00f3 10 Pod, m\u1ed7i Pod 10 k\u1ebft n\u1ed1i. N\u1ebfu HPA t\u0103ng l\u00ean 20 Pod, t\u1ed5ng k\u1ebft n\u1ed1i l\u00e0 200, Database s\u1ebd s\u1eadp. L\u00fac n\u00e0y HPA \u0111ang l\u00e0m tr\u1ea7m tr\u1ecdng th\u00eam v\u1ea5n \u0111\u1ec1.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Truong-hop-can-giai-phap-khac\"><\/span>Tr\u01b0\u1eddng h\u1ee3p c\u1ea7n gi\u1ea3i ph\u00e1p kh\u00e1c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>\u1ee8ng d\u1ee5ng kh\u1edfi \u0111\u1ed9ng qu\u00e1 l\u00e2u:<\/strong> N\u1ebfu \u1ee9ng d\u1ee5ng Java\/Spring Boot c\u1ee7a b\u1ea1n m\u1ea5t 5 ph\u00fat \u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng (Warm up), th\u00ec HPA kh\u00f4ng th\u1ec3 c\u1ee9u h\u1ec7 th\u1ed1ng khi c\u00f3 traffic spike \u0111\u1ed9t ng\u1ed9t (Flash sale). L\u00fac traffic \u1eadp \u0111\u1ebfn, Pod m\u1edbi v\u1eabn \u0111ang kh\u1edfi \u0111\u1ed9ng, ng\u01b0\u1eddi d\u00f9ng \u0111\u00e3 r\u1eddi b\u1ecf \u0111i h\u1ebft. Trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, b\u1ea1n c\u1ea7n t\u00ednh n\u0103ng <strong>Over-provisioning<\/strong> (d\u1ef1 ph\u00f2ng tr\u01b0\u1edbc) ho\u1eb7c t\u1ed1i \u01b0u code \u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng nhanh h\u01a1n.<\/li>\n<li><strong>Job ch\u1ea1y m\u1ed9t l\u1ea7n:<\/strong> C\u00e1c CronJob ho\u1eb7c Batch Processing n\u00ean \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd b\u1eb1ng Job Controller thay v\u00ec HPA.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"So-sanh-HPA-VPA-va-Cluster-Autoscaler\"><\/span>So s\u00e1nh HPA, VPA v\u00e0 Cluster Autoscaler<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Trong h\u1ec7 sinh th\u00e1i Kubernetes,\u00a0Horizontal Pod Autoscaling (HPA)\u00a0kh\u00f4ng \u0111\u1ee9ng m\u1ed9t m\u00ecnh. N\u00f3 th\u01b0\u1eddng k\u1ebft h\u1ee3p v\u1edbi c\u00e1c c\u01a1 ch\u1ebf autoscaling kh\u00e1c. \u0110\u1ec3 x\u00e2y d\u1ef1ng chi\u1ebfn l\u01b0\u1ee3c autoscaling to\u00e0n di\u1ec7n, b\u1ea1n c\u1ea7n ph\u00e2n bi\u1ec7t r\u00f5 vai tr\u00f2 c\u1ee7a t\u1eebng &#8220;ng\u01b0\u1eddi h\u00f9ng&#8221; n\u00e0y.<\/p>\n<p>D\u01b0\u1edbi \u0111\u00e2y l\u00e0 b\u1ea3ng so s\u00e1nh t\u00ednh n\u0103ng HPA, VPA v\u00e0 Cluster Autoscaler:<\/p>\n<div style=\"overflow-x: auto; margin: 24px 0;\">\n<table style=\"width: 100%; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px;\">\n<thead>\n<tr style=\"background: linear-gradient(90deg,#0C40F4,#077FFA,#0497FC); color: #ffffff;\">\n<th style=\"padding: 14px; text-align: left; border: 1px solid #e5e7eb;\">\u0110\u1eb7c \u0111i\u1ec3m<\/th>\n<th style=\"padding: 14px; text-align: left; border: 1px solid #e5e7eb;\">Horizontal Pod Autoscaler (HPA)<\/th>\n<th style=\"padding: 14px; text-align: left; border: 1px solid #e5e7eb;\">Vertical Pod Autoscaling (VPA)<\/th>\n<th style=\"padding: 14px; text-align: left; border: 1px solid #e5e7eb;\">Cluster Autoscaler (CA)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background: #f8fbff;\">\n<td style=\"padding: 12px; font-weight: 600; border: 1px solid #e5e7eb;\">H\u00e0nh \u0111\u1ed9ng<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">T\u0103ng\/Gi\u1ea3m s\u1ed1 l\u01b0\u1ee3ng Pod (Replicas).<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">T\u0103ng\/Gi\u1ea3m CPU\/RAM c\u1ee7a m\u1ed9t Pod.<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">T\u0103ng\/Gi\u1ea3m s\u1ed1 l\u01b0\u1ee3ng Node (M\u00e1y ch\u1ee7 \u1ea3o).<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px; font-weight: 600; border: 1px solid #e5e7eb;\">M\u1ee5c \u0111\u00edch<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">X\u1eed l\u00fd t\u1ea3i traffic t\u0103ng \u0111\u1ed9t bi\u1ebfn.<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">\u0110i\u1ec1u ch\u1ec9nh size Pod cho ph\u00f9 h\u1ee3p nhu c\u1ea7u th\u1ef1c t\u1ebf.<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">\u0110\u1ea3m b\u1ea3o Cluster \u0111\u1ee7 t\u00e0i nguy\u00ean \u0111\u1ec3 ch\u1ee9a Pod.<\/td>\n<\/tr>\n<tr style=\"background: #f8fbff;\">\n<td style=\"padding: 12px; font-weight: 600; border: 1px solid #e5e7eb;\">Downtime<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">Kh\u00f4ng (Zero downtime).<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">C\u00f3 (Pod th\u01b0\u1eddng ph\u1ea3i restart \u0111\u1ec3 nh\u1eadn resource m\u1edbi).<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">Kh\u00f4ng \u1ea3nh h\u01b0\u1edfng tr\u1ef1c ti\u1ebfp \u0111\u1ebfn Pod \u0111ang ch\u1ea1y.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px; font-weight: 600; border: 1px solid #e5e7eb;\">Ph\u00f9 h\u1ee3p v\u1edbi<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">Stateless Apps (Web, API).<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">Stateful Apps, Monolith Apps kh\u00f3 scale ngang.<\/td>\n<td style=\"padding: 12px; border: 1px solid #e5e7eb;\">M\u1ecdi lo\u1ea1i workload khi Cluster h\u1ebft ch\u1ed7.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>L\u1eddi khuy\u00ean ph\u1ed1i h\u1ee3p:<\/strong><\/p>\n<ul>\n<li><strong>HPA + CA:<\/strong> \u0110\u00e2y l\u00e0 c\u1eb7p \u0111\u00f4i ho\u00e0n h\u1ea3o nh\u1ea5t. Khi traffic t\u0103ng. Khi traffic t\u0103ng\u00a0\u2192\u2192 HPA t\u1ea1o th\u00eam Pod. N\u1ebfu Cluster h\u1ebft ch\u1ed7 ch\u1ee9a Pod\u00a0\u2192\u2192 CA t\u1ef1 \u0111\u1ed9ng mua th\u00eam Node m\u1edbi. Khi traffic gi\u1ea3m\u00a0\u2192\u2192 HPA x\u00f3a Pod\u00a0\u2192\u2192\u00a0CA tr\u1ea3 l\u1ea1i Node \u0111\u1ec3 ti\u1ebft ki\u1ec7m ti\u1ec1n.<\/li>\n<li><strong>HPA + VPA:<\/strong> C\u1ea7n c\u1ef1c k\u1ef3 c\u1ea9n tr\u1ecdng. N\u1ebfu d\u00f9ng chung tr\u00ean c\u00f9ng m\u1ed9t metric (v\u00ed d\u1ee5 c\u00f9ng scale theo CPU), hai controller n\u00e0y s\u1ebd &#8220;\u0111\u00e1nh nhau&#8221;. HPA th\u1ea5y CPU cao th\u00ec th\u00eam Pod, VPA th\u1ea5y CPU cao th\u00ec t\u0103ng size Pod. K\u1ebft qu\u1ea3 l\u00e0 l\u00e3ng ph\u00ed t\u00e0i nguy\u00ean kh\u1ee7ng khi\u1ebfp ho\u1eb7c v\u00f2ng l\u1eb7p scale kh\u00f4ng h\u1ed3i k\u1ebft. Ch\u1ec9 n\u00ean d\u00f9ng k\u1ebft h\u1ee3p n\u1ebfu HPA scale theo Custom Metric (RPS), c\u00f2n VPA t\u1ed1i \u01b0u theo CPU\/RAM.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Huong-dan-thiet-lap-Horizontal-Pod-Autoscaler-trong-Kubernetes\"><\/span>H\u01b0\u1edbng d\u1eabn thi\u1ebft l\u1eadp Horizontal Pod Autoscaler trong Kubernetes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Dieu-kien-can-co-truoc-khi-cau-hinh-HPA\"><\/span>\u0110i\u1ec1u ki\u1ec7n c\u1ea7n c\u00f3 tr\u01b0\u1edbc khi c\u1ea5u h\u00ecnh HPA<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Tr\u01b0\u1edbc khi tri\u1ec3n khai Horizontal Pod Autoscaler, h\u1ec7 th\u1ed1ng c\u1ea7n \u0111\u00e1p \u1ee9ng m\u1ed9t s\u1ed1 y\u00eau c\u1ea7u c\u01a1 b\u1ea3n \u0111\u1ec3 HPA c\u00f3 th\u1ec3 ho\u1ea1t \u0111\u1ed9ng ch\u00ednh x\u00e1c. Tr\u01b0\u1edbc h\u1ebft, c\u1ee5m Kubernetes ph\u1ea3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t <strong>Metrics Server<\/strong> \u2013 th\u00e0nh ph\u1ea7n ch\u1ecbu tr\u00e1ch nhi\u1ec7m thu th\u1eadp c\u00e1c ch\u1ec9 s\u1ed1 hi\u1ec7u su\u1ea5t nh\u01b0 CPU v\u00e0 RAM c\u1ee7a t\u1eebng Pod. N\u1ebfu thi\u1ebfu Metrics Server, HPA s\u1ebd kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 \u0111\u00e1nh gi\u00e1 t\u1ea3i v\u00e0 \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh m\u1edf r\u1ed9ng.<\/p>\n<p>B\u00ean c\u1ea1nh \u0111\u00f3, c\u00e1c Pod ho\u1eb7c Deployment c\u0169ng c\u1ea7n \u0111\u01b0\u1ee3c khai b\u00e1o <strong>resource requests v\u00e0 limits<\/strong>. Vi\u1ec7c x\u00e1c \u0111\u1ecbnh r\u00f5 gi\u1edbi h\u1ea1n t\u00e0i nguy\u00ean gi\u00fap HPA hi\u1ec3u \u0111\u01b0\u1ee3c m\u1ee9c s\u1eed d\u1ee5ng t\u1ed1i \u0111a c\u1ee7a \u1ee9ng d\u1ee5ng, t\u1eeb \u0111\u00f3 \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh scale ph\u00f9 h\u1ee3p khi t\u1ea3i thay \u0111\u1ed5i.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tao-Horizontal-Pod-Autoscaler-nhanh-bang-kubectl\"><\/span>T\u1ea1o Horizontal Pod Autoscaler nhanh b\u1eb1ng kubectl<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Khi m\u00f4i tr\u01b0\u1eddng \u0111\u00e3 s\u1eb5n s\u00e0ng, b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o HPA m\u1ed9t c\u00e1ch nhanh ch\u00f3ng th\u00f4ng qua d\u00f2ng l\u1ec7nh kubectl. V\u00ed d\u1ee5, \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng m\u1edf r\u1ed9ng m\u1ed9t Deployment c\u00f3 t\u00ean l\u00e0 \u201cmy-app\u201d, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng l\u1ec7nh:<\/p>\n<pre>kubectl autoscale deployment my-app --cpu-percent=70 --min=2 --max=10<\/pre>\n<p>L\u1ec7nh n\u00e0y cho ph\u00e9p HPA theo d\u00f5i m\u1ee9c s\u1eed d\u1ee5ng CPU trung b\u00ecnh c\u1ee7a c\u00e1c Pod thu\u1ed9c Deployment \u201cmy-app\u201d. Khi CPU v\u01b0\u1ee3t qu\u00e1 ng\u01b0\u1ee1ng 70%, h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea1o th\u00eam Pod cho \u0111\u1ebfn khi t\u1ea3i \u0111\u01b0\u1ee3c c\u00e2n b\u1eb1ng tr\u1edf l\u1ea1i.<\/p>\n<p>Ng\u01b0\u1ee3c l\u1ea1i, khi m\u1ee9c s\u1eed d\u1ee5ng CPU gi\u1ea3m, s\u1ed1 l\u01b0\u1ee3ng Pod c\u0169ng s\u1ebd \u0111\u01b0\u1ee3c thu h\u1eb9p \u0111\u1ec3 tr\u00e1nh l\u00e3ng ph\u00ed t\u00e0i nguy\u00ean. \u0110\u1ec3 ki\u1ec3m tra tr\u1ea1ng th\u00e1i ho\u1ea1t \u0111\u1ed9ng c\u1ee7a HPA, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng l\u1ec7nh <code>kubectl get hpa<\/code> ho\u1eb7c xem chi ti\u1ebft h\u01a1n v\u1edbi <code>kubectl describe hpa my-app<\/code>.<\/p>\n<figure id=\"attachment_37236\" aria-describedby=\"caption-attachment-37236\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-37236\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-thiet-lap-Horizontal-Pod-Autoscaler-trong-Kubernetes.jpg\" alt=\"C\u00e1ch thi\u1ebft l\u1eadp Horizontal Pod Autoscaler trong Kubernetes\" width=\"800\" height=\"500\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-thiet-lap-Horizontal-Pod-Autoscaler-trong-Kubernetes.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-thiet-lap-Horizontal-Pod-Autoscaler-trong-Kubernetes-300x188.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-thiet-lap-Horizontal-Pod-Autoscaler-trong-Kubernetes-768x480.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-37236\" class=\"wp-caption-text\">C\u00e1ch thi\u1ebft l\u1eadp Horizontal Pod Autoscaler trong Kubernetes<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"Cau-hinh-Horizontal-Pod-Autoscaler-bang-file-YAML\"><\/span>C\u1ea5u h\u00ecnh Horizontal Pod Autoscaler b\u1eb1ng file YAML<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ngo\u00e0i vi\u1ec7c t\u1ea1o HPA b\u1eb1ng d\u00f2ng l\u1ec7nh, b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 \u0111\u1ecbnh ngh\u0129a Horizontal Pod Autoscaler th\u00f4ng qua file YAML. C\u00e1ch l\u00e0m n\u00e0y \u0111\u1eb7c bi\u1ec7t ph\u00f9 h\u1ee3p v\u1edbi c\u00e1c quy tr\u00ecnh CI\/CD ho\u1eb7c khi qu\u1ea3n l\u00fd h\u1ea1 t\u1ea7ng d\u01b0\u1edbi d\u1ea1ng m\u00e3.<\/p>\n<p>M\u1ed9t file YAML c\u1ea5u h\u00ecnh HPA th\u01b0\u1eddng bao g\u1ed3m c\u00e1c th\u00f4ng tin ch\u00ednh nh\u01b0: phi\u00ean b\u1ea3n API <code>autoscaling\/v2<\/code>, lo\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng l\u00e0 <code>HorizontalPodAutoscaler<\/code>, t\u00ean c\u1ee7a HPA (v\u00ed d\u1ee5: my-app-hpa), \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ea7n m\u1edf r\u1ed9ng l\u00e0 Deployment my-app, s\u1ed1 l\u01b0\u1ee3ng Pod t\u1ed1i thi\u1ec3u v\u00e0 t\u1ed1i \u0111a, c\u00f9ng v\u1edbi m\u1ee5c ti\u00eau theo d\u00f5i CPU \u1edf m\u1ee9c trung b\u00ecnh 70%.<\/p>\n<p>Sau khi ho\u00e0n t\u1ea5t c\u1ea5u h\u00ecnh, b\u1ea1n l\u01b0u file v\u1edbi t\u00ean \u201cmy-app-hpa.yaml\u201d v\u00e0 \u00e1p d\u1ee5ng b\u1eb1ng l\u1ec7nh <code>kubectl apply -f my-app-hpa.yaml<\/code>. Kubernetes s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea1o HPA d\u1ef1a tr\u00ean c\u00e1c th\u00f4ng s\u1ed1 \u0111\u00e3 khai b\u00e1o.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cach-giam-sat-va-kiem-tra-HPA-sau-khi-trien-khai\"><\/span>C\u00e1ch gi\u00e1m s\u00e1t v\u00e0 ki\u1ec3m tra HPA sau khi tri\u1ec3n khai<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sau khi HPA \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp, vi\u1ec7c theo d\u00f5i ho\u1ea1t \u0111\u1ed9ng l\u00e0 b\u01b0\u1edbc ti\u1ebfp theo kh\u00f4ng th\u1ec3 b\u1ecf qua. B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c c\u00f4ng c\u1ee5 nh\u01b0 Prometheus, Grafana ho\u1eb7c c\u00e1c l\u1ec7nh kubectl \u0111\u1ec3 ki\u1ec3m tra c\u00e1c ch\u1ec9 s\u1ed1 li\u00ean quan.<\/p>\n<p>Ch\u1eb3ng h\u1ea1n, l\u1ec7nh <code>kubectl describe hpa<\/code> cho ph\u00e9p b\u1ea1n xem tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i c\u1ee7a HPA, bao g\u1ed3m ng\u01b0\u1ee1ng CPU m\u1ee5c ti\u00eau, m\u1ee9c s\u1eed d\u1ee5ng th\u1ef1c t\u1ebf v\u00e0 s\u1ed1 l\u01b0\u1ee3ng Pod \u0111ang ch\u1ea1y. \u0110\u1ed1i v\u1edbi nhu c\u1ea7u quan s\u00e1t tr\u1ef1c quan, c\u00e1c dashboard tr\u00ean Grafana gi\u00fap hi\u1ec3n th\u1ecb bi\u1ec3u \u0111\u1ed3 theo th\u1eddi gian th\u1ef1c, h\u1ed7 tr\u1ee3 \u0111\u00e1nh gi\u00e1 hi\u1ec7u qu\u1ea3 autoscaling m\u1ed9t c\u00e1ch r\u00f5 r\u00e0ng h\u01a1n.<\/p>\n<p>Nh\u1edd c\u00e1ch thi\u1ebft l\u1eadp linh ho\u1ea1t n\u00e0y, Horizontal Pod Autoscaling gi\u00fap Kubernetes duy tr\u00ec hi\u1ec7u n\u0103ng \u1ed5n \u0111\u1ecbnh v\u00e0 \u0111\u1ea3m b\u1ea3o \u1ee9ng d\u1ee5ng s\u1eb5n s\u00e0ng tr\u01b0\u1edbc nh\u1eefng bi\u1ebfn \u0111\u1ed9ng v\u1ec1 t\u1ea3i v\u00e0 nhu c\u1ea7u t\u00e0i nguy\u00ean.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Nhung-thach-thuc-thuong-gap-khi-su-dung-Horizontal-Pod-Autoscaler\"><\/span>Nh\u1eefng th\u00e1ch th\u1ee9c th\u01b0\u1eddng g\u1eb7p khi s\u1eed d\u1ee5ng Horizontal Pod Autoscaler<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Do-tre-trong-viec-thu-thap-va-phan-hoi-metrics\"><\/span>\u0110\u1ed9 tr\u1ec5 trong vi\u1ec7c thu th\u1eadp v\u00e0 ph\u1ea3n h\u1ed3i metrics<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>HPA ph\u1ee5 thu\u1ed9c v\u00e0o d\u1eef li\u1ec7u do Metrics Server cung c\u1ea5p, trong khi c\u00e1c metrics n\u00e0y th\u01b0\u1eddng c\u00f3 \u0111\u1ed9 tr\u1ec5 nh\u1ea5t \u0111\u1ecbnh, c\u00f3 th\u1ec3 l\u00ean t\u1edbi v\u00e0i ch\u1ee5c gi\u00e2y. \u0110i\u1ec1u n\u00e0y khi\u1ebfn ph\u1ea3n \u1ee9ng scale-out ho\u1eb7c scale-in kh\u00f4ng theo k\u1ecbp c\u00e1c bi\u1ebfn \u0111\u1ed9ng t\u1ea3i di\u1ec5n ra qu\u00e1 nhanh.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Nguong-cau-hinh-chua-phu-hop-dan-den-scaling-khong-chinh-xac\"><\/span>Ng\u01b0\u1ee1ng c\u1ea5u h\u00ecnh ch\u01b0a ph\u00f9 h\u1ee3p d\u1eabn \u0111\u1ebfn scaling kh\u00f4ng ch\u00ednh x\u00e1c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Vi\u1ec7c \u0111\u1eb7t ng\u01b0\u1ee1ng CPU qu\u00e1 th\u1ea5p c\u00f3 th\u1ec3 khi\u1ebfn h\u1ec7 th\u1ed1ng li\u00ean t\u1ee5c m\u1edf r\u1ed9ng v\u00e0 thu g\u1ecdn Pod, l\u00e0m t\u00e0i nguy\u00ean bi\u1ebfn \u0111\u1ed9ng m\u1ea1nh v\u00e0 \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn hi\u1ec7u n\u0103ng. Do \u0111\u00f3, vi\u1ec7c tinh ch\u1ec9nh c\u00e1c ng\u01b0\u1ee1ng metrics \u0111\u00f3ng vai tr\u00f2 quan tr\u1ecdng \u0111\u1ec3 \u0111\u1ea1t \u0111\u01b0\u1ee3c tr\u1ea1ng th\u00e1i c\u00e2n b\u1eb1ng.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Phu-thuoc-vao-Metrics-Server-va-external-metrics\"><\/span>Ph\u1ee5 thu\u1ed9c v\u00e0o Metrics Server v\u00e0 external metrics<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>HPA s\u1ebd kh\u00f4ng th\u1ec3 ho\u1ea1t \u0111\u1ed9ng n\u1ebfu Metrics Server g\u1eb7p s\u1ef1 c\u1ed1 ho\u1eb7c kh\u00f4ng \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t \u0111\u00fang c\u00e1ch. Ngo\u00e0i ra, khi c\u1ea7n s\u1eed d\u1ee5ng external metrics nh\u01b0 s\u1ed1 l\u01b0\u1ee3ng request, vi\u1ec7c t\u00edch h\u1ee3p th\u01b0\u1eddng ph\u1ee9c t\u1ea1p h\u01a1n v\u00e0 \u0111\u00f2i h\u1ecfi c\u1ea5u h\u00ecnh b\u1ed5 sung.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ket-luan\"><\/span>K\u1ebft lu\u1eadn<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Horizontal Pod Autoscaling (HPA)<\/strong> l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 \u0111\u1eafc l\u1ef1c, l\u00e0 ch\u00eca kh\u00f3a \u0111\u1ec3 hi\u1ec7n th\u1ef1c h\u00f3a l\u1eddi h\u1ee9a v\u1ec1 s\u1ef1 &#8220;t\u1ef1 \u0111\u1ed9ng h\u00f3a&#8221; v\u00e0 &#8220;t\u1ed1i \u01b0u chi ph\u00ed&#8221; c\u1ee7a c\u00f4ng ngh\u1ec7 Cloud Native. Vi\u1ec7c tri\u1ec3n khai HPA kh\u00f4ng ch\u1ec9 gi\u00fap k\u1ef9 s\u01b0 v\u1eadn h\u00e0nh ng\u1ee7 ngon h\u01a1n v\u00e0o ban \u0111\u00eam m\u00e0 c\u00f2n gi\u00fap doanh nghi\u1ec7p ti\u1ebft ki\u1ec7m \u0111\u00e1ng k\u1ec3 ng\u00e2n s\u00e1ch h\u1ea1 t\u1ea7ng.<\/p>\n<p>Tuy nhi\u00ean, HPA kh\u00f4ng ph\u1ea3i l\u00e0 gi\u1ea3i ph\u00e1p c\u00e0i \u0111\u1eb7t m\u1ed9t l\u1ea7n l\u00e0 xong. N\u00f3 \u0111\u00f2i h\u1ecfi s\u1ef1 th\u1ea5u hi\u1ec3u v\u1ec1 \u0111\u1eb7c th\u00f9 \u1ee9ng d\u1ee5ng, s\u1ef1 theo d\u00f5i s\u00e1t sao (Monitoring) v\u00e0 tinh ch\u1ec9nh (Fine-tuning) li\u00ean t\u1ee5c c\u00e1c th\u00f4ng s\u1ed1 metrics.<\/p>\n<p>H\u00e3y b\u1eaft \u0111\u1ea7u t\u1eeb nh\u1eefng b\u01b0\u1edbc nh\u1ecf: C\u00e0i \u0111\u1eb7t Metrics Server, c\u1ea5u h\u00ecnh HPA c\u01a1 b\u1ea3n theo CPU cho c\u00e1c service quan tr\u1ecdng, v\u00e0 quan s\u00e1t h\u00e0nh vi c\u1ee7a ch\u00fang qua Grafana. Khi \u0111\u00e3 t\u1ef1 tin, h\u00e3y ti\u1ebfn t\u1edbi c\u00e1c b\u00e0i to\u00e1n n\u00e2ng cao h\u01a1n v\u1edbi Custom Metrics.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>B\u1ea1n \u0111ang \u0111au \u0111\u1ea7u v\u00ec \u1ee9ng d\u1ee5ng li\u00ean t\u1ee5c g\u1eb7p s\u1ef1 c\u1ed1 (downtime) m\u1ed7i khi l\u01b0\u1ee3ng truy c\u1eadp t\u0103ng \u0111\u1ed9t bi\u1ebfn, hay lo l\u1eafng khi nh\u00ecn th\u1ea5y h\u00f3a \u0111\u01a1n Cloud cu\u1ed1i th\u00e1ng t\u0103ng v\u1ecdt do c\u1ea5p ph\u00e1t d\u01b0 th\u1eeba t\u00e0i nguy\u00ean?\u00a0Horizontal Pod Autoscaling (HPA)\u00a0ch\u00ednh l\u00e0 gi\u1ea3i ph\u00e1p c\u1ed1t l\u00f5i \u0111\u1ec3 gi\u1ea3i quy\u1ebft b\u00e0i to\u00e1n c\u00e2n<\/p>\n","protected":false},"author":11,"featured_media":37238,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58],"tags":[],"class_list":["post-37231","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/37231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=37231"}],"version-history":[{"count":2,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/37231\/revisions"}],"predecessor-version":[{"id":37239,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/37231\/revisions\/37239"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/37238"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=37231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=37231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=37231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}