클라우드,가상화/K8S 10

k8s - Secret

k8s에서 기밀 정보를 별도 리소스에 정의하고 파드에서 읽어들일 수 있는 시크릿에 대해 정리합니다. ※ 시크릿을 정의하고 있는 매니페스트는 base64로 인코드되어 있지만 암호화되어 있지 않아 매니페스트를 깃 저장소 등에 업로드하는 것은 불가능. 이러한 문제를 해경하기 위해 시크릿이 정의된 매니페스트를 암호화하는 kubesec/SealedSecret/ExternalSecret 같은 오픈 소스 소프트웨어도 있음. 시크릿 분류종류개요Opaque일반적인 범용 용도kubernetes.io/tlsTLS 인증서용kubernetes.io/basic-auth기본 인증용kubernetes.io/dockerconfig/json도커 레지스트리 인증 정보용kubernetes.io/ssh-authSSH 인증 정보용kuberne..

k8s - DemonSet

DemonSet? DemonSet은 각 노드에 파드를 하나씩 배치. ※ replicaset은 각 kubernetes node에 총 N개의 파드를 노드의 리소스 상황에 맞게 배치. ※ demonset은 repica 수를 지정할 수 없고 하나의 노드에 두 개의 파드를 배치할 수도 없음. ※ demonset은 모니터링이나 로그 전송과 같은 용도로 많이 사용. DemonSet 특징 - demonset은 파드를 배치하고 싶지 않은 노드가 있을 경우 nodeSelector나 노드 anti pod affinity를 사용한 스케줄링으로 예외 처리 할 수 있음. ※ anti pod affinity: inter pod affinity 와는 반대로 특정 파드와 함께 배포되는 것을 피하도록 배포될 노드를 결정. - kuber..

k8s - ClusterIP

ClusterIP ? ClusterIP 서비스는 쿠버네티스의 가장 기본이 되는 서비스. ClusterIP 서비스를 생성하면 쿠버네티스 클러스터 내부에서만 통신 가능한, Internal Network에 생성되는 가상 IP가 할당된다. 따라서 ClusterIP라고 불림. ClusterIP와 통신은 각 노드상에서 실행중인 시스템 구성 요소 kube-proxy가 파드로 전송을 실시. ClusterIP는 쿠버네티스 클러스터 외부에서 트래픽을 수신할 필요가 없는 환경에서 클러스터 내부 로드 밸런서로 사용. 기본적으로 쿠버네티스 API에 접속하기 위한 Kubernetes 서비스가 생성되어 있고, ClusterIP가 발급되어 있음. ClusterIP 서비스 생성 다음의 매니페스트로 ClusterIP 서비스를 생성. s..

k8s - kubernetes 클러스터 네트워크와 서비스

개요 파드 내부의 컨테이너 통신과 파드 외부의 컨테이너 간 통신. 쿠버네티스 클러스터 내부에 구축된 파드 네트워크 파드에 트래픽 로드 밸런싱 - 서비스는 수신한 트래픽을 여러 파드에 로드 밸런싱하는 기능을 제공. - 파드는 기동될 때마다 각각 다른 IP 주소를 할당받기 때문에 로드 밸런싱하는 구조를 자체적으로 구현하려면 각 파드의 IP 주소를 매번 조회하거나 전송 대상의 목적지를 설정해야 함. - 서비스를 사용하면 여러 파드에 대한 로드 밸런싱을 자동으로 구성할 수 있음. - 서비스는 로드 밸런싱의 접속 창구가 되는 앤드포인트도 제공.(외부 로드 밸런서가 할당하는 가상 IP 주소나 클러스터 내부에서만 사용할 수 있는 가상 IP 주소 등 여러 가지 종류를 제공.) sample-deployment.yaml ..

k8s - Deployment

Deployment? deployment는 여러 replicaSet을 관리하여 롤링 업데이트나 롤백 등을 구현하는 리소스. deployment가 replicaSet을 관리하고 replicaSet이 pod를 관리하는 관계. 다음 순서로 동작 1. 신규 replicaset을 생성 2. 신규 replicaset의 replica 수(pod 수)를 단계적으로 늘림. 3. 이전 replicaset의 replica 수(pod 수)를 단계적으로 줄임. 4. (2, 을 반복) 5. 이전 replicaset은 replica 수를 0으로 유지. Deployment 생성 sample-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: sample-depl..

k8s - ReplicaSet

ReplicaSet? Workload API중의 하나로 ReplicaSet은 Pod의 Replica를 생성하고 지정한 Pod 수를 유지하는 Resource ReplicaSet 생성 Pod를 Replica 수 3으로 확장시킨 ReplicaSet Manifest apiVersion: apps/v1 kind: ReplicaSet metadata: name: sample-rs spec: replicas: 3 selector: matchLabels: app: sample-app template: metadata: labels: app: sample-app spec: containers: - name: nginx-container image: nginx:1.16 ※ 기동 중인 세 개의 Pod를 확인할 수 있음. 실..

k8s - Pod

Pod? 워크로드 리소스의 최소 단위. 한 개 이상의 컨테이너로 구성. 같은 파드에 포함된 컨테이너끼리는 네트워크적으로 격리되어 있지 않고 IP 주소를 공유. 컨테이너가 두 개 들어 있는 파드를 생성한 경우 같은 IP 주소를 가짐. Pod Design Pattern 크게 Sidecar, ambassador, adapter 가 있음. Sidecar Pattern 메인 컨테이너 외에 보조적인 기능을 추가하는 서브 컨테이너를 포함하는 패턴. 대부분 데이터와 설정에 관련된 패턴. 사용 예 1. 특정 변경 사항을 감지하여 동적으로 설정을 변경하는 컨테이너 2. 깃 저장소와 로컬 스토리지를 동기화하는 컨테이너 3. 애플리케이션의 로그 파일을 오브젝트 스토리지로 전송하는 컨테이너 Ambassador Pattern 메..

k8s - Overview

k8s 구조 기본 k8s master node의 역할 API 엔드포인트 제공 컨테이너 스케줄링/스케일링 k8s worker node의 역할 docker host에 해당 실제로 컨테이너를 가동시키는 노드 k8s cluster 관리 CLI 도구인 kubectl과 YAML, JSON 형식으로 작성된 manifest file을 사용하여 k8s master에 resource를 등록해야 함. kubectl은 manifest file 정보를 바탕으로 k8s master가 가진 API에 요청을 보내어 k8s를 관리. k8s api는 일반적으로 restful api로 구현되어 있어 kubectl 사용 없이 각종 프로그램 언어의 restful api나 curl등으로 직접 api 호출하여 k8s 관리 가능. k8s Reso..

Kubernetes Install

※ 실행환경 CENTOS 7.9 - Proxy, 인증키 등이 필요 없는 환경에서의 설치 진행입니다. - 또한 root 권한으로 설치 진행합니다. 1. 기반 환경 세팅 1) yum update # yum update -y 2. Docker 설치 1) Docker Repository 등록 # yum install -y yum-utils # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 2) Docker 버전 리스트 # yum list docker-ce --showduplicates | sort -r 3) Docker 설치 최신 버전의 Docker 설치 # yum install docker-ce dock..

반응형