분류 전체보기 790

anti-affnity를 활용한 장애대비 전략

▶영상: youtu.be/Y2fe1EE_-Jo 활용사례 anti-affinity는 pod가 특정 노드에 스케쥴링 되지 않게 하는 방법입니다. mysql, oracle같이 중요한 서비스는 anti-affnity를 활용해서 한 노드에 한 replica pod만 실행되도록 설정하는 경우가 많습니다. 한 노드가 장애가 발생하더라고 다른 노드에서 서비스를 진행할 수 있기 때문입니다. anti-affinity 설정 DuringScheduling을 required로 설정하면 조건 만족시 무조건 스케쥴링하지 못합니다. 조건은 라벨셀렉터(labelSelector)로 pod라벨을 선택합니다. 그리고 topologykey를 kubernetes.io/hostname로 설정합니다. 설정한 topologykey 각 노드를 가르키..

쿠버네티스 로그 수집 원리

▶영상: youtu.be/w46VAXSKK-g 1. 원리 파드의 각 컨테이너의 stdout, stderr을 파일로 저장합니다. 각 파일은 log확장자로 저장되고 pod가 실행중이 노드에 저장됩니다. 저장위치는 /var/log/containers/[pod이름_namespace-컨테이너이름].log입니다. 예를 들어 nginx pod가 A노드에서 실행중이라고 가정해봅시다. nginx pod로그는 A노드의 /var/log/containers/nginx.log이름으로 저장되어 있습니다. 로그 파일을 보기 위해서 root권한이 필요합니다. 2. kubectl logs 명령어 kubectl logs명령어는 tail /var/log/containers/[pod].log와 같은 기능을 수행합니다.

EFK시스템에서 키바나 시각화 데이터 손실 주의

▶ 영상: youtu.be/RMnhhU-LJTY 1. 문제점 kibana에서 엘라스틱에 저장된 index를 불러올 때 aggregation을 수행합니다. 문제는 변환이 실패한 로그는 키바나에서 불러올 수가 없습니다. 심지어 실패 메세지도 없어서 로그가 손실을 알아채기가 어렵습니다. 2. 상세내용 log는 elasticsearch에 저장된 데이터입니다. 키바나 visualize에서 log로 접근을 못하고 aggregation이 끝난 log.keyword로 접근이 가능합니다. missing value옵션을 체크하고 log.keyword데이터를 보면 aggregation이 실패한 갯수가 많은 것을 볼 수 있습니다. 3. 임시 해결 실무에서는 적용해보지 않았지만 fluent-bit에서 데이터를 정제해서 보내면 ..

리눅스 base64인코딩 사용시 주의사항

문제점 echo와 함께 base64인코딩을 사용하면 "엔터"도 포함되어 base64인코딩 됩니다. 그러므로 이 값을 그대로 사용하면 분석하기 힘든 장애를 겪으실겁니다. ㅜ.ㅜ 해결방법 echo명령어 인자 중 "-n"이 공백을 제거해줍니다. 아래 그림과 같이 -n인자 유무에 따라 결과 값이 달라진 것이 보일겁니다. ▶영상: youtu.be/8FaKtor-AFA

aws VPC 생성

안녕하세요. 이번시간에는 아마존 클라우드 서비스(이하 aws)에 외부 통신이 되는 VPC를 생성하는 과정을 소개합니다. 통신 테스트는 글에는 생략되어 있지만 영상(10:53)에서 확인 가능합니다. ▶영상: https://youtu.be/SJWmWwVIH2g 1. VPC란? aws공식 홈페이지를 참조하면 VPC는 aws에서 동작하는 가상 네트워크(Virtual Private Cloud)입니다. VPC는 외부와 통신하기 위해서 인터넷 게이트웨이를 연결합니다. aws에서 생성한 리눅스 등 ec2는 default VPC안에 위치하게 됩니다. 2. 외부와 통신하기 위한 VPC 최소 구조 당연히 VPC가 필요하고 서브넷, 인터넷 게이트웨이, 라우팅 테이블 설정이 필요합니다. 3. VPC생성 VPC -> Your V..

파이썬 - json을 파일로 저장할 때 공백 크기 설정

안녕하세요. 이번시간에는 파이썬에서 json데이터를 저장할 때 알짜배기 TIp을 소개합니다. ▶ 영상: youtu.be/4fA39P8eRlQ 기본 옵션 json데이터를 저장할 때 가능한 파일 크기를 줄이기 위해서 공백 크기가 1로 설정되어 있습니다. 엔터는 존재하지 않고 1줄에 모든 데이터가 파일에 저장되어 있습니다. 불편한 점 분석 또는 개발 시 어떤 데이터가 있는지 보기 매우 힘듭니다. 보통 도구를 이용해서 json을 예쁜 형식으로 만듭니다. 하지만 이런 과정이 많으면 매우 귀찮아집니다... 공백 설정 json을 파일로 저장하는 json.dump함수 파라미터 중 indent를 사용하면 공백을 설정할 수 있습니다. 보통 4단위를 설정합니다. with open('result.json', 'w') as f..

파이썬 경로를 다룰떄 유용한 함수(os.path.join)

▶영상: https://youtu.be/xYQQsO1CPiY 1. os.path.join함수가 좋은 이유 os.path.join함수는 운영체제에 맞게 폴더 구분자를 다뤄서 경로를 생성해줍니다. ​ 운영체제마다 폴더를 구분하는 구분자가 다릅니다. 윈도우는 역슬러쉬이지만 리눅스는 슬러쉬입니다. 만약 'Downloads' + '/b'처럼 문자열 더하기 연산으로 경로를 만들었다면 리눅스에서는 동작하지만 윈도우에서는 동작하지 않고 에러를 발생합니다. ​ os.path.join은 어떤 운영체제든지 경로를 알맞게 생성해서 에러를 발생시켜 주지 않습니다​. 2. os.path.join 사용법 os.path.join함수 파라미터에 생성하고 싶은 경로의 문자열만 입력하면 됩니다. 예를 들어서 a/b/c라는 경로를 만들고 ..

kubeadm을 이용한 쿠버네티스 설치

버네티스를 자동으로 설치하는 스크립트를 공개(https://blog.naver.com/kgg1959/222164837673) 했었는데요. 이번 시간에는 설치 스크립트에서 했던 동작을 한 과정 한과정 직접 실습해보겠습니다. ​ ▶영상: https://youtu.be/2-ebS1NuTW8 ​ 1. 준비 1) virtualbox가 설치되어 있어야 합니다. 2) 현재 접속되어 있는 IP대역을 알아야 됩니다(예: 192.168.0.x) 2. 우분투 서버 설치 쿠버네티스에 설치한 리눅스는 우분투 서버를 사용합니다. 우분투 공식 홈페이지에서 다운로드하고 설치를 진행합니다. 우분투 서버 설치과정은 생략합니다. ▶ 우분투 서버 다운로드 공식 홈페이지: https://ubuntu.com/download/server 3. ..

우분투 18, 20버전 IP변경

우분투 18버전 이후부터는 netplan으로 ip설정을 해야 합니다. ip설정파일의 위치는 /etc/netplan/00-installer-config.yaml입니다. 1. 네트워크 인터페이스 이름 확인 파일 수정전 ifconfig 또는 ip addr을 통해 네트워크 인터페이스 이름을 확인합니다. 저는 enp0s3입니다. 2. 파일 변경 /etc/netplan/00-installer-config.yaml파일을 수정합니다. ▶ addresses: 고정ip ▶ gateway4: 게이트웨이 ▶ nameservers.addresses: dns서버 주소 network: ethernets: enp0s3: addresses: [192.168.219.144/24] gateway4: 192.168.219.1 nameser..