쿠버네티스 10

[k8s] 명령어 8개로 가장 빠르게 클러스터 생성하고 쿠버네티스 모니터링까지

Introduction 쿠버네티스는 뛰어난 기능을 제공하지만, 처음 시작하기는 조금 복잡할 수 있습니다. 하지만 Minikube를 이용하면 로컬 환경에서 손쉽게 쿠버네티스 클러스터를 만들 수 있습니다. 이번에는 단 아래의 8개의 명령어로 클러스터를 만들고, 가장 빠르게 모니터링까지 하는 방법에 대해 안내하겠습니다. 쿠버네티스를 처음 다뤄보는 분들에게는 Minikube가 정말 좋은 선택일 거예요. Minikube를 사용하면 로컬 환경에서 간단하게 쿠버네티스 클러스터를 만들 수 있답니다. 설치 전 요구 사항 Docker Desktop 설치 Docker Desktop은 Minikube에서 로컬 Kubernetes 클러스터를 실행하기 위해 필요합니다. 먼저 Docker Desktop을 설치해야 해요. 공식 Do..

DevOps/k8s 2024.02.16

[Helm] Helm Chart 생성하기 1편

Helm과 Helm Chart란? Helm은 Kubernetes 애플리케이션을 관리하기 위한 패키지 관리자이며, Helm Chart는 Kubernetes 리소스를 정의하고 패키징하는 방법을 담은 템플릿입니다. 이를 통해 반복적인 작업을 줄이고 표준화된 배포를 가능하게 합니다. 실습 환경 설정 먼저 간단한 환경을 설정해봅시다. 터미널에서 다음과 같이 명령어를 입력하여 빈 Helm Chart를 생성합니다. helm create myfirstchart 이 명령어는 **myfirstchart**라는 이름의 Helm Chart를 생성합니다. 이제 이 Chart를 편집하면서 Helm의 기본 개념을 익혀보겠습니다. 간단한 ConfigMap 만들기 실습의 시작은 간단한 ConfigMap을 만들어서 Helm Chart에..

DevOps 2024.01.24

2023-12-25 CKA 기출 feat. CKA 합격

마스터 노드 버전 업그레이드 (O) 1.28.0 -> 1.28.1 (kubeadm 사용) kubelet, kubectl도 같은 버전 업그레이드워커노드는 건들지 마세요. Etcd Backup & Restore (X) peer.key , peer.crt , cacrt , endpoints 로 Back up (성공) -> 요구하는 파일명을 사용하여 restore. —data-dir /var/lib/etcd-restore (성공) manifests/etcd.yaml 에서 hostpath 부분 Restore할 때 적은 —data-dir 경로로 변경 함 restore 완료한 부분부터 문제대로 하지않은 거 같은 찝찝함이 있어서 틀렸을거 같다 Node not ready -> ready (O) k get nodes 죽은..

DevOps/k8s 2023.12.28

[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