DevOps/k8s 17

HoneyComb 오픈텔레메트리를 위한 모니터링 Tool

Honeycomb for Kubernetes 2023년 11월 01일 Kubernetes용 Honeycomb 플랫폼 출시 발표 Kubernetes Quick Start 대략적인 Kubernetes 설치 과정 구글 소셜 화원가입/로그인 Api key 발급 kubernetes quick start docs 보고 Command 따라치기 helm을 이용하여 Honeycomb agent 설치 Query로 직접 차트와 대시보드 구성 기본 템플릿을 사용하여 차트와 대시보드 구성 Honeycomb 설치 Command #클러스터 object를 관리하는 수집기 인프라를 포함할 네임스페이스 생성 daeunkim@Daeunui-MacBookPro ~ % kubectl create namespace honeycomb # hon..

DevOps/k8s 2023.12.14

[K8s] JSONPATH 활용하여 원하는 데이터 확인하기

JSONPath란? JSONPath는 JSON 데이터 구조 내에서 원하는 데이터를 식별하기 위한 경로 표현 방법입니다. 주로 Kubernetes나 다양한 API 응답에서 원하는 데이터를 추출하거나 쿼리하는 데 사용됩니다. JSONPath 패턴 $.store.book[0].title JSON 데이터 구조에서 store 객체 안의 book 배열의 첫 번째 요소의 title 값에 대한 경로 $..author 모든 author 키에 해당하는 값 반환 $.store.* store 객체 안의 모든 키와 값 반환 $.store..price store 객체 내부의 모든 price 키에 해당하는 값 반환 $.store.book[?(@.price < 10)] : **price**가 10 미만인 책에 해당하는 값들을 반환합..

DevOps/k8s 2023.11.16

[CKA] Namespace 내에 Service Account 생성 → Role 생성→ RoleBinding

koogle 네임스페이스 내에 pod-viewer라는 서비스 어카운트를 생성한다. 그리고 파드 리소스를 대상으로 get, list, watch 권한을 갖는 Role을 생성한다. 마지막으로 이 Role을 pod-viewer 서비스 어카운트에 연결하는 RoleBinding을 생성한다. 서비스 계정 생성 koogle 네임스페이스에 pod-viewer라는 서비스 계정을 생성하려면 다음 명령을 사용합니다. kubectl create serviceaccount pod-viewer -n koogle 잘 생성 되었는지 아래 명령어를 통해 확인합니다. 해당 파일은 pod-viewer-role이 pods 리소스에 대해 get, list, watch 권한을 수행할 수 있도록 하는 규칙을 정의하는 매니페스트입니다. 아래 매니..

DevOps/k8s 2023.11.16

[CKA] ETCD 백업 및 복구 테스트

안녕하세요. CKA 시험 유형 중 하나인 ETCD 백업 및 복구 테스트 문제를 풀어보도록 하겠습니다. 저의 쿠버네티스 환경은 minikube로 etcd백업 및 복구 테스트를 진행할 수 없어 KodeKloud Mock Exam2 풀이를 통해 ETCD 백업 및 복구 테스트하는 방법에 대해 알아보겠습니다. 문제 1. Take a backup of the etcd cluster and save it to /opt/etcd-backup.db. etcd 데이터베이스 백업 환경 변수를 설정하여 etcdctl을 사용할 수 있도록 환경을 구성합니다. #etcdctl이 사용하는 버전 export ETCDCTL_API=3 #etcd 설정 파일이 위치한 디렉토리로 이동 cd /etc/kubernetes/manifests 해당..

DevOps/k8s 2023.11.08

[K8s]LivenessProbe 실습할 때 생길 수 있는 트러블 슈팅

간단한 Flask 어플리케이션을 Docker 이미지로 만들고, 이를 Kubernetes에서 실행하면서 LivenessProbe를 설정하는 예제입니다. Flask 어플리케이션 코드 (app.py): pythonCopy code from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, Kubernetes!" if __name__ == '__main__': app.run(host='0.0.0.0', port=8080) Docker 이미지 빌드 (Dockerfile): DockerfileCopy code FROM python:3.9-slim WORKDIR /app COPY requirements.txt /ap..

DevOps/k8s 2023.07.27

[K8s] Kubernetes LivenessProbe와 ReadinessProbe와 어플리케이션 안정성 강화하기

LivenessProbe왜 필요한지? 어플리케이션을 운영하는 과정에서 어플리케이션의 상태를 지속적으로 모니터링하고, 어플리케이션의 비정상 동작을 빠르게 감지하여 안정적인 서비스를 제공하는 것은 매우 중요합니다. 어플리케이션이 장애 상태에 빠지면 서비스 중단 및 고객 불만을 초래할 수 있기 때문에, 이러한 문제를 사전에 예방하고 빠르게 대응하기 위해 Kubernetes의 LivenessProbe와 Spring Boot Actuator를 사용합니다. 특징 어플리케이션의 생존 여부를 체크하는데 사용됩니다. 주기적으로 어플리케이션의 상태를 확인하고, 응답이 오지 않거나 오류가 발생한 경우 해당 POD를 재시작합니다. 어플리케이션이 예상되는 문제 또는 무한 루프, 데드락 등으로 인해 정상적으로 동작하지 않을 때 ..

DevOps/k8s 2023.07.27

[K8s] Kubernetes(K8s)의 기본 개념과 용어: POD, 서비스, kubelet

POD 왜 필요한지? Kubernetes에서 POD는 가장 기본적인 배포 단위입니다. 컨테이너들의 묶음으로, 하나의 POD 안에 여러 개의 컨테이너가 함께 실행됩니다. POD의 주요 목적은 서로 연관된 컨테이너들을 함께 배치하여 서비스 간의 통신과 데이터 공유를 간편하게 만들기 위함입니다. 또한 POD는 독립적인 네트워크 IP를 가지고 있기 때문에 개별적인 주소를 통해 접근 가능합니다. 특징 여러 개의 컨테이너를 하나의 논리적 단위로 묶어서 실행합니다. 공유하는 네트워크 네임스페이스와 볼륨을 사용하여 서로 통신하고 데이터를 공유할 수 있습니다. 하나의 노드에서 여러 개의 POD를 실행하며, 여러 노드에 분산 배포할 수 있습니다. 템플릿 예제 yamlCopy code apiVersion: v1 kind: ..

DevOps/k8s 2023.07.27