전체 글

이것 저것 공부해보기 좋아하는 초보 개발자로, 제가 공부하는 내용들을 제가 이해하기 쉽게 작성합니다. 질문이나 지적은 언제나 환영합니다.
· Kubernetes
Authorization 앞선 내용들이 Authentication(인증)에 대한 내용이었다면, 여기서부터는 Authorization(인가, 권한 부여)에 관한 내용이다. 여러 팀 또는 조직간에 클러스터를 공유할 때 네임스페이스를 통해 논리적으로 분할함으로써 사용자의 액세스를 자신이 속한 네임스페이스에만 가능하도록 제한할 수 있다. Authorization Mechanisms Kube API 서버에 Authorization mode 옵션을 따로 명시하지 않으면 AlwaysAllow가 기본값이다. `/etc/kubernetes/manifests/kube-apiserver.yaml` 파일의 `spec.containers[*].command[*].authorization-mode` 필드값으로 다수의 메커니즘을 ..
· Kubernetes
KubeConfig kubernetes api를 통해 요청을 보낼 때 인증 관련 정보를 함께 제출해야한다. 아래와 같이 단계적으로 커멘드의 길이를 줄일 수 있다. server명이 playground-url이라는 전제하에 아래와 같이 요청 가능 curl \\ -- cert=admin.crt -- key=admin.key -- cacert=ca.cert kubectl을 통한 요청 kubectl get pods \\ -- server playground-url:6443 -- client-cert admin.crt -- client-key admin.crt -- certificate-authority ca.cert 인증 관련 정보를 모두 config 라는 파일에 저장한 후 이를 kubectl 명령시 마다 kub..
· Kubernetes
개요 Secure host kube-apiserver는 Kubernetes의 중심에 있으며, kubectl을 통해 접근할 수도 있고 직접 apiserver에 접근할 수도 있다. (apiserver에 대한 액세스를 제어하는 것이 1차 방어선이라고 할 수 있겠다.) Who can access? 이는 인증 메커니즘에 따라 달라진다. 유형은 아래와 같다. file - Username and passwords file - Username and tokens Certificates (인증서) 외부 인증 공급자 (ex. LDAP) Service account (컴퓨터가 생성) What can they do? 인증 메커니즘으로 정의된다. RBAC (역할 기반 액세스 컨트롤) ABAC Node Authorization ..
· Kubernetes
OS Upgrade 해당 내용은 OS Upgrade 뿐만 아니라 Kubelet Version Upgrade 등의 상황에서도 필요한 내용이다. 노드가 비활성화되었다가 활성화되면 즉시 Kubelet이 실행되고 노드에 배치된 파드는 다시 실행된다. 하지만 노드가 5분(`pod-eviction-timeout default value`) 이상 비활성화되면 파드는 다른 노드에 재배치되게 된다. Cf. set Pod eviction timeout(노드에서 파드를 삭제하기 위한 대기 시간) kube-controller-manager --pod-eviction-timeout=5m0s Drain 노드에 존재하는 모든 파드를 제거하여 노드를 비운다. 해당 노드는 `SchedulingDisable` 상태가 되어 새로운 파드의..
· Kubernetes
Rolling Updates and Rollbacks Rollout Command rollout 상태 확인 kubectl rollout status deployment/[deployment-name] rollout 이력 조회 kubectl rollout history deployment/[deployment-name] Deployment Strategy Recreate Strategy 이미 존재하는 인스턴스가 5개라면 5개의 구버전 인스턴스를 모두 중단 및 제거하고 새버전 인스턴스를 5개 생성하는 방식으로, 구버전 인스턴스가 모두 제거되고 새버전 인스턴스가 모두 생성되는 사이에 서비스 중단이 발생한다. Rolling Strategy(default) 구버전 인스턴스를 하나씩 중단하면서 새버전 인스턴스를 하..
CPU, 메모리, 네트워크 디스크 소모량, 포드 개수와 각 포드 성능 지표 등의 메트릭을 수집하여 저장 및 모니터링하는 통합 솔루션을 자체 지원하지는 않으나 오픈 소스 솔루션은 많음(Metric Server, Data Dog, Prometheus 등) Metrix Server 인메모리 모니터링 솔루션(historical performance data를 확인할 수는 없다.) 쿠버네테스 클러스터당 메트릭 서버가 1개로, 서버는 각 쿠버네테스 노드와 포드에서 메트릭 회수한다. 파드 지표 수집 Kubelet 하위에 존재하는 CAdvisor는 파드에서 성능 메트릭을 회수하고 kubelet API를 통해 메트릭을 공개해 메트릭 서버에서 메트릭이 사용 가능하게 한다. Getting Start minikube를 사용하..
· Kubernetes
Scheduler 쿠버네티스는 확장이 용이해서 별도의 스케쥴러를 만들어 배포함으로써 이를 기본 스케쥴러로 사용할 수도 있고, 추가적인 스케쥴러로 사용할 수도 있다. 스케쥴러들은 중복되는 이름을 가질 수 없다. (기본 스케쥴러의 이름은 default-scheduler) apiVersion: kubescheduler.config.k8s.io/v1 kind: KubeSchedulerConfiguration profiles: - schedulerName: [scheduler-name] Multiple Scheduler(Deploy Additional Scheduler) 각 스케줄러는 별도의 구성(config) 파일을 사용하고, 고유한 스케쥴러 이름을 가짐 kube-scheduler 바이너리 파일을 다운받아 여러..
· Kubernetes
DaemonSet 파드의 복사본이 모든 노드에 하나씩 호스트되는 것을 보장한다. 사용사례: 모니터링 에이전트, 로깅 콜렉터 manifest 파일은 ReplicaSet과 매우 흡사하다.( Kind만 다름) spec.metadata.labels(파드의 라벨)과 spec.selector.matchLabels(데몬셋의 라벨 셀렉터)가 일치해야한다. apiVersion: apps/v1 kind: DaemonSet metadata: name: custom-daemon-set labels: spec: template: metadata: labels: app: daemon-set-app containers: - name: daemon-set-container image: nginx selector: matchLabel..
· Kubernetes
Resource Requirements & Limits 각 노드마다 자원 할당량이 있고, 각 파드는 필요한 자원 용량이 다르다. 스케쥴러는 파드를 배치할 때 파드가 필요로 하는 자원을 고려해 최적의 노드에 배치한다. 만약 모든 노드에서 새로운 파드가 필요로 하는 자원량을 충족하지 못하면 스케쥴러는 파드 배치를 멈추게 된다. 이 때 파드는 Pending 상태가 되고, 에러 메세지가 생성된다. (Insufficient cpu 등) Resources Request (파드 생성시 필요한 자원) apiVersion: v1 kind: Pod metadata: name: [pod-name] spec: containers: - name: [container-name] image: [image-name] ports: -..
· Kubernetes
Node Selectors 파드에 nodeSelector를 지정하기 위해서는 노드에 라벨링하는 작업이 우선되어야 한다. Cf. 노드에 라벨링하기 kubectl label node [node-name] [key]=[value] apiVersion: v1 kind: Pod metadata: name: [pod-name] spec: containers - name: [container-name] image: [container-image] nodeSelector: [key]: [value] 이후 파드 생성(apply -f) 노드 셀렉터는 복잡한 요구사항을 충족시키기 어려움(NOT, OR과 같은 조건 충족 불가) → Node Affinity 등장 Node Affinity 주목적은 특정 파드가 특정 노드에 호스트..
devYH
모르는 것이 많습니다