본문 바로가기

About

(221)
[k8s] 쿠버네티스의 계정 - User Account, Service Account 사용자 계정(User Account) 쿠버네티스는 '사람'을 관리하는 장치를 가지고 있지 않습니다. 정확히 말하자면 일반 사용자를 나타내는 오브젝트가 없습니다. 쿠버네티스는 일반 사용자의 관리를 외부에게 맡기고 있습니다. 여기서 외부란 Azure AD나 Google 계정과 같은 ID 관리 시스템입니다. 일반 사용자는 외부에서의 인증을 거친 후에 쿠버네티스의 리소스를 조작합니다. 여러 클러스터를 조합하여 사용하는 것이 당연시되므로 모든 시스템이나 서비스에서 개별적으로 사용자 ID를 관리하는 것이 어려움을 더 증가시키는 것이 쿠버네티스 자체에서 ID를 관리하지 않는 이유입니다. 여러 클러스터를 사용하던 사용자가 회사를 관둔다면 해당 ID를 돌아다니며 삭제하는 절차를 만들어야할 것입니다. 서비스 계정(Serv..
[Programmers] 파괴되지 않은 건물 (Python 풀이) - 2022 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 이 문제는 쉬워보이지만 효율성 테스트를 통과하기 어려운 문제입니다. 효율성 테스트 실패 코드 문제를 처음 읽고 생각나는대로 알고리즘을 푼다면 보통 다음과 같이 코드를 작성했을 것입니다. 1 2 3 4 5 6 ..
[Programmers] 양과 늑대 (Python 풀이) - 2022 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/92343 코딩테스트 연습 - 양과 늑대 [0,0,1,1,1,0,1,0,1,0,1,1] [[0,1],[1,2],[1,4],[0,8],[8,7],[9,10],[9,11],[4,3],[6,5],[4,6],[8,9]] 5 [0,1,0,1,1,0,1,0,0,1,0] [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6],[3,7],[4,8],[6,9],[9,10]] 5 programmers.co.kr 풀이 이 문제는 이진 트리에서 조건에 따라 순회 가능한 모든 경우의 수를 탐색하면서 최대 양의 개수를 구하면 정답이 됩니다. 순회는 순서에 따라 영향을 받습니다. 따라서 같은 번호를 순회하더라도 여러 경우의 수가 ..
[k8s] Volume - PV/PVC(퍼시스턴트 볼륨과 퍼시스턴트 볼륨 클레임) 쿠버네티스에서 볼륨(Volume)을 사용하는 구조는 PV라고 하는 퍼시스턴트 볼륨(PersistentVolume)과 PVC라고 하는 퍼시스턴트 볼륨 클레임(PersistentVolumeClaim) 2개로 분리되어 있습니다. PV/PVC PV는 볼륨 자체를 뜻합니다. 클러스터 안에서 자원으로 다룹니다. 파드와는 별개로 관리되며 별도의 생명 주기가 있습니다. PVC는 사용자가 PV에 하는 요청입니다. 사용하고 싶은 용량은 얼마인지, 읽기/쓰기는 어떤 모드로 설정하고 싶은지 등을 정해서 요청합니다. 쿠버네티스 볼륨을 파드에 직접 할당하는 방식이 아니라 중간에 PVC를 두어 파드와 파드가 사용할 스토리지를 분리했습니다. 이런 구조는 파드 각각의 상황에 맞게 다양한 스토리지를 사용할 수 있게 합니다. 클라우드 서..
[k8s] kube-porxy가 네트워크를 관리하는 3가지 모드(userspace, iptables, IPVS) kube-proxy는 쿠버네티스에서 서비스를 만들었을 때 Cluster IP나 NodePort로 접근할 수 있게 하는 실제 조작을 하는 컴포넌트입니다. 쿠버네티스 클러스터의 노드마다 실행되면서 클러스터 내부 IP로 연결하려는 요청을 적절한 파드로 전달합니다. kube-proxy가 네트워크를 관리하는 방법은 userspace, iptables, IPVS가 있습니다. 초기에는 userspace가 기본 관리 모드였고, 2019년 12월에는 iptables가 기본 관리 모드 입니다. 앞으로는 iptables에서 IPVS로 기본 관리 모드가 바뀔 것으로 예상됩니다. userspace 모드 클라이언트에서 서비스의 클러스터 IP를 통해 어떤 요청을 하면 iptables를 거쳐서 kube-proxy가 요청을 받습니다...
[k8s] Service - 헤드리스 서비스(Headless Service) 헤드리스 서비스(Headless Service) 쿠버네티스 서비스 생성 시 .spec.clusterIP 필드 값을 None으로 설정하면 클러스터 IP가 없는 서비스를 만들 수 있습니다. 이런 서비스를 '헤드리스 서비스(Headless Service)'라고 합니다. 헤드리스 서비스의 경우 클러스터 IP가 할당되지 않고, kube-proxy가 이렇나 서비스를 처리하지 않으며, 로드 밸런싱 또는 프록시 동작을 수행하지 않습니다. DNS가 자동으로 구성되는 방법은 서비스에 셀렉터가 정의되어 있는지 여부에 달려있습니다. 헤드리스 서비스에 셀렉터(.spec.selector) 필드를 설정하면 쿠버네티스 API로 확인할 수 있는 엔드포인트(endpoint)가 만들어집니다. 서비스와 연결된 파드를 직접 가리키는 DNA ..
[k8s] Service - ExternalName 사용하기 쿠버네티스에서 ExternalName 유형의 서비스는 일반적인 셀렉터에 대한 서비스가 아니라 DNS 이름에 대한 서비스에 매핑합니다. ExternalName 서비스 생성 다음은 ExternalName 타입의 서비스를 설정하는 예시 입니다. 1 2 3 4 5 6 7 8 # externalname.yaml apiVersion: v1 kind: Service metadata: name: externalname1 spec: type: ExternalName externalName: google.com cs 6번 라인에서 .spec.type을 ExternaName으로 지정했으며, .spec.externalName 필드를 google.com으로 설정하였습니다. 연결할려는 외부 도메인 값을 설정한 것입니다. exte..
[Python] IPython을 사용한 Unix/Linux 셸 명령어 실행 - (IPython.utils.SList에 대하여) https://ipython.org/ Jupyter and the future of IPython — IPython IPython provides a rich architecture for interactive computing with: A powerful interactive shell. A kernel for Jupyter. Support for interactive data visualization and use of GUI toolkits. Flexible, embeddable interpreters to load into your own projects. E ipython.org IPython 설치는 설치 프로그램에 따라 다음과 같이 설치합니다. brew install ipython conda..
[Programmers] 신고 결과 받기 (Python 풀이) - 2022 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from collections import defaultdict def solution(id_list, report, k): answer = [] report_to_from = defaultdict(set) # key(id)를 신고한 목록 report_from..
[Programmers] k진수에서 소수 개수 구하기(Python 풀이) - 2022 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/92335 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소 programmers.co.kr 풀이 1. k진수로의 변환 1 2 3 4 5 6 def to_k_number(n, k): # n을 k진수로 반환 ret = "" while n > 0: ret += str(n % k) n = n // k return ''.join(reversed(ret)) cs 입력 값 n이 0보다 큰 값을 가지는 동안 n을 ..