성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>AKS에서 hpa에 따른 autoscale 기능이 동작하지 않는다면?</h1> <p> 결과 먼저 말하자면, 원인을 밝혀내진 못했으니 그냥 참고삼아 보시면 되겠습니다. ^^<br /> <br /> <hr style='width: 50%' /><br /> <br /> Azure에 생성한 AKS 서비스에서 autoscale 설정을 했는데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>kubectl autoscale deployment --max=10 net-razor31-sample --min=2</span> </pre> <br /> 아무리 부하를 줘도 pod는 그대로 2개에 머물고 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>kubectl get pods</span> NAME READY STATUS RESTARTS AGE net-razor31-sample-6b747bb886-ncvvw 1/1 Running 0 4m51s net-razor31-sample-6b747bb886-sxkbj 1/1 Running 0 5m6s </pre> <br /> hpa 설정을 보면 이상 없는 듯한데요,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > $ <span style='color: blue; font-weight: bold'>kubectl get hpa</span> NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE net-razor31-sample Deployment/net-razor31-sample <unknown>/80% 2 10 2 6m50s </pre> <br /> 실제로는 이상이 있는 것입니다. ^^ 문제가 되는 부분은 "TARGETS"의 조건인데 여기에 "<unknown>"이 나오는 것은 현재 해당 시스템의 성능 metrics 데이터를 정상적으로 가져오지 못한다는 것을 의미합니다. 따라서 부하 측정을 할 수 없고 당연히 autoscale을 위한 기준을 잡지 못하는 것입니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 기본적으로 (근래 버전의 k8s를 선택한 경우) AKS는 metrics-server 구성 요소를 이미 준비하고 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>kubectl get pod --all-namespaces</span> NAMESPACE NAME READY STATUS RESTARTS AGE default net-razor31-sample-6b747bb886-mldk2 0/1 Pending 0 107s kube-system azure-ip-masq-agent-tmqtq 1/1 Running 0 6h kube-system coredns-845757d86-7bzwn 1/1 Running 0 17h kube-system coredns-845757d86-rljs8 1/1 Running 0 17h kube-system coredns-autoscaler-5f85dc856b-m9s57 1/1 Running 0 17h kube-system csi-azuredisk-node-ltfl4 3/3 Running 0 6h kube-system csi-azurefile-node-8xggf 3/3 Running 0 6h kube-system kube-proxy-p4zj6 1/1 Running 0 17h kube-system <span style='color: blue; font-weight: bold'>metrics-server</span>-6bc97b47f7-6tqms 1/1 Running 0 17h kube-system tunnelfront-78bc5d7569-fvlth 1/1 Running 0 16h </pre> <br /> 따라서 성능 메트릭 데이터를 수집하지 못할 이유가 없는데요, 이에 대한 문제를 describe hpa로 살펴볼 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>kubectl describe hpa net-razor31-sample</span> Name: net-razor31-sample Namespace: default Labels: <none> Annotations: <none> CreationTimestamp: Tue, 25 Jan 2022 15:44:52 +0900 Reference: Deployment/net-razor31-sample Metrics: ( current / target ) resource cpu on pods (as a percentage of request): <span style='color: blue; font-weight: bold'><unknown></span> / 80% Min replicas: 2 Max replicas: 10 Deployment pods: 2 current / 2 desired Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: failed to get cpu utilization: missing request for cpu Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 33s horizontal-pod-autoscaler New size: 2; reason: Current number of replicas below Spec.MinReplicas Warning FailedGetResourceMetric 18s horizontal-pod-autoscaler <span style='color: blue; font-weight: bold'>failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API</span> Warning FailedComputeMetricsReplicas 18s horizontal-pod-autoscaler invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API Warning FailedGetResourceMetric 3s horizontal-pod-autoscaler failed to get cpu utilization: missing request for cpu Warning FailedComputeMetricsReplicas 3s horizontal-pod-autoscaler invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: missing request for cpu </pre> <br /> 위의 결과에 보면, "failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API"라는 메시지가 있는데요, 뭔가 해당 pod에서 CPU 자원을 구하는 코드가 동작하지 않는 듯합니다.<br /> <br /> 이상한 것은, top nodes나 top pods 옵션에서는 CPU 정보를 잘 가져온다는 점입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>kubectl top nodes</span> NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% aks-agentpool-20726260-vmss000000 216m <span style='color: blue; font-weight: bold'>11%</span> 2073Mi 45% c:\temp> <span style='color: blue; font-weight: bold'>kubectl top pods</span> NAME CPU(cores) MEMORY(bytes) net-razor31-sample-574ffd4758-4zlxm 2m 52Mi net-razor31-sample-574ffd4758-7szr8 1m 54Mi sample-back-56bf7ff864-7hdzm 2m 14Mi sample-front-65fd487fdf-jjhwh 1m 43Mi sample-front-65fd487fdf-sjcbr 1m 43Mi </pre> <br /> 참... 이걸 뭐라고 설명해야 할지 모르겠군요. ^^;<br /> <br /> <hr style='width: 50%' /><br /> <br /> 웹 검색을 했지만, 딱히 이거라고 할 만한 오류 원인을 찾지 못했습니다. 그래서 어쩔 수 없이 AKS 클러스터를 새로 생성하는 것으로 해결을 했습니다.<br /> <br /> 단지, 이전 실습과 다르게 한 점이 있다면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > AKS - Azure Kubernetes Service 생성 및 SLO/SLA 변경 방법 ; <a target='tab' href='https://www.sysnet.pe.kr/2/0/12922'>https://www.sysnet.pe.kr/2/0/12922</a> </pre> <br /> 이번에는 클러스터 생성 시 ACR까지 함께 생성했다는 점입니다. 그 외에는 (쿠버네티스 버전을 포함한) 모든 옵션들이 이전 클러스터 생성과 다른 점이 없었습니다. 하지만 상식적으로 ACR이 성능 메트릭스를 가져오는 것에 영향을 미쳤을 것 같지는 않고, 테스트 플랫폼이라 이거저거 실습하느라 건드린 무엇인가가... 문제였을 듯합니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2755
(왼쪽의 숫자를 입력해야 합니다.)