쿠버네티스를 활용한 네이티브 데브옵스 - 8장 컨테이너 실행하기
·
Infra/Kubernetes
8.1 컨테이너와 파드- 파드는 동일한 환경에서 실행되는 컨테이너와 볼륨으로 구성된 집합체이다.- 파드에 있는 모든 컨테이너는 동일한 머신에 있다.- 파드는 서로 통신하며 데이터를 공유하는 컨테이너의 그룹이다.- 파드 내의 컨테이너는 디스크 볼륨을 공유할 수 있다. - 한 예로, 블로그 앱과 nginx 각각의 컨테이너는 같은 데이터를 공유할 수 있다.- 컨테이너는 가벼운 가상머신이라 부르기도 하며, 하나의 작업만 수행하는 것을 권장한다.- 한 예로, 데이터를 저장하는 캐시앱과 서비스앱 두개를 각각의 컨테이너로 구성한다. 8.2 컨테이너 매니페스트 containers: 각 컨테이너의 스펙에 name과 image 필드를 정의한다.image: 이미지에 태그를 지정하지 않으면 lastest로 지정된다. (ex...
쿠버네티스를 활용한 네이티브 데브옵스 - 7장 유용한 쿠버네티스 도구
·
Infra/Kubernetes
7.1 kubectl 마스터하기리소스 단축형 사용kubectl get po      (pod)kubectl get deploy  (deployment)kubectl get svc     (service)kubectl get ns      (namespace)kubectl get no      (node)kubectl get cm     (configmap) 도움말 보기 (kubectl -h)kubectl -h상세 커맨드 도움말kubectl --help"kubectl get -h 더 자세한 출력 결과 확인하기kubectl get podsNAME READY STATUS RESTARTS AGEdemo-6c7dbfffb4-bkkpp 1/1 Ru..
쿠버네티스를 활용한 네이티브 데브옵스 - 6장 클러스터 운영하기
·
Infra/Kubernetes
6.1 클러스터 사이징과 스케일링- 트래픽과 비용은 반비례한다. 6.1.1 클러스터 용량 계획 세우기마스터 노드- 안정적인 k8s cluster를 위한 최소한의 마스터노드 개수는 3개이다.- 단일 노드는 HA가 안되고, 2개의 노드는 과반수가 안되어 리더 선정에 문제가 발생한다. 워커 노드 - 노드 장애를 고려하여 최소 2개의 워커노드로 구성한다.- 즉, 모든 파드의 Replica를 최소 두개씩 실행하는 것을 권장한다.- k8s 스케줄러가 노드 간에 워크로드를 항상 균등할당하지 않기에, 노드는 많을 수록 좋다. 6.1.2 노드와 인스턴스- 노드의 여유 용량이 많아 비용 낭비가 발생하지 않게한다. - AWS로 노드 구성 시, 최소 인스턴스 스펙은 vCPU 1개 이상, 메모리 4GB 이상이다. 6.1.3 클..
쿠버네티스를 활용한 네이티브 데브옵스 - 5장 리소스 관리하기
·
Infra/Kubernetes
5.1 리소스 이해하기 - 쿠버네티스는 파드는 크게 CPU, Memory 두 종류의 리소스를 관리할 수 있다. 5.1.1 리소스 단위- CPU 리소스를 할당할 때 사용하는 단위 중 하나가 "millicore"이다.- 1m 는 CPU 리소스의 1/1000 단위로 표현한 것이다. ( 10m = 1/100 )spec: containers: - name: demo image: cloudnatived/demo:hello ports: - containserPort: 8888 resources: requests: memory: "10Mi" cpu: "100m" 5.1.3 리소스 상한- 사용할 수 있는 충분한 용량의 노드가 없으면, 파드는 대기 상태로 기다린다..
쿠버네티스를 활용한 네이티브 데브옵스 - 4장 오브젝트 다루기
·
Infra/Kubernetes
4.1 디플로이먼트관리와 스케줄링- 쿠버네티스는 각 프로그램을 관리하기 위해 디플로이먼트 오브젝트를 생성한다.- 컨테이너 이미지명, 레플리카 수 등 컨테이너를 실행하기 위한 정보가 기록된다.- 쿠버네티스 컨트롤러는 디플로이먼트 리소스를 관리하며, 디플로이먼트 리소스가 특별한 이유 없이 레플리카 수를 채우지 못하고 실행 중이면, 컨트롤러는 새로운 레플리카를 생성한다. 컨테이너 재시작하기- 컨테이너가 비정상적이나, 정상적으로 kubectl로 컨테이너를 종료하는 경우에도디플로이먼트는 컨테이너를 재시작을 시킨다.- 쿠버네티스는 오래 실행되고 신뢰할 수 있도록 설계되어있기 때문에, 재시작을 기본 작동으로 수행한다.- 디플로이먼트의 역할을 관련된 컨테이너를 감시하고 지정된 수 만큼 항상 실행 중인지를 확인한다. ..
쿠버네티스를 활용한 네이티브 데브옵스 - 3장 쿠버네티스 구축하기
·
Infra/Kubernetes
3.1 클러스터 아키텍처쿠버네티스는 여러 대의 서버가 하나의 클러스터로 연결되어 있다. 3.1.1 컨트롤 플레인 컨트롤 플레인클러스터의 두뇌 역할을 하며 컨테이너 스케줄링, 서비스관려, API관리 등의 작업을 수행한다. kube-apiserver- 컨트롤 플레인의 프론트엔드 서버로 API 요청을 처리한다. etcd- 어떤 노드가 존재하고 클러스터에 어떤 리소스가 존재하는지와 같은 k8s 정보를 저장하는 DB이다. kube-scheduler- 새로 생성된 파드를 실행할 노드를 결정한다. kube-controller-manager- 디플로이먼트와 같은 리소스 컨트롤러를 관리한다. cloud-controller-manager- 클라우드 기반 클러스터는 클라우드업체와 연동하여 로드벨런서나 디스크볼륨 같은 자원을..
Kubernetes - minikube 실행
·
Infra/Kubernetes
MinikubeMinikube는 도커 데스크톱과 유사하게 컴퓨터에서 실행되는단일 노드 쿠버네티스 클러스터를 제공한다.로컬에서 k8s를 테스트 해 볼 수 있는 환경을 제공한다. 도커 데스크톱 버전 설치brew install --cask docker k8s 설치brew install minikube 설치 확인which minikube>>>/opt/homebrew/bin/minikube  실행minikube start아래와 같이 도커데스크톱에서 '이미지'와 '컨테이너'에 minikube가 실행되는지 확인한다. 설정파일다른 k8s 클러스터와 같이 사용하고 있으면 config 파일을 분리해서minikube만 사용할 수 있도록 한다. cat ./kube/config_minikubeapiVersion: v1clust..
Kubernetes - Service와 이를 통한 Ingress
·
Infra/Kubernetes
yaml파일을 통하거나 deploy를 통해 파드를 생성하거나 pod는 service를 통해 외부에 접근이 가능하다.쿠버네티스에서 서비스는 파드의 논리적 집합과 그것들에 접근할 수 있는 정책을 정의하는 추상적 개념이다.Service.yaml에서 어떤 방식으로 외부에 노출시킬지에 대한 type에는 여러 종류가 있다.ClusterIP (default) - 클러스터 내부에서만 접근 가능한 IPNodePort - Port번호를 통해 외부에서 접근 (NAT 컨샙)Load Balancer - 외부의 Load Balancer를 사용하는 방법ExternalName - kube-dns 컴포넌트로 DNS를 이용하는 방법 서비스는 추상적이지만 service와 pods는 내부에서 각기 다른 IP를 갖는다.따라서 port를 가지..
wave35
'Kubernetes' 태그의 글 목록