Recent Study
-
어플리케이션 종류에는 Stateless Application, Stateful Application 있습니다. Stateless 대표적으로 웹 서버입니다. Stateful 대표적으로 데이터베이스입니다. Stateless는 앱이 여러개 배포되더라도 다 똑같은 서비스의 역할을 합니다. Stateful은 각각의 앱마다 자신의 역할이 있습니다. 몽고 DB 경우를 보면 하나는 Primary 역할, 또 하나는 Secondary, 그리고 Arbiter 역할이 있습니다. Primary는 Main DB이고, 이가 죽으면 Arbiter가 이것을 감지해서 Secondary가 대신 역할을 할 수 있도록 변경해줍니다. 1. 단순 복제인 Stateless 앱과 달리 Stateful 앱은 각 앱마다 본인의 고유 역할을 가지고 있습..
16. StatefulSet어플리케이션 종류에는 Stateless Application, Stateful Application 있습니다. Stateless 대표적으로 웹 서버입니다. Stateful 대표적으로 데이터베이스입니다. Stateless는 앱이 여러개 배포되더라도 다 똑같은 서비스의 역할을 합니다. Stateful은 각각의 앱마다 자신의 역할이 있습니다. 몽고 DB 경우를 보면 하나는 Primary 역할, 또 하나는 Secondary, 그리고 Arbiter 역할이 있습니다. Primary는 Main DB이고, 이가 죽으면 Arbiter가 이것을 감지해서 Secondary가 대신 역할을 할 수 있도록 변경해줍니다. 1. 단순 복제인 Stateless 앱과 달리 Stateful 앱은 각 앱마다 본인의 고유 역할을 가지고 있습..
2024.01.22 -
Authentication 1. X506 Client Certs 먼저 클러스터에 6443 포트로 API 서버가 열려있습니다. 사용자가 https로 접근하려면 k8s 설치시 kubeconfig 라고 해서 이 클러스터에 접근할 수 있는 정보들이 들어있는 파일이 있는데 위처럼 인증서 내용이 있습니다. 여기서 Client Key, crt 복사해서 가져오면 됩니다. 최초에 발급 기간과 클라이언트에 대한 개인 키를 만들고, 이 개인 키를 가지고 인증서를 만들기 위한 각각의 인증 요청서라는 csr 파일을 만듭니다. 이 CA 경우 인증 요청서를 가지고 바로 인증서를 만드는데 kubeconfig에 있는 CA crt 가 이것입니다. 클라이언트 인증서의 경우 발급기간 개인키와 인증서 그리고 클라이언트 요청서를 모두 합쳐서 ..
15. Authentication - X506 Certs, kubectl, Service Account / Authorization - RBAC, Role, RoleBindingAuthentication 1. X506 Client Certs 먼저 클러스터에 6443 포트로 API 서버가 열려있습니다. 사용자가 https로 접근하려면 k8s 설치시 kubeconfig 라고 해서 이 클러스터에 접근할 수 있는 정보들이 들어있는 파일이 있는데 위처럼 인증서 내용이 있습니다. 여기서 Client Key, crt 복사해서 가져오면 됩니다. 최초에 발급 기간과 클라이언트에 대한 개인 키를 만들고, 이 개인 키를 가지고 인증서를 만들기 위한 각각의 인증 요청서라는 csr 파일을 만듭니다. 이 CA 경우 인증 요청서를 가지고 바로 인증서를 만드는데 kubeconfig에 있는 CA crt 가 이것입니다. 클라이언트 인증서의 경우 발급기간 개인키와 인증서 그리고 클라이언트 요청서를 모두 합쳐서 ..
2024.01.17 -
1. Dynamic Provisioning Volume은 데이터를 안정적으로 유지하기 위해 사용합니다. 실제 데이터는 k8s 클러스터와 분리돼서 관리됩니다. 이런 방식으로 관리할 수 있는 종류가 많은데 크게 내부망에서 관리하는 경우 외부망에서 관리하는 경우로 나눌 수 있습니다. 외부망으로는 aws, gcp, microsoft Azure 같은 cloud storage를 두고 여기에 본인의 k8s와 연결해서 사용할 수 있습니다. 내부망에는 이 k8s를 구성하는 노드들이 있는데, k8s에는 노드들의 실제 물리적인 공간에 데이터를 만들 수 있는 hostPath, local Volume이 있고, 별도의 On-premise solution들을 이 노드들에 설치할 수 있습니다. 이 솔루션들이 알아서 노드의 자원을 이..
14. Volume - Dynamic Provisioning, StorageClass, Status, ReclaimPolicy / Accessing API - Overview1. Dynamic Provisioning Volume은 데이터를 안정적으로 유지하기 위해 사용합니다. 실제 데이터는 k8s 클러스터와 분리돼서 관리됩니다. 이런 방식으로 관리할 수 있는 종류가 많은데 크게 내부망에서 관리하는 경우 외부망에서 관리하는 경우로 나눌 수 있습니다. 외부망으로는 aws, gcp, microsoft Azure 같은 cloud storage를 두고 여기에 본인의 k8s와 연결해서 사용할 수 있습니다. 내부망에는 이 k8s를 구성하는 노드들이 있는데, k8s에는 노드들의 실제 물리적인 공간에 데이터를 만들 수 있는 hostPath, local Volume이 있고, 별도의 On-premise solution들을 이 노드들에 설치할 수 있습니다. 이 솔루션들이 알아서 노드의 자원을 이..
2024.01.17 -
사용자의 접근 경우 Service가 만들어진 후에 IP를 확인하고, 이 IP로 접근을 하면 되는데(10.111.41.1) Pod의 경우 이 자원들이 동시에 배포가 될 수 있습니다. Pod A가 Pod B에 접근을 해야하는 상황인데 Pod A에 IP를 넣기에는 Pod나 Service가 동적으로 할당되기 때문에 미리 알기에는 제약이 있습니다. Pod B의 경우 문제가 생겨 죽으면 자동으로 재생성되면서 IP가 변경되기 때문에 Pod A가 IP를 알더라도 계속 쓸 수 없습니다. 이런 문제를 해결하기 위해 DNS, Headless 서비스가 필요합니다. Pod가 외부 특정 사이트에 접근해서 데이터를 가져오는 상황에서 접근 주소를 변경해야 되는 상황이 생기면 경로를 변경해주기 위해 Pod를 수정하고 재배포해야 될까요..
13. Basic Object - Service사용자의 접근 경우 Service가 만들어진 후에 IP를 확인하고, 이 IP로 접근을 하면 되는데(10.111.41.1) Pod의 경우 이 자원들이 동시에 배포가 될 수 있습니다. Pod A가 Pod B에 접근을 해야하는 상황인데 Pod A에 IP를 넣기에는 Pod나 Service가 동적으로 할당되기 때문에 미리 알기에는 제약이 있습니다. Pod B의 경우 문제가 생겨 죽으면 자동으로 재생성되면서 IP가 변경되기 때문에 Pod A가 IP를 알더라도 계속 쓸 수 없습니다. 이런 문제를 해결하기 위해 DNS, Headless 서비스가 필요합니다. Pod가 외부 특정 사이트에 접근해서 데이터를 가져오는 상황에서 접근 주소를 변경해야 되는 상황이 생기면 경로를 변경해주기 위해 Pod를 수정하고 재배포해야 될까요..
2024.01.16 -
QoS class 위 Qos는 노드에 이렇게 리소스가 있다고 가정하고, 이 노드 위에 Pod가 3개 만들어져서 자원을 모두 사용하고 있는 상태라고 가정합니다. 이 상태에서 Pod1이 추가적으로 자원이 필요할 때 노드에는 추가적으로 할당받을 수 있는 자원이 없기 때문에, 선택을 해야합니다. k8s는 앱의 중요도에 따라 이런 것을 관리할 수 있도록 3가지 단계로 Quality of Service를 지원해주고 있습니다. 현재 위 상태에서는 1. Best Effort가 부여된 Pod가 가장 먼저 다운이 돼서 자원이 반환됩니다. Pod1은 필요한 자원을 추가로 얻게 됩니다. 다음엔 어느 정도 노드에 자원이 남아있지만, Pod2에서 그보다 많은 자원을 요구하는 상황이 됐다면, 2. Burstable이 적용된 Pod..
12. QoS classes (Guaranteed, Burstable, BestEffort) & Node SchedulingQoS class 위 Qos는 노드에 이렇게 리소스가 있다고 가정하고, 이 노드 위에 Pod가 3개 만들어져서 자원을 모두 사용하고 있는 상태라고 가정합니다. 이 상태에서 Pod1이 추가적으로 자원이 필요할 때 노드에는 추가적으로 할당받을 수 있는 자원이 없기 때문에, 선택을 해야합니다. k8s는 앱의 중요도에 따라 이런 것을 관리할 수 있도록 3가지 단계로 Quality of Service를 지원해주고 있습니다. 현재 위 상태에서는 1. Best Effort가 부여된 Pod가 가장 먼저 다운이 돼서 자원이 반환됩니다. Pod1은 필요한 자원을 추가로 얻게 됩니다. 다음엔 어느 정도 노드에 자원이 남아있지만, Pod2에서 그보다 많은 자원을 요구하는 상황이 됐다면, 2. Burstable이 적용된 Pod..
2024.01.12 -
Lifecycle Pod는 해당 라이프사이클 단계에 따라 주요 행동들이 있습니다. status 안에 Phase라고 해서 Pod의 전체 상태를 대표하는 속성이 있습니다. 그리고 Pod가 생성되면서 실행하는 단계들이 있는데 그 단계와 상태를 알려주는 것이 Conditions라는 특성입니다. 또한 컨테이너마다도 State라고 해서 각각의 컨테이너를 대표하는 상태가 있습니다. 먼저 Pod를 대표하는 Phase 종류는 아래와 같습니다. (1) Pending, (2) Running (3) Succeeded, (4) Failed, (5) Unknown Conditions는 4종류가 있고, Reason이라고 해서 Condition의 세부 내용을 알려주는 항목이 있습니다. (1) Initizlized, (2) Conta..
11. Pod - Lifecycle & (ReadinessProbe, LivenessProbe)Lifecycle Pod는 해당 라이프사이클 단계에 따라 주요 행동들이 있습니다. status 안에 Phase라고 해서 Pod의 전체 상태를 대표하는 속성이 있습니다. 그리고 Pod가 생성되면서 실행하는 단계들이 있는데 그 단계와 상태를 알려주는 것이 Conditions라는 특성입니다. 또한 컨테이너마다도 State라고 해서 각각의 컨테이너를 대표하는 상태가 있습니다. 먼저 Pod를 대표하는 Phase 종류는 아래와 같습니다. (1) Pending, (2) Running (3) Succeeded, (4) Failed, (5) Unknown Conditions는 4종류가 있고, Reason이라고 해서 Condition의 세부 내용을 알려주는 항목이 있습니다. (1) Initizlized, (2) Conta..
2024.01.12