2021/02 15

[Kubernetes Study - 11] Pod - Qos(Quality of Service) Class

Pod의 남은 리소스가 부족한 경우, Pod는 다운되버린다. 하지만 Pod는 중요도가 각기 다르기 때문에, 중요한 Pod가 죽어버리면 서비스에 큰 문제가 생길 수 있다. 그렇기 때문에 상대적으로 중요도가 낮은 다른 Pod를 down 시키고 그만큼의 리소스를 중요도가 높은 Pod에 할당 할 수 있다. 쿠버네티스가 Pod를 생성할 때 다음의 3가지 QoS 클래스 중 하나를 할당한다. 각각을 명시적으로 설정할 수는 없고 컨테이너에 정의된 resources의 request, limits에 따라 쿠버네티스가 알아서 클래스를 적용해주는 것이다. Guranteed(가장 나중에 삭제) 모든 Container에 Request와 Limit가 설정되야 한다. Request와 Limit에는 Memory와 CPU가 모두 설정되..

DevOps/Kubernetes 2021.02.22

[Kubernetes Study - 10] Pod - readinessProbe, livenessProbe

Pod의 기본적인 라이프 사이클 Pending → Running → Succeeded → Failed Pending : 파드가 쿠버네티스 클러스터에서 승인되었지만 아직 컨테이너가 설정되지 않았음. 네트워크를 통한 컨테이너 이미지 다운로드 시간도 포함 Probe Probe의 상태 : Success, Failure, Unknown startupProbe : 어플리케이션이 시작 되었는지를 판단 startupProbe를 세팅한 경우, startupProbe가 OK신호를 보내줘야 readinessProbe 와 livenessProbe가 돌아간다. readinessProbe : 컨테이너가 요청을 처리할 준비가 되었는지 Pod가 새로 배포되고 Running 상태여도 그 안에 있는 컨테이너에서 배포되는 어플리케이션도 ..

DevOps/Kubernetes 2021.02.22

[Kubernetes] AKS의 워커노드에 접속하기

docs.microsoft.com/ko-kr/azure/aks/ssh AKS(Azure Kubernetes Service) 클러스터 노드에 대한 SSH 연결 만들기 - Azure Kubernetes Service 문제 해결 및 유지 관리 작업은 AKS(Azure Kubernetes Service) 클러스터 노드를 사용하여 SSH 연결을 만드는 방법을 알아봅니다. docs.microsoft.com 실행환경 : Ubuntu 18.06 또는 Mac AKS를 구성하고, Pod를 배포한 상황 Azure에서 PaaS로 제공하는 쿠버네티스 서비스를 사용하면, Master Node는 Azure에서 관리하고, 사용자는 Worker Node만 관리할 수 있다. AKS를 만들면 아래와 같이 가상머신확장집합 이라는 것이 생겼..

DevOps/Azure 2021.02.22

[BOJ 백준] 2473번 : 세 용액(Python, 파이썬)

www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 투 포인터를 활용해서 문제를 풀었다. 기존의 투 포인터와 다른 점은 확인해야 할 값이 1개 더 있는것인데, 이것은 추가적인 포인터를 1개 더 두어 해결하였다. 포인터가 1개 더 추가 되면서 포인터끼리 겹치는 경우가 발생할 수 있기 때문에 따로 체크를 해줘야 한다. 세 용액의 합이 0이 되는 경우는 여러개 있을 수 있고, 그 중 아무거나 출력하면 되기 때문에 세 지점에서의 값들의 합이 0 이..

[Kubernetes Study - 09] - Replication Controller, ReplicaSet, Replicas, Selector

Controller Controller의 기능 Auto Healing Pod가 죽었을 때, 이 Pod를 다른 Node위에 새로 만들어준다. Auto Scaling Pod의 리소스 상태가 limit가 되었을 때, Controller가 Pod를 하나 더 만들어서 리소스의 부하를 낮춰준다. Software Update 여러 Pod에 대한 버전을 업데이트 하는 경우, 한번에 업데이트 가능 업데이트 중 문제가 생기면 롤백도 가능 Job 일시적인 작업을 해야하는 경우 그 순간에만 Pod(Job)을 만들어서 작업을 하고 삭제를한다. 그 순간에만 일시적으로 리소스를 늘렸다가 삭제하기 때문에 효율적인 리소스 활용 가능 ReplicationController ReplicationController는 Deprecated 되..

DevOps/Kubernetes 2021.02.20

[BOJ 백준] 20168번 : 골목 대장 호석 - 기능성(Python, 파이썬)

www.acmicpc.net/problem/20168 20168번: 골목 대장 호석 - 기능성 첫 줄에 교차로 개수 N, 골목 개수 M, 시작 교차로 번호 A, 도착 교차로 번호 B, 가진 돈 C 가 공백으로 구분되어 주어진다. 이어서 M 개의 줄에 걸쳐서 각 골목이 잇는 교차로 2개의 번호와, 골목의 www.acmicpc.net 다익스트라 문제를 풀려고 했는데, 백트래킹으로 풀었다. 처음에는 문제의 설명이 조금 헷갈렸는데, 고려해야할 조건은 다음과 같았다. 가진 돈을 목적지까지 도착하기 전에 전부 사용하지 않기 목적지에 도착했다면 지금까지 지나온 노드 중 가장 비용이 큰 값이 어떤 것인가? 목적지에 도착하는 길이 2개 이상인 경우 가장 비용이 큰 값 중 최소가 정답 위의 조건들을 백트래킹에 맞게 풀어주..

[Kubernetes Study - 08] Namespace, ResourceQuota, LimitRange

쿠버네티스 클러스터 안에는 여러개의 네임스페이스를 만들 수 있다. 또한, 하나의 네임스페이스 안에는 여러개의 파드를 만들 수 있다. 각 파드들은 하나의 클러스터 내부에 있는 자원을 공유해서 사용한다. 이때 특정 파드에서 너무 많은 자원을 사용하면 다른 네임스페이스에 있는 파드들이 리소스를 사용하지 못하므로 이것을 방지하기 위해서 네임스페이스 마다 resource quota를 할당할 수 있다. 또한, LimitRange를 둬서 네임스페이스에 두는 Pod의 크기를 제한할 수 있다. Namespace 같은 네임스페이스 안에서 오브젝트 끼리의 이름은 겹칠 수 없다. Pod와 Service의 네임스페이스가 서로 다르면, Selector로 묶을 수 없다. 서로 다른 Namespace에서 통신이 가능하지만 통신을 막..

DevOps/Kubernetes 2021.02.12

[BOJ 백준] 1806번 : 부분 합(Python, 파이썬)

www.acmicpc.net/problem/18061806번: 부분합첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다.www.acmicpc.net 문제의 이름에서도 알 수 있듯 부분합을 활용하는 문제이다. 부분합이란 시작점과 끝점을 정해서 해당 구간 내에 있는 원소들의 합을 구하는 것이다. for i in range(1, n+1): prefix[i] = prefix[i-1] + _list[i-1] 이 문제는 굳이 부분 합을 사용하지 않고, 투 포인터로도 풀 수 있는 문제였다. 투 포인터 소스코드import sys n,s = map(int, inp..

[Kubernetes Study - 07] ConfigMap, Secret

ConfigMap, Secret 개발환경과 운영환경이 다르다면 이미지를 만들 때 들어가는 설정들이 조금씩 다른 경우가 있다. 예를 들어, 개발환경에서는 SSH 접속을 가능하게 하고, 접근 유저와 키 값을 세팅할 수 있다. 반면 운영 환경에서는 SSH 접속을 불가능하게 해야한다. Service의 이미지로 만들어서 배포한다고 하면 이 정보만 수정하기 위해 이미지를 운영환경과 개발환경에서 각각 2개를 만들어 하고, 이는 관리의 어려움과 번거로움이 생길 수 있다. 이러한 설정 정보들을 따로 관리해 주는 것이 ConfigMap과 Secret이다. 컨테이너를 만들 때 ENV값에 넣어준다. Secret은 Base64 인코딩을 해서 저장해야 하고, 이를 파드에 배포하면 알아서 디코딩 해준다. secret에 Base64..

DevOps/Kubernetes 2021.02.10