[Kubernetes](Service)How to use Kubernetes Headless service
.spec.clusterIP: None 으로 설정하면 클러스터 IP가 없는 서비스를 만들 수 있다. 이런 서비스를 ‘headless’ 서비스라고 한다.
.spec.clusterIP: None 으로 설정하면 클러스터 IP가 없는 서비스를 만들 수 있다. 이런 서비스를 ‘headless’ 서비스라고 한다.
값과 함께 CNAME 레코드를 리턴하여, 서비스를 externalName 필드의 콘텐츠 (예:foo.bar.example.com )에 매핑한다. 어떤 종류의 프록시도 설정되어 있지 않다.
클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다. 외부 로드 밸런서가 라우팅는 NodePort와 ClusterIP 서비스가 자동으로 생성된다.
사용자는 서비스(NodePort)를 통해 모든 노드의 지정된 포트로 파드에 접근할 수 있다.
사용자는 서비스IP(ClusterIP)로 파드에 바로 접근할 수 없고 같은 클러스터안의 파드나 노드에서 접근할 수 있다.
파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법
실행 시간 제약 동시성 관리 History Limit
크론잡은 백업, 리포트 생성 등의 정기적 작업을 수행하기 위해 사용된다. 각 작업은 무기한 반복되도록 구성해야 한다(예: 1일/1주/1달마다 1회). 작업을 시작해야 하는 해당 간격 내 특정 시점을 정의할 수 있다.
하나 이상의 파드를 생성하고 지정된 수의 파드가 성공적으로 종료될 때까지 계속해서 파드의 실행을 재시도한다.
스테이트풀셋의 .spec.updateStrategy 필드는 스테이트풀셋의 파드에 대한 컨테이너, 레이블, 리소스의 요청/제한 그리고 주석에 대한 자동화된 롤링 업데이트를 구성하거나 비활성화할 수 있다. 두 가지 가능한 전략이 있다.
StatefulSet은 상태가 있는 파드들을 관리하는 컨트롤러이다.
DaemonSet은 보통 로그 수집기를 실행하거나 노드를 모니터링하는 모니터링용 데몬 등 클러스터 전체에 항상 실행시켜두어야 하는 파드에 사용한다.
Deployment를 업데이트할 때 해당 Deployment에 대한 롤아웃을 일시 중지할 수 있다.
때때로 디플로이먼트의 롤백을 원할 수도 있다. 예를 들어 디플로이먼트가 지속적인 충돌로 안정적이지 않은 경우. 기본적으로 모든 디플로이먼트의 롤아웃 기록은 시스템에 남아있어 언제든지 원할 때 롤백이 가능하다.
쿠버네티스에서 상태가 없는 앱을 배포할 때 사용하는 가장 기본적인 컨트롤러이다. Deployment는 Pod와 ReplicaSet에 대한 선언적 업데이트를 제공한다. 참고: Deployment가 소유하는 ReplicaSet은 관리하지 말아야 한다.
레플리카세트의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다.
워크로드는 쿠버네티스에서 구동되는 애플리케이션이다. 사용자를 대신하여 파드 집합을 관리한다. 지정한 상태와 일치하도록 올바른 수의 올바른 파드 유형이 실행되고 있는지 확인하는 컨트롤러를 구성한다.
Design Patterns type 사이드카 패턴(Sidecar) 앰배서더 패턴(Ambassador) 어댑터 패턴(Adapter)
스태틱 파드 (Static pods) kube-apiserver를 통하지 않고 특정 노드에 있는 kubelet이 직접 실행하는 파드
초기화 컨테이너 (Init Containers) 앱 컨테이너가 실행되기 전 파드를 초기화한다. 보안상 이유로 앱 컨테이너 이미지와 같이 두면 안 되는 앱의 소스 코드를 별도로 관리할 때 유용하다.
파드를 생성할때 컨테이너에 필요한 각 리소스 양을 선택적으로 지정할 수 있다.
쿠버네티스는 파드라는 단위로 컨테이너를 묶어서 관리하므로 보통 컨테이너 하나가 아닌 여러 개 컨테이너로 구성된다.
쿠버네티스에는 리소스를 모아서 가상적으로 분리하는 네임스페이스 라는 기능이 있다.
라벨(Label) 개발이 진행되면 쿠버네티스 클러스터 안에는 파드가 많이 생성된다.
쿠버네티스에서는 선언적 설정을 할 때 매니페스트 파일(yaml)을 사용한다.
쿠버네티스에서, HorizontalPodAutoscaler는 워크로드 리소스(예: 디플로이먼트 또는 스테이트풀셋)를 자동으로 업데이트하며, 워크로드의 크기를 수요에 맞게 자동으로 스케일링하는 것을 목표로 한다.
Kubernetes DNS K8s에서는 클러스터 안에서만 사용하는 DNS를 설정할 수 있다.
아래 템플릿을 사용하여 hostpath pv,pvc 를 생성할 수 있다
인그레스로 연결된 서비스에 없는 페이지를 호출할 경우 아래에 작성한 커스텀 에러 페이지를 표출한다
Problem Dynamic provisioning시 provisioner pod에서 아래와 같은 에러 메시지와 함께 PVC가 pending 상태가 된다.
kubectl cheat sheet setting bashrc 혹은 profile 설정이 가능 곳에 아래 내용을 입력하고 적용한다.
The Kubernetes API server provides 2 API endpoints (livez and readyz) to indicate the current status of the API server.
Check ETCD information check ETCD version kubectl describe pod etcd-controlplane -n kube-system
배치 잡 관리(Job/CronJob) 웹 서버와 같은 상주 서비스가 아니라 집계 등과 같은 배치 처리 또는 기계학습이나 수치해석과 같은 프로그램의 시작부터 종료까지 완료되는 잡을 실행하기 위한 리소스가 Job 또는 CronJob이다.
어플리케이션 설정 정보 관리(ConfigMap/Secrets) K8s를 사용하면 컨테이너 어플리케이션이 클러스터안의 어디에서 움직이고 있는지를 의식할 필요가 없다.
쿠버네티스 리소스 쿠버네티스는 유연한 어플리케이션 실행 환경 관리를 소프트웨어로 수행하기 때문에 다양한 것들을 추상화하고 있다. 이렇게 추상화한 것을 쿠버네티스에서는 리소스라고 부른다.
쿠버네티스 리소스 쿠버네티스는 유연한 어플리케이션 실행 환경 관리를 소프트웨어로 수행하기 때문에 다양한 것들을 추상화하고 있다. 이렇게 추상화한 것을 쿠버네티스에서는 리소스라고 부른다.
기술 기술 인터뷰의 경우 이력서에 작성한 내용이 주를 이뤘다. 그 외에 대한 내용을 아래에 정리
OSI 7 Layer 7 (응용계층): http, ftp, telnet 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층 6 (표현계층): ...
메모리 구조 코드 영역: 실행할 프로그램의 코드가 저장되는 영역 사용자가 프로그램 실행 명령을 내리면 OS가 HDD에서 메모리로 실행 코드를 올리게 되고, CPU는 코드 영역에 저장된 명령어를 하나씩 처리...
Scripted VS Declarative Declarative pipeline은 Jenkins pipeline의 최신 기능 Declarative pipeline은 Scripted pipeline 보다 더욱 풍부한 기능 제공 Declarative pipeline은 pi...
로드 밸런싱 알고리즘 HASH 새로운 연결 시 각 클라이언트에 hashingkey(IP+PORT/IP) 를 통해 해당 서버에 배정하는 방식, 연결 지속 RR ...
Pod가 어떻게 배치되는가? 스케줄링: 컨테이너 어플리케이션을 구체적으로 어떤 노드에서 움직이게 할지를 알고리즘에 기초하여 배치하는 것이다. 이 스케줄링 구조를 이해하는 데 있어서 중요한 역할을 하는 것이 쿠버네티스의 마스터에서 움직이는 API Server이다. API...
스케줄링과 디스커버리 기존 시스템에서는 어디에서 어떤 어플리케이션이 움직이고 있는지 알고 있어야 했다. 하지만 쿠버네티스에서는 어플리케이션이 배포되는 위치가 쿠버네티스에 의해 정해진다. 어플리케이션이 배포되면 쿠버네티스가 클러스터 상에서 비어 있는 위치를 찾아내서 자동으로 배치한다.
Book information 책: 완벽한 IT 인프라 구축의 자동화를 위한 Kubernetes(쿠버네티스) 내용: Azure를 사용한 쿠버네티스의 개념 파악과 실전 응용 저자: Asa Shiho 출판사: 정보문화사
지향점 시스템 구축을 위한 수작업을 줄인다. 시스템을 셀프 서비스로 운용한다.
쿠버네티스에서 각 컴포넌트가 자율적으로 움직인다. 각 컴포넌트는 다른 컴포넌트를 API를 통해 호출한다.
Purpose curl 명령어로 사이트를 조회했을때 301 code page와 Nginx 정보를 같이 반환한다. 외부 사용자가 WEB 정보를 알 수 없도록 Nginx 정보를 변경한다.
Purpose 응답헤더에 표시되는 nginx 정보 제거
Purpose 부적절한 웹 크롤링을 차단
Purpose 대용량 파일 업로드가 필요한 경우 아래 옵션에서 size 설정이 필요하다.
Purpose Delete old images from harbor registry
Purpose Check cluster IPs range
Purpose Delete old data that is not used in docker
깃옵스란? 애플리케이션의 배포와 운영에 관련된 모든 요소를 코드화하여 깃(Git)에서 관리(Ops)하는 것이 깃옵스의 핵심이다.
Purpose Create TLS secret for HTTPS use
Purpose Install harbor to manage docker images
problem “TargetDown for kube-proxy” “TargetDown for kubelet” “TargetDown for etcd” “KubeSchedulerDown” “KubeControllerManagerDown” “etcdInsufficientMembers” ...
Purpose 응답시간 분포도(XLog) 및 트랜잭션 프로파일링 기능 제공
Purpose 사용자가 필요한 시점에 요청을 보내 데이터를 얻을 수 있다.
Purpose WAS에서 서비스되는 어플리케이션에 대한 실시간 서비스 처리현황 및 관련된 성능 데이터를 모니터링
Java Heap Memory
Purpose monitoring real time resources provided by OS
Purpose Explain chart context menu and essential graphs list
Purpose Host Agent: OS의 CPU, Memory, Disk등의 성능 정보 전송 Java Agent: 실시간 서비스 성능 정보, Heap Memory, Thread 등 Java 성능 정보
Purpose Collector: Agent가 전송한 데이터 수집/처리 Client: 수집된 성능 정보를 확인하기 위한 Client 프로그램
Purpose Collect, report, or save system activity information.
Purpose use private registry with docker-registry secret
Purpose The ln utility creates a new directory entry (linked file) which has the same modes as the original file.
Purpose PersistentVolume A piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes.
Purpose When lots of users use a cluster, we can seperate access rights with namespace or API.
Purpose It can display system summary information as well as a list of tasks currently being managed by the Linux kernel. And you can find load problems abou...
Purpose Check load average 1, 5, 15 minutes. It will be fundamental data to resolve problem that slow servers
Purpose To understand How to use helm chart
Purpose Install helm that set resources about kubernetes
Purpose Install, backup, restore Gitlab CI/CD
Book information 책: 데브옵스 내용: 데브옵스를 지향하는 조직에서 발생할 수 있는 다양한 문제 상황과 문제 해결 방법 저자: 카일 랜킨 (조남웅, 주성식 & 홍성민 옮김) 출판사: 위키북스
Purpose PVC를 생성할 때 PV 가 자동으로 생성되는 Dynamic Provisioning 을 NFS 기반으로 운영
Purpose scp copies files between hosts on a network.
Purpose Print NAME with any leading directory components removed. If specified, also remove a trailing SUFFIX.
Purpose kubernetes logging
Purpose Monitor and alert kubernetes cluster
Book information 책: 코드로 배우는 스프링 웹 프로젝트 내용: Spring Framework를 이용한 웹 사이트 개발 저자: 구멍가게 코딩단 출판사: 남가람북스
Book information 책: 쿠버네티스 입문 내용: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 저자: 정원천, 공용준, 홍석용, 정경록 출판사: 동양북스
Purpose Monitoring kubernetes and controll kubernetes using WEB UI
Purpose kubernetes resource monitoring
Purpose Delete old log files
Purpose Kubelet, kubectl, kubeadm version upgrade
Purpose 서버의 물리적인 자원교체, 버전 업그레이드를 위해 클러스터에서 노드를 제외시키기 위함.
Purpose kubernetes 고가용성 클러스터 구성
Purpose VIP load balance generated by keepalived
Purpose Create VIP for HA configuration