전체 글 56

k8s::쿠버네티스 오브젝트 (Labels and Selectors)

레이블은 파드와 같은 오브젝트에 첨부된 키와 값의 쌍이다. 레이블은 오브젝트의 특성을 식별하는데 사용되어 사용자에게 중요하지만, 코어 시스템에 직접적인 의미는 없다. 레이블로 오브젝트의 하위 집합을 선택하고 구성하는데 사용할 수 있으며 레이블을 붙이는 시점은 오브젝트를 생성할 때나 생성 이후 언제든 가능하다. "metadata": { "labels": { "key1": "value1", "key2": "value2", } } Motivation 레이블을 이용하면 사용자가 느슨하게 결합한 방식(상호 의존성을 줄이는 방식)으로 조직 구조와 시스템 오브젝트를 매핑할 수 있으며, 클라이언트에 매핑 정보를 저장할 필요가 없다. 서비스 배포와 Batch Processing은 보통 다차원의 엔티티들이다. (예를들어 ..

k8s::쿠버네티스 오브젝트 (namespace)

쿠버네티스는 동일한 물리 클러스터를 기반으로 하는 여러 가상 클러스터를 지원한다. 이런 가상 클러스터를 네임스페이스라고 한다. 네임스페이스는 여러 개의 팀이나, 프로젝트에 걸쳐서 많은 사용자가 있는 환경에서 사용하도록 만들어졌다. 리소스의 이름은 네임스페이스 내에서 유일해야 하지만, 네임스페이스를 통틀어서 유일할 필요는 없다. Working with Namespaces 네임스페이스 생성/삭제 //create kubectl create namespace //delete kubectl delete namespace 네임스페이스 조회 kubectl get namespace NAME STATUS AGE default Active 1d kube-system Active 1d kube-public Active 1d..

k8s::쿠버네티스 컴포넌트

쿠버네티스 클러스터는 컨테이너화된 애플리케이션으 실행하는 노드라고하는 워커 머신의 집합이다. 모든 클러스터는 최소 한 개의 워커 노드를 가진다. 워커 노드는 애플리케이션의 구성요소인 파드를 호스트한다. Control Plane은 워커 노드와 클러스터내 파드를 관리한다. Control Plane Component 클러스터에 관한 전반적인 결정(ex. 스케줄링)을 수행하고 클러스터 이벤트(ex. deplotment의 replicas field에 대한 요구 조건이 충족되지 않을 경우 새로운 파드 구동)를 감지하고 반응한다. kube-api-server API 서버는 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트이다. API 서버는 Control Plane Component의 Front-end이..

k8s::쿠버네티스란 무엇인가

What is Kubernetes(k8s)? 구글이 2014년 오픈소스화한 프로젝트 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. Going back in time Traditional Deployment (전통적인 배포) 애플리케이션을 물리 서버에서 실행 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없기에 리소스 할당의 문제 발생 여러 애플리케이션이 하나의 물리서버에 배포되면, 리소스를 전부 차지하는 애플리케이션 인스턴스가 발생 할 수 있고 이에 다른 애플리케이션의 성능저하 Virtualized Deployment (가상화된 배포) 단일 물리 서버의 CPU에서 여러 가상 시스템(V..

[C++] 백준 알고리즘 1152번 (단어의 개수)

문제 이번에 다뤄볼 문제는 1152번 문제 '단어의 개수'입니다. 문장을 입력받고 문장이 끝나는 부분까지의 개수(문자+띄어쓰기)를 구해낸 다음 for문을 돌며 띄어쓰기가 발견될때 num값을 증가시켜줍니다. 만약 문장의 끝 혹은 시작에서 띄어쓰기가 포함되어 있다면 num을 하나 빼줍니다. 마지막에서 띄어쓰기만 입력되었을 경우를 예외처리 해주면 마무리가 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include #include using namespace std; int main() { char arr[1000001]; int count = 0, num = 0; cin.getline(arr, 1000001); while (arr[count] != '\0') count+..

algorithm 2019.01.20

[C++] 백준 알고리즘 1913번 (달팽이)

문제 이번에 다뤄볼 문제는 1913번 문제 '달팽이'입니다. 달팽이 문제에서 연습해야 하는 key-point는 2차원 배열과 이중포문입니다. 이번 문제는 아래 코드를 보며 같이 설명드리겠습니다. rcheck = 0, ccheck = 0 // 왼쪽 끝, 위쪽 끝을 나타내기 위한 값입니다. rlimit = 0. climit = 0 // 오른쪽 끝, 아래쪽 끝을 나타애기 위한 값입니다. rlimit, climit의 경우 N값을 입력 받았을때 N-1값으로 대체시켜줍니다. 이후 for문을 돌며 4개의 분기문을 만들어줍니다. 2차원 배열을 (0,0)부터 채워나가기 시작 할 것이므로 N*N값부터 1씩 줄여가며 배열을 완성합니다. N을 소인수분해 했을때 나타날 수 있는 인수중 가장 큰 값은 루트N입니다. 따라서, 2부..

algorithm 2019.01.20

[C++] 백준 알고리즘 10799번 (쇠막대기)

문제 이번에 다뤄볼 문제는 10799번 문제 '쇠막대기'입니다. 쇠막대기 문제에서 연습해야 하는 key-point는 스택입니다 쉽게 생각해보면 어렵지 않게 풀 수 있는 문제입니다. 레이저가 생기는 순간까지 몇개의 쇠막대기가 열려있는지를 판단하면 됩니다. 문제에서 주어진 예시를 보면 첫번째 레이저에서는 잘라지는 막대기가 존재하지 않습니다. 그러나 두번째 레이저를 보면 3개의 쇠막대기가 열려있는걸 볼 수 있습니다. 그럼 두번째 레이저에 의해 3개의 조각이 나올 수 있습니다. 세번째 레이저에서도 여전히 3개의 레이저가 열려있습니다. 그러므로 3개의 조각이 더 나오게 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include #include using namespace s..

algorithm 2019.01.20

[C++] 백준 알고리즘 9012번 (괄호)

문제 이번에 다뤄볼 문제는 9012번 문제 '괄호'입니다. 괄호문제에서 연습해야 하는 key-point는 스택입니다 스택은 선입후출 방식의 자료구조인데요, 가장 먼저 들어온 값이 가장 마지막에 빠지는 구조라고 생각하시면 됩니다. 예를들어 우리가 원통 기둥안에 물건을 하나씩 쌓아서 넣은뒤 그걸 다시 꺼내려면 가장 마지막에 넣었던 물건부터 꺼내게 되는데 이걸 스택이라고 합니다. 이 문제에서 스택을 사용할때는 "top"이라는 변수를 활용하겠습니다. top변수는 스택으로 사용할 배열에서 현재 어느 위치까지 값이 들어갔는지 어느 위치까지 값을 꺼내왔는지를 알기위한 일종의 Index라고 생각하면 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include #include usi..

algorithm 2019.01.20

[C++] 백준 알고리즘 2581번 (소수)

문제 이번에 다뤄볼 문제는 2581번 문제 '소수'입니다. M이상 N이하의 자연수 중 소수를 에라토스테네스의 체를 활용하여 구하고 처음으로 만나게 되는 소수가 최소값이므로 최초 소수를 min에 저장합니다. 이후 나오는 모든 소수들의 합을 구하면 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include using namespace std; int main() { bool arr[10001] = { false }; int m, n, min; int sum = 0, check = 0; cin >> m; cin >> n; for (int i = 2; i

algorithm 2019.01.20

[C++] 백준 알고리즘 1924번 (2007년)

문제 이번에 다뤄볼 문제는 1924번 문제 '2007년'입니다. 주어진 내용을 보면 2월은 28일까지 4,6,9,11은 30일까지 나머지는 31일까지 존재한다는 정보를 알아낼 수 있습니다. 따라서 입력으로 들어오는 목표날짜까지의 일수를 먼저 구한다음 이를 7로 나누어보면 답을 알 수 있습니다. 0이라면 일요일 ~ 6이라면 토요일이 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include using namespace std; int main() { int m, d; int answer; int count=0; cin >> m >> d; m -= 1; for (m; m >= 1; m--) { if (m == 2) { count += 28; } else if (m ==..

algorithm 2019.01.20

[C++] 백준 알고리즘 11653번 (소인수분해)

문제 이번에 다뤄볼 문제는 11653번 문제 '소인수분해'입니다. 소인수분해 문제에서는 크게 설명드릴만한 내용이 딱히 없습니다. N을 소인수분해 했을때 나타날 수 있는 인수중 가장 큰 값은 루트N입니다. 따라서, 2부터 루트N까지 for문을 돌면서 N을 나눌 수 있다면 계속 나눠주면 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include using namespace std; int main() { int n; cin >> n; for (int i = 2; i*i

algorithm 2019.01.20

[C++] 백준 알고리즘 1929번 (소수 찾기)

문제 이번에 다뤄볼 문제는 1929번 문제 '소수 찾기'입니다. 소수 찾기 문제에서 연습해야 할 key-point는 에라토스테네스의 체 입니다. 에라토스테네스의 체는 쉽게말해 소수를 구했을 경우 해당 수를 소수로 갖는 뒤의 숫자들을 배제시키는 방법이라고 생각하시면 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include #include #pragma warning (disable:4996) using namespace std; int main(){ int pn = 0; bool c[1000001] = { false }; int m, n; scanf("%d %d", &m, &n); for (int i = 2; i

algorithm 2019.01.20

[C++] 백준 알고리즘 1978번 (소수 찾기)

문제 이번에 다뤄볼 문제는 1978번 문제 '소수 찾기'입니다. 소수 찾기 문제에서 연습해야 할 key-point는 소수찾는법을 암기하는것 입니다. 네이버에서 알고리즘 포스팅을 했을때 예상외로 많은 조회수를 올린 문제가 바로 이 소수찾기 문제였습니다. 소수는 모두가 잘 알고있듯, 약수가 1과 자기 자신밖에 없는 수를 칭합니다. 만약 입력된 N값이 소수가 아니라면 N = a x b (a

algorithm 2018.10.26
반응형