backend/kubernetes docs 10

[kubernetes docs] Replicaset, ReplicationController, Deployment

Container Replicasets 레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용 레플리카셋의 작동 방식 레플리카셋을 정의하는 필드 selector: 획득 가능한 pod를 식별 replica의 개수: 유지해야 하는 pod 개수 pod template: 신규 pod에 대한 데이터 명시 레플리카셋을 사용하는 시기 레플리카셋은 지정된 수의 파드 레플리카가 항상 실행되도록 보장한다. 그러나 디플로이먼트는 레플리카셋을 관리하고 다른 유용한 기능과 함께 파드에 대한 선언적 업데이트를 제공하는 상위 개념이다. 따라서 우리는 사용자 지정 오케스트레이션이 필요하거나 업데이트가 전혀 필요하지 않은 경우라..

[kubernetes docs] Pod lifecycle & init container

Pod Lifecycle Pod phase (파드의 단계) pod의 status 필드는 PodStatus 오브젝트로 정의됨 Pending: 파드가 쿠버네티스 시스템에 의해서 승인되었지만, 파드를 위한 하나 또는 하나 이상의 컨테이너 이미지 생성이 아직 완료되지 않았다. 여기에는 스케줄되기 이전까지의 시간 뿐만 아니라 오래 걸릴 수 있는 네트워크를 통한 이미지 다운로드 시간도 포함된다. Running :파드가 한 노드에 결합되었고, 모든 컨테이너들의 생성이 완료되었다. 적어도 하나의 컨테이너가 동작 중이거나, 시작 또는 재시작 중에 있다. Succeeded: 파드에 있는 모든 컨테이너들이 성공으로 종료되었고, 재시작되지 않을 것이다. Failed: 파드에 있는 모든 컨테이너들이 종료되었고, 적어도 하나 이..

[kubernetes docs] pod

Pod Pod는 Kubernetes에서 생성되고 관리될 수 있는 배포 가능한 최소 컴퓨팅 단위이다. 파드는 무엇인가? Pod는 고래 떼 (pod of whales)나 콩꼬투리 (pea pod)와 마찬가지로 하나 이상의 컨테이너 그룹을 말한다. 이 그룹은 storage/network를 공유한다. 도커 구조 관점에서 보면 pod는 공유 네임스페이스와 공유 볼륨을 가진 도커 컨테이너 그룹 정도가 될 것이다. 파드의 의의 파드는 그 구성 요소 집합보다 높은 수준의 추상화를 제공함으로써 애플리케이션 배포 및 관리를 단순화 파드는 그 구성 요소 간에 데이터 공유 및 통신이 가능 파드의 내구성 (또는 결핍) 파드는 내구성이 강한 엔터티로 취급하지는 않는다. 파드는 스케줄링 실패, 노드 장애 또는 그 밖에 리소스가 부..

kubernetes docs - pod overview

Pod Overview 파드 는 쿠버네티스 애플리케이션의 기본 실행 단위이다. 쿠버네티스 객체 모델 중 만들고 배포할 수 있는 가장 작고 간단한 단위 주로 두 가지 방법으로 사용 단일 컨테이너만 동작하는 파드 함께 동작하는 작업이 필요한 다중 컨테이너가 동작하는 파드 어떻게 파드가 다중 컨테이너를 관리하는가? 파드 내 컨테이너는 동일한 머신의 클러스터에 배치되고 스케쥴 됨 리소스와 의존성 공유 파드는 같은 파드에 속한 컨테이너에게 두 가지 공유 리소스를 제공 네트워킹 각 파드는 고유한 IP 주소를 할당 한 파드 내의 모든 컨테이너는 network namespace와 IP address, network port를 공유 다른 컨테이너와는 localhost를 사용하여 통신 저장소 Volumnes을 명시 가능 ..

kubernetes docs - Container

Container Image 사용자 docker image를 생성하고 레지스트리에 푸시하여 대비한다. image 속성은 docker 커맨드에서 지원하는 문법과 같음. Image update 이미지 업데이트 방법은 정책에 따라 달라짐. 기본 Pull 정책은 IfNotPresent이다. 이는 이미 존재하는 이미지에 대해서는 pull 하지 않음. pull을 강제하고 싶으면 다음중 하나를 하면 된다. container의 imagePullPolicy를 Always로 설정 imagePullPolicy를 생략하고 :latest를 사용 imagePullPoicy와 사용할 이미지 태그 새략 AlwaysPullImages adminssion controller 활성화 :lastest 사용은 피하는게 좋다고 한다. 구성 모..

kubernetes docs: 클러스터 아키텍쳐 - 컨트롤러 (controller)

Controller Kubernetes에서 controler는 클러스터의 상태를 관찰한 후 필요한 경우에 생성 혹은 변경을 요청하는 컨트롤 루프이다. Controller pattern controller는 한개 이상의 리소스 유형을 추적한다. 해당 오브젝트들은 의도하는 상태를 표현하는 필드를 가지고 있고, 이들의 컨트롤러는 그 상태를 의도한 상태에 가깝게 만드는 역할을 한다. 다음와 같은 방법으로 제어 가능 API 서버를 통한 제어 Job controller는 Kubernetes 내장 컨트롤러의 예시. job은 하나 또는 여러 파드를 실행하고, 작업을 수행한 다음 중지하는 Kubernetes 리소스이다. job controller가 새로운 작업을 확인 -> kubelet이 적합한 수의 pod를 실행하게 ..

Kubernetes docs: Cluster Architecture - Node

Cluster Architecture Node 하나의 노드는 Kubernetes에서 하나의 워커 머신이다. (이전에는 minion으로 불림) 노드는 클러스터에 따라 VM 또는 물리 머신이 될 수 있음 Node status 노드의 상태는 주소, 컨디션, 용량과 할당가능, 정보 등을 포함한다. kubectl escribe node 주소 제공 사업자 또는 구성에 따라 다양한 용법이 쓰임 HostName: 노드 커널에 알려진 호스트명. --hostname-override로 override 가능 ExternalIP: 클러스터 외부로 라우트 가능 InternalIP: 클러스터 내부에서만 라우트 가능 컨디션 모든 Running중인 노드의 상태를 기술. Node condition에는 다음 종류 등이 있음 Ready: ..

Kubernetes object - 쿠버네티스 오브젝트

Kubernetes object 쿠버네티스 오브젝트 이해하기 쿠버네티스 오브젝트 는 쿠버네티스 시스템에서 영속성을 가지는 개체 쿠버네티스 오브젝트는 하나의 “의도를 담은 레코드"이다. 오브젝트를 생성하게 되면, 쿠버네티스 시스템은 그 오브젝트 생성을 보장하기 위해 지속적으로 작동 생성이든, 수정이든, 또는 삭제든 쿠버네티스 오브젝트를 동작시키려면, 쿠버네티스 API를 이용해야 한다. 예를 들어, kubectl 커맨드-라인 인터페이스를 이용할 때, CLI는 여러분 대신 필요한 쿠버네티스 API를 호출 오브젝트 명세(spec)와 상태(status) spec을 가진 오브젝트는 오브젝트를 생성할 때 리소스에 원하는 특징(의도한 상태)에 대한 설명을 제공해서 설정한다. status는 오브젝트의 현재 상태 를 기술..

쿠버네티스 기본 개념 (kubernetes conecpt)

개념 쿠버네티스란 무엇인가? 쿠버네티스는 다음을 제공한다. 서비스 디스커버리와 로드 밸런싱: 쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있다. 컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다. 스토리지 오케스트레이션: 쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재 할 수 있다. 자동화된 롤아웃과 롤백: 쿠버네티스를 사용하여 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든..

k8s 문서 - 튜토리얼; 쿠버네티스 기초 학습

https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/ Tutorial: 쿠버네티스 기초 학습 Assumming that minikube is successfully installed Deploying app Create deployment using kubernetes pod는 isolated, private network 되어있기 때문에 proxy를 통해 debug, interact 가능하다. $ minikube start $ kube kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 # starting proxy echo -..