일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
- Today
- Total
기록
K3s 기반 멀티 노드 클러스터 구축기 (3) - kube-ops-view로 노드/파드 상태 시각화하기 본문
시작하면서
이번 글에서는 K3s 마스터와 에이전트 노드 구성이 완료된 상태에서, 클러스터의 노드 및 파드 상태를 실시간으로 시각화하는 오픈소스 도구 kube-ops-view를 설치하고 활용하는 방법을 설명한다. Grafana를 사용할 수도 있지만, kube-ops-view는 경량이며 NodePort로 노출하기에 적합해 프리티어 환경에서 간편하게 운영할 수 있는 대시보드 도구이다.
이전글
목표
- kube-ops-view를 마스터 노드(K3s 서버)에서 설치한다.
- 클러스터 전체 노드와 파드 상태를 실시간으로 시각화한다.
- 외부에서 웹 브라우저로 접근 가능하도록 NodePort 서비스로 설정한다.
kube-ops-view 소개
kube-ops-view는 Kubernetes 클러스터의 노드와 파드 상태를 실시간으로 시각화해주는 웹 기반 대시보드 도구이다. 각 노드는 박스로 표현되며, 노드 안에는 어떤 파드가 배치되어 있는지, 파드의 상태가 어떤지 한눈에 확인할 수 있다. 클러스터 운영 중 파드가 스케줄되는 위치나 자원 분포를 빠르게 파악하고 싶은 경우 유용하다.
이 도구는 다음과 같은 장점이 있다:
- ✅ 설치가 간단하다 (Deployment + Service만 구성하면 바로 사용 가능)
- ✅ 경량 리소스 기반으로 작동한다 (Prometheus, Grafana 설치 없이도 충분)
- ✅ NodePort 서비스로 외부 노출이 쉬움
- ✅ 실시간 반응형 UI로 노드와 파드의 상태를 직관적으로 표시한다
Grafana 같은 고급 모니터링 툴은 설정이 복잡하거나 리소스가 많이 필요한 반면, kube-ops-view는 학습 목적이나 소규모 클러스터 운영에 최적화되어 있다.
설치 방법
1. Namespace 및 권한 생성
kubectl create namespace kube-ops-view
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-ops-view
namespace: kube-ops-view
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kube-ops-view
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kube-ops-view
namespace: kube-ops-view
EOF
2. Deployment 및 Service 생성
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-ops-view
namespace: kube-ops-view
spec:
replicas: 1
selector:
matchLabels:
app: kube-ops-view
template:
metadata:
labels:
app: kube-ops-view
spec:
serviceAccountName: kube-ops-view
containers:
- name: kube-ops-view
image: hjacobs/kube-ops-view:latest
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: kube-ops-view
namespace: kube-ops-view
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
protocol: TCP
selector:
app: kube-ops-view
EOF
기본적으로 LoadBalancer 타입으로 생성된 경우 외부 IP가 <pending> 상태로 남을 수 있으므로, NodePort로 변경하여 EC2의 퍼블릭 IP + 포트 조합으로 접근하는 방식을 사용한다.
🌐 외부에서 접근하기
- 마스터 노드의 퍼블릭 IP를 확인한다.
curl ifconfig.me
- Service의 NodePort 포트를 확인한다:
kubectl get svc -n kube-ops-view
예시 출력:
kube-ops-view NodePort 10.40.10.20 <none> 80:32000/TCP 2m28s
- 웹 브라우저에서 다음 주소로 접속한다: 예: http://<마스터 노드 공인 IP>:32000
🧩 팁: 마스터 노드에만 배포 강제하기
kube-ops-view가 dev/prd 계정의 에이전트 노드에 스케줄되면 외부 접근이 되지 않을 수 있다. 이 경우, 다음과 같이 노드 셀렉터 설정을 통해 마스터 노드에만 배포되도록 강제할 수 있다:
spec:
template:
spec:
nodeSelector:
kubernetes.io/hostname: <Control-Node-Name>
해당 값은 kubectl get nodes -o wide로 확인 가능하다.
'DevOps' 카테고리의 다른 글
K3s 기반 멀티 노드 클러스터 구축기 (4) - VPC Peering을 통한 Private 통신 연결 (0) | 2025.05.05 |
---|---|
AWS KMS로 민감 정보 암호화: 콘솔 키 생성부터 CLI 실습까지 (0) | 2025.05.01 |
K3s 기반 멀티 노드 클러스터 구축기 (2) - dev 계정에서 워커 노드 연결하기 (0) | 2025.04.14 |
Docker Compose로 MySQL 개발 환경 구성하기 + 초기 설정 자동화 (0) | 2025.04.14 |
K3s 기반 멀티 노드 클러스터 구축기 (1) - 컨트롤 플레인 자동화와 Helm 설치까지 (0) | 2025.04.14 |