본문 바로가기

공부기록

(43)
[Causal Inference] 1. Introduction To Causality 인과추론이란 | 심슨의 역설 인과추론이란 무엇인가 Correlation Does not Imply Casationhttps://tylervigen.com/spurious-correlationsSpurious correlationsSpurious correlationstylervigen.com위의 사이트는 가짜 인과관계(spurious-correlations)를 모아놓은 사이트입니다. Nicolas Cage의 영화 수와 익사한 사람의 수의 상관관계 등.. 다양하게 말이 안되는 예시들이 존재합니다. 이렇게 명확하게 가짜 상관관계임을 알기 쉬운 예시도 있지만, 현실에서의 문제는 직관적으로 판단하기 어려운 경우가 많습니다. 비슷한 유저에게 비슷한 상품을 추천해주는 협업필터링 알고리즘의 효과를 측정해 본다고 했을 때, 다음과 같은 질문을 ..
[opensearch | elasticsearch] maximum shards open 문제 문제 RequestError(400, 'validation_exception', 'Validation Failed: 1: this action would add [2] total shards, but this cluster currently has [999]/[1000] maximum shards open;') 가끔 elasticsearch를 사용할 때 종종 발생했던 문제인데 opensearch를 사용할 때도 또 만나서 정리.. 원인 이 에러는 Elasticsearch /Opensearch 클러스터가 설정된 최대 샤드 개수를 초과하려고 할 때 발생한다. 각 인덱스는 여러개의 샤드로 분할되고, 클러스터 전체에서 허용되는 최대 샤드 수가 설정된다. 현재 1000개의 샤드가 설정되어있고, 999개의 샤드가 열..
[k8s] python sdk를 이용해 Pod 내에서 Kubernetes API 사용하기 방법1. config file 사용 config.load_incluster_config() v1 = client.CoreV1Api() pod내부가 아닌 경우엔 load_kube_config() 를 사용하지만 pod내부에서 config file을 로드할 때는 load_incluster_config() 를 사용한다. 방법 1을 사용해도 권한이 없어서 403 errors 가 발생할 수 있다. 이런 경우에 클러스터롤바인딩이 필요하다. 관련 내용은 kubernetes-client github에서 확인할 수 있다. 더보기 Shows how to load a Kubernetes config from within a cluster. This scriptmust be run within a pod. You can sta..
[kubeflow] kfp.dsl을 사용한 pod scheduling node에 기존에 있는 pod 옮기기 kubectl drain worker-1에 실행되고 있던 기존 잡들을 다른 노드로 옮기기위해 drain 명령을 실행합니다. drain 이 실행되면 cordon의 과정이 포함되므로 어떤 파드도 스케줄링되지 않습니다. 다른 node에 pod가 이동하는 것으로 보이지만 실제로는 기존 노드에서 실행되고 있던 파드들을 삭제한 후 다른 노드에서 재생성하는 과정이 진행됩니다. 이때, replica set에 있는 pod들은 다른 노드에서 살아나지만, 그렇지 않은 pod들은 복원되지 못한다는 것에 주의해야합니다. -ignore-daemonsets=true option을 설정하면 데몬세트로 실행한 파드들을 무시하고 드레인 설정을 적용할 수 있습니다. kubectl uncordon 원하..
[k8s] Backup and Restore Methods Backup and Restore Methods Backup Candidates Resource Configuration ETCD Cluster Persistent Volumes Backup - Resource Configuration Resource Configuration의 경우 declarative 한 방식을 사용하는게 configuration을 저장하기 위해 좋다. declarative한 방식을 사용했을 때, 가장 좋은 방식은 yaml을 git에 저장해 버전 관리를 하는 것이다. declarative 한 방식과 imperative한 방식을 모두 사용할 수 있으므로 resource configuration backup을 위한 최선의 방법은 query the API server이다. kubectl g..
[k8s] Cluster Upgrade Process Cluster Upgrade Process cluster upgrade kubernetes components들이 서로 다른 release version을 가질 수 있는데 나머지 components들은 kube-apiserver release verison 보다 클 수 없다. controller manager, scheduler는 kube-apiserver보다 1 version만 낮을 수 있다. kubelet이랑 kube-proxys는 2 version보다 낮을 수 있다. kubetl은 kube-apiserver보다 한 버전이 높거나 낮을 수 있다. 하위 버전을 지원한다는 특성 때문에 live upgrases가 가능하다. k8s는 기본적으로 최신버전 - 3 까지만 지원을 해준다. upgrades는 one..
[k8s] drain and cordon OS Upgrades : cluster의 노드를 유지보수(ex. Security path)를 위해 안정적으로 내리려면 어떻게 해야할까? node를 내리려고 할 때 5분안에 node를 살리면 pod가 실행되지만 5분이 지나면 pod는 terminated 된다. 이것은 kube-controller-manager에서 --pod-eviction-timeout=5m0s이 defalut 값이 5분으로 설정되어 있기 때문이다. pod eviction time이후 노드가 다시 생성되었을 때 replica set에 있는 pod들은 다른 노드에서 살아나지만, 그렇지 않은 pod들은 복원되지 못한다. 만약 노드가 다운되는 시간이 5분 이내일 것으로 예상되면 quick upgrade나 reboot가 가능하지만, 그렇지 않을 ..
[k8s] Multi Container PODs Multi Container PODs WEB Server와 LOG Agent를 함께 동작시켜야한다든지 여러개의 컨테이너를 한번에 실행시켜야하는 경우 Multi-Container Pods를 사용할 수 있다. Multi-Container PODs Design Pattern 파드로 여러 개의 컨테이너를 묶어서 구성하고 실행할 때 몇가지 패턴을 적용할 수 있다. Sidecar pattern 원래 사용하려던 기본 컨테이너의 기능을 확장하거나 강화하는 용도로 컨테이너를 추가하는 것 기본 컨테이너는 원래 목적의 기능에만 충실하도록 구성하고, 나머지 공통 부가 기능들은 사이드카 컨테이너를 추가해서 사용 ex. 웹서버 컨테이너 - 로그 수집 컨테이너(사이드카 역할) 로 설정하면 웹 서버 컨테이너를 다른 역할을 하는 컨테..

반응형