전체 글 208

컨피그 & 스토리지 API 카테고리

컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 컨테이너에 대해 설정 파일, 패스워드 같은 기밀 정보 등을 추가하거나 영구 볼륨을 제공하기 위한 리소스다. 내부에서 사용되는 것을 제외하고 사용자가 직접 사용하는 것으로 세 가지 종류의 컨피그 & 스토리지 리소스가 있따. 환경 변수 사용 쿠버네티스에서 개별 컨테이너의 설정 내용은 환경 변수나 파일이 저장되어 있는 영역을 마운트하여 전달하는 것이 일반적이다. 쿠버네티스에서 환경 변수를 전달할 때 파드 템플릿에 env 또는 envForm을 지정한다. 다음과 같이, 크게 나눠 다섯 가지 정보를 환경 변수에 포함시킬 수 있다. 정책 설정 파드 정보 컨테이너 정보 시크릿 리소스 기밀 정보..

Kubernetes 2024.02.18

서비스 API 카테고리 정리

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 서비스 L4 로드 밸런싱 클러스터 내부 DNS를 사용한 이름 해석 레이블을 사용한 파드의 서비스 디스커버리 인그레스 L7 로드 밸런싱 SSL 터미네이션 경로 기반 라우팅 서비스 종류 서비스 종류 IP 엔드포인트 내용 ClusterIP 쿠버네티스 클러스터 내부에서만 통신 가능한 가상 IP ExternalIP 특정 쿠버네티스 노드의 IP 주소 NodePort 모든 쿠버네티스 노..

Kubernetes 2024.02.18

Ingress(인그레스)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 인그레스 지금까지 설명한 서비스는 L4 로드밸런싱이지만 Ingress는 L7 로드밸런싱을 제공하는 서비스이다. 서비스들을 묶는 서비스들의 상위 객체로, 서비스 종류의 하나로서가 아닌 독립된 리소스로 구현되어 있다. Network Policy 리소스에 Ingress/Egress라는 설정 항목이 있지만 이 인그레스와 관련은 없다. 1. 리소스와 컨트롤러 쿠버네티스에서 서비스를 ..

Kubernetes 2024.02.17

None-Selector 서비스

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 None-Selector ExternalName 서비스는 서비스명으로 이름 해석을 하면 CNAME으로 반환 하였다. 그에 반해, None-Selector 서비스는 서비스명으로 이름 해석을 하면 A 레코드로 반환한다.자신이 설정한 멤버에 대해 로드 밸런싱을 하며, Client-side 로드밸런싱용 엔드포인트를 제공하는 서비스라고 말할 수 있다.type: LoadBalancer..

Kubernetes 2024.02.17

스케줄링(taint&tolerations/NodeSelector/NodeAffinity)

Woker Node위에 Pod들이 배포될때 다양한 스케줄링 기법을 제공합니다. taint&tolerations taint와 tolerations의 사용 목적: 특정 Node에 할당되지 않도록 방지. taint taint가 설정된 노드에는 pod가 스케줄 되지 않는다. 특정 파드만 받기 위한 노드 설정 kubectl taint node [node명] -l key1=value1 key2=value2:effect kubectl taint nodes node-name key=value:taint-effect → kubectl taint nodes node1 app=blue:NoSchedule apiVersion: v1 kind: Node metadata: name: sample-toler labels: labe..

Kubernetes 2024.02.13

Resource Requests/Limits

Request pod를 생성할 때 필요한 Resource 최소치 Limits Pod가 사용할 수 있는 Resource 최대치 Throttling cpu가 과도할 때, 강제로 down 시킴 CPU Limit 넘어서는 경우, throttling 발생 우려 Memory Limit 넘어서는 경우, Pod 종료 apiVersion: v1 kind: Pod metadata: name: sample-pod labels: sample: app spec: containers: - name: sample-webapp-color image: simple-webapp-color ports: - containerPort: 8080 resources: requests: cpu: 1 memory: "1Gi" limits: cpu:..

Kubernetes 2024.02.13

서비스 API 카테고리(ExternalName)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 ExternalName 서비스 서비스명의 이름 해석에 있어 외부 도메인으로 CNAME을 반환한다. 사용 용도를 살펴보면, 다른 이름을 설정하고 싶은 경우 클러스터 내부에서의 엔드포인트를 쉽게 변경하고 싶을 경우에 사용한다. apiVersion: v1 kind: Service metadata: name: sample-externalname namespace: default s..

Kubernetes 2024.02.11

서비스 API 카테고리(Headless)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 Headless (None) 클라이언트가 Pod 1개가 아니라 모든 Pod 들과 통신해야 한다면요? 만약 같은 서비스 아래에 있는 Pod A 와 Pod B 가 서로 통신해야 한다면요? 다행히도, Kubernetes 는 클라이언트에게 Pod IP 리스트를 알려주는 방법을 DNS Lookup 을 통해 제공합니다. 보통의 서비스: Service의 DNS Lookup은 IP 주소 ..

Kubernetes 2024.02.11

서비스 API 카테고리(세션 어피니티)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 Session Affinity 서비스에서 세션 어피니티(세션 선호도)를 활성화할 수 있다. 예를 들어, ClusterIP 서비스에서 활성화한 경우, 파드에서 ClusterIP로 보내진 트래픽은 서비스에 연결된 어느 하나의 파드에 전송된 후 다음 트래픽도 계속 같은 파드에 보내진다. 상태(STATE) - 사용자가 로그인했는가? 그럼 해당 서비스를 이용할 수 있는 권한이 있다...

Kubernetes 2024.02.11