전체 글

Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
·Algorithm (PS)
https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 분할 정복 문제이다 구현은 2가지 함수로 크게 나누었다. 1. def multiply() : 행렬과 행렬을 곱셈한후 return 해주는 함수 특별한것 없이 행렬 계산을 for 문으로 구현했다. 2. def solve() : 분할정복으로 연산하는 함수 지수 B가 홀수 일 때와 짝수일때를 나눠서 연산했다 지수이니까 ..! 예를들어서 지수가 (=B 값이) 5인 경우 도식화 해보면 다음과 같다 5를 5//2 로 나눈 ..
Kubernetes Namespace란 쿠버네티스 클러스터를 논리적으로 분할하는 파티션이다. 즉, 클러스터 내에서 오브젝트를 논리적으로 파티셔닝해서 사용할 수 있다. 주의 ) 도커컨테이너의 리눅스 네임스페이스와는 관련이 없다. 쿠버네티스의 네임스페이스 개념은 따로 이해해야 한다. 클러스터의 Namespace 정보 확인하기 $ kubectl get namespace vagrant@kube-control1:~/work/mj$ kubectl get namespace NAME STATUS AGE default Active 24h kube-node-lease Active 24h kube-public Active 24h kube-system Active 24h default : 별도로 네임스페이스를 지정하지 않으면..
Annotation이란 Object에 부가적으로 붙여주고 싶은 정보를 Annotation이라고 한다. Label과 같이 Key: Value 값으로 저장되지만, Label처럼 검색이 되지 않는다. Annotation을 추가하는 방법 1. object에 직접 Annotation을 커맨드로 추가 $ kubectl annotate pods PODNAME ANNOTATION_KEY=VALUE [예시] $ kubectl annotate pods myapp-pod devops-team/developer=Minjee kubectl describe pods 명령어를 통해 다음과 같이 Annotation 필드의 마지막 줄에 내용이 추가 된 것을 확인할 수 있다. 2. Manifest File 생성시에 Annotation ..
Pod 쿠버네티스의 워크로드 리소스 중에서 가장 작은 기본 구성 단위이다. 쿠버네티스에서는 컨테이너 단위로 다루는 도커와 달리 개별 pod 단위로 다룬다. 하나이상의 컨테이너를 포함하는 쿠버네티스의 기본 실행 단위이다. pod가 포함하는 컨테이너는 1개일 수도, 여러개일 수도 있다. pod가 실행하는 컨테이너가 1개이면 pod와 컨테이너를 비슷하게 생각할 수 있다. 그러나 컨테이너가 여러개 실행될 수도 있으므로 구분해야 한다. 네트워크나 Storage에 연결할 때 컨테이너가 아니라, pod 단위와 연결한다. 즉, pod와 연결된 volume storage가 있는 경우 pod 내부의 컨테이너들은 이 공간을 공유해서 사용한다. 네트워크도 동일하게 공유해서 사용한다. pod라는 단위는 하나의 노드에서 실행된다..
Label이란 레이블은 부가적인 정보를 컨테이너에 붙이는 것이며, 레이블을 통해서 오브젝트를 검색/식별할 수 있다. 레이블을 추가한다고 해서 쿠버네티스 클러스터에 직접적으로 영향을 주는 것은 아니지만, 사용자가 쉽게 식별할 수 있다. 컨테이너의 역할에 대해 설명을 레이블로 저장해 놓을 수 있다. 레이블은 key: value 쌍으로 되어 있다. 레이블 형태는 접두어/이름 형식으로 사용가능하다. 단, kubernetes.io/ 와 k8s.io 접두어는 쿠버네티스 환경에서 이미 예약되었으므로 사용할 수 없다. Label은 manifest file 작성시에 metadata 하위에 작성할 수 있다. pod들의 Label을 확인하는 명령어 $ kubectl get pods --show-labels [예시] vagr..
·Algorithm (PS)
https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 주어진 그래프는 연결그래프이다. 모든 노드들이 연결된 상태이다. 노드의 개수는 N개 이고, 간선의 개수는 N-1 이다. 최소 비행기의 개수는, cycle을 형성하지 않으면서 모든 노드들을 연결해주는 간선의 개수인 N-1가 답이 된다. tree문제를 풀고 싶었는데 운좋게 얻어걸렸다 ㅋㅋㅋㅋ T = int(input()) for _ in range(T): n, m..
YAML 데이터를 표현하기 위한 언어 흔히 서버에서 데이터를 보낼때 사용하는 JSON 처럼 데이터를 표현하는데 사용된다. 쿠버네티스에서는 YAML 과 JSON 둘 다 사용할 수 있는데, 보통 object를 정의하기 위한 Manifestfile을 작성할 때는 YAML로 작성한다. YAML 자료형 문법 1. 스칼라 / 스트링 : 문자열 데이터를 하나로 묶어서 사용할 수 있다. ‘’ , "" 와 같이 따옴표로 묶지 않아도 YAML에서는 문자열로 사용할 수 있다. kubernetes 'kubernetes' hello kubernetes 2. 리스트 / 배열 리스트의 element들을 - 을 앞에 붙여서 표현한다. - apple - banana - cat 3. 해시 / 딕셔너리 key, value 형식으로 데이터..
API 일반적인 기능들을 코어 그룹의 API에서 다루게 된다. 특정한 종류의 오브젝트들을 API그룹으로 다루게 된다. 오브젝트들 마다 사용할 수 있는 버전과 종류의 API가 있으므로 이에 맞게 사용해야 한다. API를 통해 오브젝트들이 관리되므로 알아두자 API의 종류에는 세가지가 있다. 알파버전 : 실험적인 API버전이다. 실험적인 만큼 불안정하고 버그가 있을 확률이 높다. 따라서 기본적으로 비활성화 되어 있지만 사용할 수는 있다. 버전 이름이 v1alpha 형식으로 되어 있다. 베타버전 : 충분히 코드가 테스트 되어 있고 기본적으로 활성화 되어 있다. 하지만 다음 버전에서 호환성이 변할 수 있다. 그래도 보통 마이그래이션을 할 수 있는 방법이 문서로 제공되므로 알파버전보다는 안전하다고 할 수 있다. ..
minjiwoo
minji's engineering note