본문 바로가기

DevOps/쿠버네티스(Kubernetes)

(37)
[CKA] 쿠버네티스 ConfigMap 구성하기 애플리케이션에서 configmap 구성하기 Kubernetes에서 configmap으로 작업하는 방법에 대해 알아보자. Pod 정의 파일이 많으면 쿼리의 파일에 저장된 환경 데이터를 관리하는 것이 어려워진다. 이 정보를 Pod 정의 파일에서 가져와 구성 맵을 사용 하여 중앙에서 관리할 수 있다. configmap은 Kubernetes에서 키 값 쌍의 형태로 구성 데이터를 전달하는 데 사용된다. Pod가 생성되면 configmap을 Pod에 적용하여 키 값 쌍을 Pod의 컨테이너 내부에서 호스팅되는 애플리케이션의 환경 변수로 사용할 수 있도록 한다. configmap 구성에는 두 단계가 포함된다. 먼저 configmaps을 만들고 두 번째로 Pod에 적용한다. 다른 Kubernetes 개체와 마찬가지로 c..
[CKA] Kubernetes kubectl apply 명령어 Kubernetes kubectl apply 명령어 # nginx.yaml apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp type: front-end-service spec: containers: - name: nginx-container image: nginx:1.18 # Live object configuration (Last applied Configuration) apiVersion: v1 kind: Pod metadata: name: myapp-pod annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion": "v1","kind": "Po..
[CKA] Kubernetes Imperative(명령형) vs Declarative(선언형) Kubernetes Imperative(명령형) vs Declarative(선언형) Kubernetes의 명령적, 선언적 접근법에 대해 이야기해보자 지금까지 우리는 쿠버네티스에서 객체를 만들고 관리하는 다양한 방법을 알아보았다. 우리는 객체 구성 파일뿐만 아니라 명령을 실행하여 직접 객체를 만들었다. 이제 코드형 인프라(Infrastructure as Code, IaC)로서 인프라를 관리하는 데 있어 다양한 접근 방식이 있고, 명령적 접근 방식과 선언적 접근 방식으로 분류된다. 비유를 들어, 당신이 친구의 집을 방문하고 싶다고 하자. 과거에 당신은 택시를 타서 목적지까지 가는 방법을 운전자에게 단계별로 말해주었다. 예를 들어 B 거리로 우회전하고, C 거리로 가기 위해 좌회전하고, 그리고 나서 다른 도로..
[CKA] Kubernetes Namespace Kubernetes Namespace 마크라는 이름의 두 소년이 있다. 그들을 구별하기 위해 우리는 그들을 성으로 부른다. 스미스와 윌리엄은 서로 다른 집에서 왔다. 물론 스미스와 윌리엄 집에는 다른 가족들이 있다. 집안에 있는 가족들은 단순히 그들의 이름으로 서로를 부른다. 예를 들어, 아버지는 마크 스미스를 단순히 마크라고 부른다. 그러나 아버지가 다른 집에 있는 마크를 부를때는 마크 윌리엄이라고 부를것이다. 이 집들 각각은 그들만의 규칙이 있다. 이 집들은 kubernetes의 네임스페이스에 해당한다. 지금까지 클러스터에 Pod Deployment Service와 같은 개체를 만들었다. 우리가 해왔던 것은 모두 네임스페이스 안에서 해왔다. 이 네임스페이스가 기본(default) 네임스페이스로 알려져..
[CKA] Kubernetes Services Kubernetes Services Kubernetes Services는 애플리케이션 내부와 외부의 다양한 구성 요소 간의 통신을 가능하게 한다. Kubernetes 서비스는 애플리케이션을 다른 애플리케이션 또는 사용자와 연결하는 데 도움이 된다. 예를 들어, 우리 애플리케이션에는 사용자에게 프론트 엔드 로드를 제공하기 위한 그룹 및 백엔드 프로세스를 실행하기 위한 다른 그룹, 외부 데이터 소스에 연결하는 세 번째 그룹과 같은 다양한 섹션을 실행하는 Pod 그룹이 있다. 이러한 Pod 서비스 그룹 간의 연결을 가능하게 한다. 최종 사용자가 사용할 수 있는 애플리케이션은 백엔드와 프런트 엔드 간의 통신을 지원한다. 외부 데이터 소스에 대한 연결을 설정하는 데 도움이 된다. 따라서 Service는 응용프로그..
[CKA] Kubernetes Deployment Kubernetes Deployment POD, 복제본 세트 및 기타 쿠버네티스 개념은 잊어버리고 프로덕션 환경에서 애플리케이션을 구현하는 방법에 대해 알아보자. 예를 들어 프로덕션 환경에 배포해야 하는 웹 서버가 있다고 가정해 보자. 실행되는 웹 서버의 인스턴스는 하나만 필요하지 않을것이다. 또한, 도커 레지스트리에서 새로운 버전의 애플리케이션 빌드를 사용할 수 있게 될 때마다 Docker 인스턴스를 원활하게 업그레이드 하고싶다. 그러나 인스턴스를 업그레이드할 때 모든 인스턴스를 한 번에 업그레이드하지는 않을 것이다. 이로 인해 애플리케이션에 액세스하는 사용자에게 영향을 줄 수 있으므로 차례차례로 애플리케이션을 업그레이드한다. 이러한 업그레이드를 롤링 업데이트(Rolling Update)라고 한다. 수..
[CKA] Kubernetes Replication Controller/ReplicaSets # Kubernetes ReplicaSets Controller 는 쿠버네티스의 두뇌이다. 그것들은 쿠버네티스 객체를 모니터링하고 그에 따라 반응하는 과정이다. 복제 컨트롤러에 대해 말해보자 그렇다면 복제본이란 무엇이며 복제 컨트롤러(replication controller)가 필요한 이유는 무엇일까? 1. HA-High Availability 애플리케이션을 실행하는 단일 Pod가 있었던 첫 번째 시나리오로 돌아가 보자. 어떤 이유로 인해 응용프로그램이 고장나면 어떻게 될까? 응용프로그램이 고장나게 되면 사용자는 더 이상 애플리케이션에 접근 할 수 없다. 사용자가 응용프로그램에 대한 접근 권한을 잃지 않도록 하기 위해 두 개 이상의 인스턴스 또는 Pod을 동시에 실행하려고 한다. 이렇게 하면, 한 개가 ..
[CKA] Kubernetes Pod 와 YAML 파일 Kubernetes Pod 와 YAML 파일 pod-definition.yaml apiVersion: kind: metadata: spec: YAML 기반 구성 파일을 사용하여 Pod 만드는 것에 대해 이야기해보자. 우리는 쿠버네티스용으로 YAML 파일을 만드는 방법을 배울것이다. 쿠버네티스는 YAML 파일을 을 Pods, replicas, deployments, services 등과 같은 객체를 만들기 위한 입력으로 사용한다. 이 모든 것이 유사한 구조를 따른다. Kubernetes 정의 파일에는 항상 최상위 필드에 API 버전, 종류, 메타데이터 및 사양이 포함되어 있다. 최상위 수준 또는 루트 수준의 속성이다. 또한 필수 필드이므로 구성 파일에 해당 필드가 있어야 한다. 하나씩 살펴보자. Kind ..
[CKA] Kubernetes Pod Kubernetes Pod Pod을 이해하기 전에 다음 항목이 이미 설정되었다고 가정해 보자.이 시점에서, 우리는 애플리케이션이 이미 개발되어 Docker 이미지에 내장되어 있으며 쿠버네티스가 다운할 수 있도록 Dockerhub 와 같은 도커 저장소에서 사용할 수 있다고 가정하자. 또한 Kubernetes 클러스터가 이미 설정되었고 작동 중이라고 가정한다. 단일 노드 설정 또는 다중 노드 설정이어도 상관없다. 모든 서비스가 실행 중이어야 한다. 우리의 궁극적인 목표는 클러스터에서 Worker Node로 구성된 기계 세트에 우리의 애플리케이션을 컨테이너 형태로 배포하는 것이다. 그러나 Kubernetes는 컨테이너를 Worker Node에 직접 배포하지 않는다. 컨테이너는 Pod라고 알려진 쿠버네티스 객체..
[CKA] Kubernetes kubelet / Kube-Proxy Kubernetes kubelet kubelet 배의 선장과 같다. kubelet은 배 위에서 모든 활동을 지휘한다. kubelet은 클러스터의 일부가 되기 위해 필요한 모든 서류 작업을 책임지는 사람들이다. kubelet은 마스터 선박의 유일한 연락 지점이다. 마스터에서 스케줄러의 지시에 따라 선박에 컨테이너를 적재하거나 하역한다.kubelet은 또한 정기적으로 배와 컨테이너의 상태에 대한 보고서를 보낸다. 1. Register Node 2. Create PODs 3. Monitor Node & PODs kubernetes worker 노드의 kubelet은 kubernetes 클러스터에 노드를 등록한다. 노드에서 컨테이너 또는 Pod를 적재하라는 지시를 받으면 컨테이너 런타임 엔진(ex)Docker)..