
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml
kubelet-insecure-tls 추가kubectl edit deployment metrics-server -n kube-system
#spec:
containers:
- args:
- --cert-dir=/tmp
- --secure-port=443
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s
- --kubelet-insecure-tls <-- 추가
설치 확인 (True값 확인)
kubectl get apiservices |egrep metrics
v1beta1.metrics.k8s.io kube-system/metrics-server True 28m
메트릭 값 확인 (1~2분 후)
kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-master 485m 9% 4852Mi 32%
k8s-node1 413m 8% 4929Mi 33%
k8s-node2 554m 11% 4672Mi 31%

2-1) Target Deployment (CPU) / Service
apiVersion: apps/v1
kind: Deployment
metadata:
name: stateless-cpu1
spec:
selector:
matchLabels:
resource: cpu
replicas: 2
template:
metadata:
labels:
resource: cpu
spec:
containers:
- name: container
image: kubetm/app:v1
resources:
requests:
cpu: 10m
limits:
cpu: 20m
apiVersion: v1
kind: Service
metadata:
name: stateless-svc1
spec:
selector:
resource: cpu
ports:
- port: 8080
targetPort: 8080
nodePort: 30001
type: NodePort
2-2) HPA - Resource (Utilization)
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-resource-cpu
spec:
maxReplicas: 10
minReplicas: 2
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: stateless-cpu1
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50

2-3) Target Deployment (Memory) / Service
apiVersion: apps/v1
kind: Deployment
metadata:
name: stateless-memory1
spec:
selector:
matchLabels:
resource: memory
replicas: 2
template:
metadata:
labels:
resource: memory
spec:
containers:
- name: container
image: kubetm/app:v1
resources:
requests:
memory: 10Mi
limits:
memory: 20Mi
apiVersion: v1
kind: Service
metadata:
name: stateless-svc2
spec:
selector:
resource: memory
ports:
- port: 8080
targetPort: 8080
nodePort: 30002
type: NodePort
2-4) HPA - Resource (AverageValue)
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-resource-memory
spec:
maxReplicas: 10
minReplicas: 2
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: stateless-memory1
metrics:
- type: Resource
resource:
name: memory
target:
type: AverageValue
averageValue: 5Mi
Sample yaml
HPA for - Pods
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-pods
spec:
maxReplicas: 10
minReplicas: 2
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: stateless-app1
metrics:
- type: Pods
pods:
metric:
name: packets-per-second
target:
type: AverageValue
averageValue: 10
HPA - Object
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-object
spec:
maxReplicas: 10
minReplicas: 2
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: stateless-app1
metrics:
- type: Object
object:
metric:
name: requests-per-second
target:
type: Value
value: 10
describedObject:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
name: ingress-hpa