분류 전체보기 1185

[eval] 문자열 식 실행

eval 문자열형의 식을 입력받아 그 실행 결과를 반환하는 함수 예시 print(f"1 + 2 = {eval('1 + 2')}") print(f"1 == 2 = {eval('1 == 2')}") 함수의 실행 결과도 반환할 수 있다. print(eval("print('hello')")) 주의점 간편하고 강력하지만 사용자의 입력값을 eval 함수로 실행시키는 등의 코드는 사용하지 않도록 한다. 해킹의 위험성이 존재하기 때문이다. 간단한 예를 통해 알아보자. 예시 코드 아래 코드는 사용자가 입력한 수식을 계산하여 출력하는 코드이다. def input_eval(): user_input = input("enter expression: ") return eval(user_input) print(input_eval(..

Python 2021.12.17

Volume 관련 명령어

Pod는 수시로 삭제되었다가 재생성되는데, 삭제 시에 포드 내부에 있는 데이터도 함께 삭제된다. 유지해야 하는 데이터가 존재한다면 Volume을 구성해 Pod에 마운트해야 한다. 이 글에서는 Volume 구성 및 PV/PVC를 이용한 구성 및 확인 명령어에 대해 정리한다. Volume (HostPath) 구성 포드 생성 yaml 파일에 .spec.containes.volumeMounts 필드와 .spec.volumes 필드를 작성하여 구성한다. apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: webapp name: webapp spec: containers: - image: kodekloud/event-simulator na..

[sysctl] Kernel 설정 변경

sysctl 버전 번호나 보안 설정 같은 시스템 커널의 속성들을 읽고 수정하는 유닉스 계열 운영 체제의 기능이다. 커널 매개변수는 /proc/sys 경로 아래에 존재한다. 이 글에서는 sysctl 사용방법을 정리해둔다. 시스템 설정 변경이므로 root 권한이 필요하며, 튜닝 시 시스템이 crash 될 위험이 있으므로 사용에 주의한다. 현재 설정값 확인 모든 값 확인 sysctl -a # -a : --all. 모든 변수 표시 특정 값만 확인 sysctl -n # 예시 sysctl -n vm.overcommit_memory 설정값 변경 - 휘발성 sysctl 명령 또는 /proc/sys 아래 설정 파일을 직접 수정할 수 있다. 휘발성이기 때문에 부팅 이후에는 초기화된다. sysctl -w 사용 sysctl ..

Linux 2021.12.15

[NVIDIA/gpu-monitoring-tools] dcgm-exporter CrashLoopBackOff

쿠버네티스 환경에서 GPU 서버인 노드를 Grafana와 Prometheus를 이용해 모니터링하고자 한다. 모니터링 도구는 NVIDA Gpu Monitoring tools이며, 각 노드에 dcgm-exporter 설치가 필요하다. 이 글에서는 helm chart package로 dcgm-expoter 컨테이너를 실행하는 포드를 클러스터에 배포했다. 그러나, 배포 이후 아래와 같이 CrashLoopBackOff 상태인 dcgm-expoter 포드가 존재했다. 해당 현상의 원인을 찾아 해결한 방법을 정리해둔다. 현상 에러 메시지 드라이버 초기화 관련 에러인 것으로 추측된다. $ kubectl logs dcgm-exporter-fk4s5 Warning #2: dcgm-exporter doesn't have s..

Kubernetes/삽질 2021.12.14

Ingress 확인 및 생성

Ingress란 클러스터 내의 서비스에 대한 외부 접근을 관리하는 개체로, 일반적으로 HTTP를 관리한다. 이 글에서는 Ingress 정보를 확인하고 생성하는 명령어에 대해 정리한다. Ingress 목록 확인 get 명령으로 이름, 호스트 등의 정보를 확인할 수 있다. kubectl get ingresses.networking.k8s.io Ingress 상세 정보 확인 describe 명령으로 이름, 규칙 등의 상세 정보를 확인할 수 있다. kubectl describe ingresses.networking.k8s.io --namespace= # 예시 kubectl describe ingresses.networking.k8s.io --namespace=app-space ingress-wear-watch ..

[Jenkins] Build 히스토리 삭제 - 2

2021.05.23 - [Jenkins] Build 히스토리 삭제 - 1 위 글에서는 웹 상에서 특정 Job의 특정 Build를 삭제하거나, 터미널 상에서 빌드 이력을 삭제하는 방법에 대해 정리했다. 이 글에서는 젠킨스 기본 기능인 오래된 빌드 삭제 (Discard Old Builds) 기능을 이용해 빌드 히스토리를 삭제하는 방법을 정리한다. 오래된 빌드 삭제 (Discard Old Builds) 설정된 빌드 삭제 조건에 따라 빌드 이력을 삭제하는 젠킨스의 기본 기능 각 프로젝트의 구성 설정에서 기능을 활성화/비활성화할 수 있다. 기능을 활성화한 후 적용하면 다음 빌드부터 동작한다. 플러그인 - Discard Old Builds 젠킨스의 기본 기능보다 복잡하고 세부적인 삭제 조건을 지원하는 플러그인 당연..

Jenkins 2021.12.12

Network Policy 생성 및 확인

Network Policy는 IP 주소 또는 Port 수준에서 트래픽 흐름을 제어하는 경우 사용한다. 포드가 네트워크 상의 네트워크 엔티티와 통신할 수 있도록 허용하는 방법을 정의한다. 이 글에서는 Network Policy 정보를 확인하고, 생성하는 방법에 대해 정리한다. Network Policy 목록 확인 kubectl get networkpolicies.networking.k8s.io Network Policy 상세 정보 확인 이름, Label, 정책 유형 등의 정보를 확인할 수 있다. kubectl describe networkpolicies.networking.k8s.io # 예시 kubectl describe networkpolicies.networking.k8s.io payroll-poli..

[PS1] Prompt 표시 형식 변경

프롬프트; prompt 컴퓨터 터미널 또는 터미널 에뮬레이터의 CLI(커맨드 라인 인터페이스)의 명령줄 대기모드 현재 테스트 목적으로 사용하는 서버는 프롬프트를 아래 사진처럼 Username@Hostname 형식으로 표시한다. AWS EC2는 기본적으로 호스트네임을 IP에 기반해 생성하는데, 서버가 많은 경우에는 IP 주소 기반 호스트네임을 표시하는 것보다 인스턴스명이나 별도 별칭을 표시하는 게 가독성이 좋다. 이 글에서는 이 프롬프트 설정을 수정하는 방법을 정리한다. 서버 설정인 hostname은 수정하지 않을 것이다. PS1 프롬프트 형식은 PS1이라는 이름의 환경 변수 값에서 표현된다. 현재 설정 확인 # 현재 적용된 환경 변수 출력 env env | grep PS1 # 또는 echo $PS1 기호..

Linux 2021.12.10

Services 관련 명령어

Services란 포드에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 방법이다. 즉, 서비스를 통해 포드에 접근할 수 있다. 이 글에서는 Services 목록 및 정보를 확인하고, 생성하는 방법에 대해 정리한다. Services 목록 확인 get 명령어로 Services 목록을 확인한다. 서비스의 이름, 유형 등을 확인할 수 있다. kubectl get service 사진에서 확인할 수 있는 kubernetes 서비스는 kubernetes 시작 시 생성된 기본 서비스이다. Services 상세 정보 확인 describe 명령어로 Services의 상세 정보를 확인한다. Port, TargetPort, Label, Endpoints 등의 정보를 확인할 수 있다. kubectl describe se..

Job/CronJob 관련 명령어

Job은 특정 개수의 포드가 성공적으로 완료되는 것을 보장하며, 실행한 포드가 실패, 하드웨어 장애 발생, 노드 재부팅 등과 같은 문제 발생 시 자동으로 포드를 재실행한다. 주로 실행 후 종료되어야 하는 작업을 실행시킬 때 사용한다. 이 글에서는 job을 생성, 삭제, 수정 및 정보를 확인하는 방법에 대해 정리한다. Job 생성 create 명령을 이용해 Job을 생성한다. kubectl create job --image= # 예시 kubectl create job throw-dice-job --image=kodekloud/throw-dice Job 목록 확인 Job의 이름, 완료 여부 등을 확인할 수 있다. kubectl get jobs.batch Job 상세 정보 확인 포드를 완료할 때까지 포드를 재..