kube-apiserver 메트릭스 조회
홈 화면 > 클러스터 프로젝트 선택 > 클러스터 > kube-apiserver 메트릭스 조회
요구 사항
-
와탭 쿠버네티스 에이전트 1.5.6 버전 이상이 필요합니다.
-
쿠버네티스 클러스터 프로젝트(
CP
)일 경우 해당 메뉴를 조회할 수 있습니다.
kube-apiserver는 컨트롤 플레인(Control Plane) 내/외부 요청을 처리하는 컴포넌트입니다. kube-apiserver 메트릭스 조회 메뉴를 통해 kube-apiserver에서 수집되는 지표의 원본 데이터 정합성(Data Consistency)을 확인할 수 있습니다.
기본 화면 안내
kube-apiserver 메트릭스 조회 메뉴는 kube-apiserver 대상으로 수집한 모니터링 원본 데이터를 카테 고리별로 조회하는 기능을 제공합니다. 최근 5분 동안 수집한 데이터가 1분 간격으로 반영됩니다.
-
상단 왼쪽 시간 선택자를 통해 과거 특정 시점의 데이터를 조회할 수 있습니다. 과거 데이터 조회 시 원하는 옵션 선택 후 검색 아이콘을 클릭하세요.
-
조회할 최대 개수를 설정할 수 있습니다.
-
메트릭스를 필터링해 원본 데이터를 필요에 따라 가공할 수 있습니다.
-
상단 오른쪽 다운로드 아이콘을 선택해 원하는 데이터를 CSV 형식의 파일로 다운로드할 수 있습니다.
필터
필터 옵션 활용 시 원하는 을 선택해 조회할 수 있습니다. and
조건을 통해 여러 개의 필터를 적용할 수 있습니다.
-
필터 입력 창에서 더하기 아이콘 선택 시 다음과 같이 필터 추가하기 창이 나타납니다.
-
필터 키와 조건을 선택하세요.
-
조건에 맞는 값을 선택하세요.
-
-
필터 설정 후 적용 버튼을 선택해 해당 필터를 적용하세요.
-
여러 개의 필터를 추가하려면 필터 입력 창 또는 필터 추가하기 창에서 더하기 아이콘을 선택하세요.
kube-apiserver 모니터링 활성화
와탭 쿠버네티스 에이전트 설치 시 다운로드한 yaml 파일을 다음 안내에 따라 수정해 kube-apiserver 모니터링을 활성화하세요.
-
whatap-master-agent
deployment의 spec 하위에 kube-apiserver 모니터링을 위한 에이전트 컨테이너 spec을 추가하세요.containers:
- name: whatap-control-plane-helper
image: whatap/kube_mon
imagePullPolicy: Always
ports:
- containerPort: 9496
command: ["/data/agent/master/whatap_control_plane_helper"]
args: ["-collect_control_plane_monitoring_enabled=true"]다음 예시를 참조하세요.
apiVersion: apps/v1
kind: Deployment
metadata:
name: whatap-master-agent
namespace: whatap-monitoring
spec:
replicas: 1
selector:
matchLabels:
name: whatap-master-agent
template:
metadata:
labels:
name: whatap-master-agent
spec:
containers:
- name: whatap-control-plane-helper
image: whatap/kube_mon
imagePullPolicy: Always
ports:
- containerPort: 9496
command: ["/data/agent/master/whatap_control_plane_helper"]
args: ["-collect_control_plane_monitoring_enabled=true"]
- name: whatap-master-agent
image: whatap/kube_mon
imagePullPolicy: Always
resources:
requests:
memory: 300Mi
cpu: 100m
limits:
memory: 350Mi
cpu: 200m
ports:
- containerPort: 6600
command: ['/bin/entrypoint.sh']
env:
- name: WHATAP_LICENSE
value: "xxxxxxxx-12345xxxxxx-x00e000000xxx8"
- name: WHATAP_HOST
value: "13.124.11.223/13.209.172.35"
- name: WHATAP_PORT
value: "6600"
- name: WHATP_MEM_LIMIT
valueFrom:
resourceFieldRef:
containerName: whatap-master-agent
resource: limits.memory
volumeMounts:
- name: start-script-volume
mountPath: /bin/entrypoint.sh
readOnly: true
subPath: entrypoint.sh
- mountPath: /whatap_conf
name: whatap-config-volume
volumes:
- name: start-script-volume
configMap:
defaultMode: 0700
name: master-start-script
- name: whatap-config-volume
emptyDir: {}
serviceAccount: whatap -
whatap-master-agent
deployment의whatap-master-agent
컨테이너 spec에서 env 설정에 다음 내용을 추가하세요.env:
- name: collect_control_plane_monitoring_enabled
value: "true"다음 예시를 참조하세요.
apiVersion: apps/v1
kind: Deployment
metadata:
name: whatap-master-agent
namespace: whatap-monitoring
spec:
replicas: 1
selector:
matchLabels:
name: whatap-master-agent
template:
metadata:
labels:
name: whatap-master-agent
spec:
containers:
- name: whatap-control-plane-helper
image: whatap/kube_mon
imagePullPolicy: Always
ports:
- containerPort: 9496
command: ["/data/agent/master/whatap_control_plane_helper"]
args: ["-collect_control_plane_monitoring_enabled=true"]
- name: whatap-master-agent
image: whatap/kube_mon
imagePullPolicy: Always
resources:
requests:
memory: 300Mi
cpu: 100m
limits:
memory: 350Mi
cpu: 200m
ports:
- containerPort: 6600
command: ['/bin/entrypoint.sh']
env:
- name: collect_control_plane_monitoring_enabled
value: "true"
- name: WHATAP_LICENSE
value: "xxxxxxxx-12345xxxxxx-x00e000000xxx8"
- name: WHATAP_HOST
value: "13.124.11.223/13.209.172.35"
- name: WHATAP_PORT
value: "6600"
- name: WHATP_MEM_LIMIT
valueFrom:
resourceFieldRef:
containerName: whatap-master-agent
resource: limits.memory
volumeMounts:
- name: start-script-volume
mountPath: /bin/entrypoint.sh
readOnly: true
subPath: entrypoint.sh
- mountPath: /whatap_conf
name: whatap-config-volume
volumes:
- name: start-script-volume
configMap:
defaultMode: 0700
name: master-start-script
- name: whatap-config-volume
emptyDir: {}
serviceAccount: whatap -
컨트롤 플레인 모니터링 성능 지표를 수집하기 위해
whatap
ClusterRole에 다음의 권한을 추가하세요.rules:
- nonResourceURLs: ["/metrics"]
verbs: ["*"]다음 예시를 참조하세요.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
name: whatap
namespace: whatap-monitoring
rules:
- apiGroups: ["*"]
resources: ["namespaces", "pods", "pods/log", "configmaps","services", "endpoints","daemonsets","ingresses","deployments","nodes","persistentvolumes","persistentvolumeclaims", "events", "replicasets", "roles", "rolebindings", "clusterroles", "clusterrolebindings", "jobs", "cronjobs", "statefulsets", "serviceaccounts", "configmaps", "storageclasses", "horizontalpodautoscalers" ]
verbs: ["get","list","watch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["*"]
- nonResourceURLs: ["/metrics"]
verbs: ["*"]
---
kubectl apply
또는 kubectl edit
명령을 통해 kube-apiserver 모니터링을 활성화할 수도 있습니다.
kube-apiserver 메트릭
분류 | 메트릭 | 설명 |
---|---|---|
API GET 요청 | 분당 GET 요청 현황 | kube-apiserver 의 GET 요청에 대한 분당 요청 수 |
초당 GET 요청 수 추이 | kube-apiserver 의 GET 요청에 대한 초당 요청 수 추이 | |
Resource & Subresource 별 분당 GET 요청 수 추이 | kube-apiserver 에 들어온 GET 요청의 Resource 와 Subresource 별 분당 요청 수 추이 | |
API POST 요청 | 분당 POST 요청 현황 | kube-apiserver 의 POST 요청에 대한 분당 요청 수 |
초당 POST 요청 수 추이 | kube-apiserver 의 POST 요청에 대한 초당 요청 수 추이 | |
Resource & Subresource 별 POST 분당 요청 수 추이 | kube-apiserver 에 들어온 POST 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이 | |
API 응답 코드별 요청 | [ 2xx ] 분당 응답 요청 현황 | kube-apiserver 요청 중 200 이상 300 미만의 응답 코드가 내려진 요청 수에 대한 분당 현황 |
[ 2xx ] 분당 응답 코드별 요청 수 추이 | kube-apiserver 요청 중 200 이상 300 미만의 응답 코드가 내려진 요청 수에 대한 응답 코드별 분당 현황 | |
[ 2xx ] 분당 Resource & Subresource 별 요청 수 추이 | kube-apiserver 요청 중 200 이상 300 미만의 응답 코드가 내려진 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이 | |
[ 3xx ] 분당 응답 요청 현황 | kube-apiserver 요청 중 300 이상 400 미만의 응답 코드가 내려진 요청 수에 대한 분당 현황 | |
[ 3xx ] 분당 응답 코드별 요청 수 추이 | kube-apiserver 요청 중 300 이상 400 미만의 응답 코드가 내려진 요청 수에 대한 응답 코드별 분당 현황 | |
[ 3xx ] 분당 Resource & Subresource 별 요청 수 추이 | kube-apiserver 요청 중 300 이상 400 미만의 응답 코드가 내려진 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이 | |
[ 400~ ] 분당 응답 요청 현황 | kube-apiserver 요청 중 400 이상의 응답 코드가 내려진 요청 수에 대한 분당 현황 | |
[ 400~ ] 분당 응답 코드별 요청 수 추이 | kube-apiserver 요청 중 400 이상의 응답 코드가 내려진 요청 수에 대한 응답 코드별 분당 현황 | |
[ 400~ ] 분당 Resource & Subresource 별 요청 수 추이 | kube-apiserver 요청 중 400 이상의 응답 코드가 내려진 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이 | |
Go Metrics | 고루틴 수 | 현재 존재하는 고루틴 수 |
스레드 수 | 현재 존재하는 OS 스레드 수 | |
현재 실행 중인 요청 수 (1초) | 최근 1초 내 실행 중인 요청 수 | 데이터 수집 시 kube-apiserver 에서 1초 내에 진행되고 있던 요청 수 |