본문 바로가기

Cloud

(29)
(Kubernetes) - application에 data 주입 3 🍳머리말 container를 위한 환경 변수를 정의하는 설명글입니다. k8s cluster가 구축되어 있어야하며 node는 3개 이상이어야 합니다. 📕container를 위한 환경 변수 정의 📔 설명 pod를 생성할 때, pod안에서 동작하는 container를 위한 환경 변수를 설정할 수 있습니다. 환경 변수를 설정하려면 구성 file에 env나 envFrom field를 포함시켜야 합니다. 📔 예제 이 예제에서, 한 개의 container를 실행하는 pod를 생성합니다. pod를 위한 구성 file은 DEMO_GREETING 이라는 이름과 "Hello from the environment"이라는 값을 가지는 환경 변수를 정의합니다. envars.yaml apiVersion: v1 kind: Pod m..
(Kubernetes) - application에 data 주입 2 🍳머리말 종속 환경 변수 정의하는 설명글입니다. k8s cluster, node 3개 이상 필요합니다. 📕Container를 위한 종속 환경 변수 정의 📔 설명 pod 생성 시, pod 안에서 동작하는 container를 위한 종속 환경 변수를 설정할 수 있습니다. 종속 환경 변수를 설정하려면, 구성 file에 env의 value로 ${변수명}을 사용합니다. 📔 예제 한 개의 container를 실행하는 pod 생성. pod를 위한 구성 file은 일반적인 방식으로 정의된 종속 환경 변수를 정의합니다. 다음은 pod를 위한 구성 manifest 예시입니다. dependent-envars.yaml apiVersion: v1 kind: Pod metadata: name: dependent-envars-dem..
(Kubernetes) - application에 data 주입 1 🍳머리말 container 위한 command, 인자 정의하는 방법. k8s cluster가 필요합니다. 또한 node가 control plane포함 3개인 cluster에서 실행하는 것이 좋습니다. 📕Pod 생성시 command, 인자 정의 📔 설명 pod를 생성할 때, pod 안에서 동작하는 container를 위한 command와 인자를 정의할 수 있습니다. command를 정의하기 위해선 pod 안에서 실행되는 container에 command filed를 포함시킵니다. command에 대한 인자를 정의하기 위해 구성 file에 args field를 포함시킵니다. 정의한 command와 인자들은 pod가 생성되고 난 이후에 변경될 수 없습니다. 구성 file 안에서 정의하는 command와 인자들..
(Kubernetes) - Custom Resource 🍳머리말 k8s docs 복붙글입니다. CR(Custom Resource)에 대해 설명합니다. 📕 Custom resource 📔 정의 k8s API의 extension입니다. Resource는 k8s API에서 특정 종류의 API object 모음을 저장하는 endpoint입니다. 예로는 built in pod resource에는 pod object모음이 포함되어 있습니다. 확장이므로 기본 k8s 설치시 반드시 사용할 수 있는 것은 아닙니다. 하지만 많은 기능에서 custom resource는 사용해 구축되어 k8s를 더욱 module화합니다. 동적으로 api를 등록해 실행 중인 cluster에서 custom resource가 나타나거나 사라질 수 있으며 cluster 관리자는 cluster 자체와 독..
(Kubernetes) - operator pattern 🍳머리말 k8s docs 복붙글입니다. 📕 Operator 📔 정의 operator는 CustomDefinitionResouce를 사용해 application 및 해당 component를 관리하는 k8s의 software extension입니다. Operator는 k8s 원칙, control loop를 따릅니다. 📔 목표 operator pattern은 service 또는 service set을 관리하는 운영자의 주요 목표를 포착하는 것을 목표로 합니다. 특정 application 및 service를 돌보는 운영자는 system의 작동 방식, 배포 방법 및 문제가 있는 경우 대처 방법에 대해 깊이 알고 있습니다. k8s에서 workload를 실행하는 사람들은 반복 작업을 처리하기 위해 자동화를 사용하는 ..
(Kubernetes) - init container 🍳머리말 k8s docs 복붙글입니다. 📕 Init container 📔 역할 pod의 app container들이 실행되기 전에 실행되는 특수한 container며 app image는 없는 utility, 설정 script등을 포함할 수 있습니다. 초기화 container는 containers 배열과 나란히 pod spec에 명시할 수 있습니다. 📔 일반 container와 유사점 항상 완료를 목표로 실행됩니다. 각 초기화 container는 다음 init container가 시작되기 전에 성공적으로 완료되어야 합니다. 📔 일반 container와 차이점 초기화 컨테이너는 앱 컨테이너의 리소스 상한(limit), 볼륨, 보안 세팅을 포함한 모든 필드와 기능을 지원합니다. 그러나, 초기화 컨테이너를 위한..
(Kubernetes) - pod lifecycle 🍳머리말 pod lifecycle에 대한 k8s docs 복붙글입니다. 📕 Pod Pod는 k8s가 인식할 수 있는 최소의 단위입니다. 하나의 node에 1개 이상의 pod가 있으며, pod에는 1개 이상의 container로 구성됩니다. 📔 Lifecycle Pod 생성 시 Pending 단계에서 시작해서, 기본 컨테이너 중 적어도 하나 이상이 OK로 시작하면 Running 단계를 통과하고, 그런 다음 파드의 컨테이너가 실패로 종료되었는지 여부에 따라 Succeeded 또는 Failed 단계로 이동합니다. 파드가 실행되는 동안, kubelet은 일종의 오류를 처리하기 위해 컨테이너를 다시 시작할 수 있습니다. 교착 상태의 container를 다시 실행한다면 가용성을 높여줄 수 있기 때문입니다. 파드 내..
(Kubernetes) - k8s namespace 생성하기 🍳머리말 namespace와 이를 생성하고 resource를 할당하는 글입니다. 📕 k8s Namespace 📔 필요성 하나의 cluster 안에서 여러 사용자가 있는 경우 논리적으로 구분해 resource를 다룰 필요가 있습니다. 다른 사용자에 resource에 접근하거나 변경하게 되면 폐를 끼치게 되기 때문입니다. 하지만 namespace는 물리적으로 격리는 되어 있지 않습니다. 서로 다른 namespace에서 생성된 pod가 한 node안에 있을 수 있기 때문입니다. 하지만 걱정할 필요없습니다. node를 한 사용자가 삭제한다고 해도 알아서 scheduling을 통해 생성된 복제본 pod로 옮겨 통신하게 되기 때문에 문제 없으며 실사용자의 입장에서는 격리가 되었다고 생각하게 됩니다. 📕 특정 nam..