본문 바로가기

분류 전체보기

(220)
Scouter APM 사용 후기 Concept 오픈소스 APM인 Scouter는 JVM(WAS, Standalone application)을 사용하는 어플리케이션 및 OS 자원에 대한 모니터링 모니터링 기능을 제공한다. Opinion 상용 APM과 비교해도 기능적으로 전혀 부족함이 없다 생각한다. 자신 혹은 회사가 원하는 방향으로 APM을 운영하고, 이에 대한 이해를 높이기 위해 직접 운영해 보는 것을 추천한다. 특히 Scouter가 수집하는 데이터를 직접 활용할 수 있어 활용 방안이 무궁무진해 질 수 있다. 장점 데이터가 수집서버 DB(influxdb)에 저장되고 활용할 수 있다. 실시간 모니터링에 강점이 있다. Service EQ, XLog, GC time, GC count 등을 대시보드로 구성하여 실시간 지표를 확인할 수 있다. ..
[Kubernetes]How to use Kubernetes Headless service .spec.clusterIP: None 으로 설정하면 클러스터 IP가 없는 서비스를 만들 수 있다. 이런 서비스를 'headless' 서비스라고 한다. 로드 밸런싱이 필요 없거나 단일 서비스 IP가 필요 없을 때 사용한다. .spec.selector 를 설정하면 쿠버네티스 API로 확인할 수 있는 엔드포인트가 만들어진다. selector가 없으면 Endpoints가 만들어지지 않는다. 서비스와 연결된 파드를 직접 가리키는 DNS A 레코드도 만들어 진다. 단, selector가 없더라도 DNS 시스템은 ExternalName 타입의 서비스에 사용할 CNAME레코드가 만들어진다. Example - headless apiVersion: v1 kind: Service metadata: name: headles..
[Kubernetes]How to use Kubernetes ExternalName 값과 함께 CNAME 레코드를 리턴하여, 서비스를 externalName 필드의 콘텐츠 (예:foo.bar.example.com )에 매핑한다. 어떤 종류의 프록시도 설정되어 있지 않다. → 외부 서비스를 쿠버네티스 내부에서 호출하고자 할때 사용할 수 있다. 참고: ExternalName 유형을 사용하려면 kube-dns 버전 1.7 또는 CoreDNS 버전 1.7 이상이 필요하다. Example - ExternalName apiVersion: v1 kind: Service metadata: name: externalname-service spec: type: ExternalName # externalName: google.com #연결하려는 외부 도메인 값을 설정 .spec.externalName: g..
[Kubernetes]How to use Kubernetes LoadBalancer 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다. 외부 로드 밸런서가 라우팅는 NodePort와 ClusterIP 서비스가 자동으로 생성된다. 클라우드에서 제공하는 로드밸런서와 파드를 연결한 후 로드밸런서의 IP를 이용해 클러스터 외부에서 파드에 접근할 수 있도록 한다. EXTERNAL-IP 항목에 로드밸런서 IP를 표시한다. 이 IP를 사용해 클러스터 외부에서 파드에 접근한다. 실제 요청 service → kube-proxy → iptables 생성(실체는 iptables) Example - LoadBalancer apiVersion: v1 kind: Service metadata: name: loadbalancer-service spec: type: LoadBalancer sele..
[Kubernetes]How to use Kubernetes NodePort 사용자는 서비스(NodePort)를 통해 모든 노드의 지정된 포트로 파드에 접근할 수 있다. 클러스터 외부에서 클러스터 안 파드로 접근할 때 사용할 수 있는 가장 간단한 방법이다. node1:30080, node2:30080 처럼 노드에 상관 없이 서비스에 지정된 포트를 사용하여 파드에 접근할 수 있다. 특이한점은 node1에만 실행되어 있는 파드가 있을때도 node2:30080 으로 접근했을 때 node1에 실행된 파드로 연결한다. Example - Nodeport 사용자는 nodeIP:30080 을 통해 파드 A에 접근할 수 있다. apiVersion: v1 kind: Service metadata: name: nodeport-service spec: type: NodePort selector: ap..
[Kubernetes]How to use Kubernetes ClusterIP 사용자는 서비스IP(ClusterIP)로 파드에 바로 접근할 수 없고 같은 클러스터안의 파드나 노드에서 접근할 수 있다. 기본 서비스 타입. 쿠버네티스 클러스터 안에서만 사용할 수 있다. 기본 구조 apiVersion: v1 kind: Service metadata: name: my-service spec: type: ClusterIP clusterIP: 10.0.10.10 selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376 .spec.type: 서비스 타입 설정 .spec.ClusterIP: 클러스터 IP를 직접 설정, 설정하지 않으면 자동 할당한다. .spec.selector: 서비스와 연결할 파드에 설정한 .labels 필드 ..
[Kubernetes]What is Kubernetes Service 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법 여러개 파드에 접근할 수 있는 고유한 IP를 제공한다. 파드 집합에 대한 단일 DNS명을 부여한다. 다양한 기능을 제공하지만 본질적으로 로드밸런서 역할을 한다. 개념 동적으로 변하는 파드들에 고정적으로 접근할 때 사용하는 방법이 쿠버네티스 서비스 이다. 서비스를 사용하면 파드가 클러스터 안 어디에 있든 고정 주소를 이용해 접근할 수 있다. 인그레스로도 접근 할 수 있고 아래와 같은 차이가 있다. 서비스 → L4 영역 통신에서 사용 인그레스 → L7 영역 통신에서 사용 서비스 타입 ClusterIP 기본 서비스 타입. 쿠버네티스 클러스터 안에서만 사용할 수 있다. 클러스터 안 노드나 파드에서는 클러스터 IP를 이용해서 서비스에 연..
[Kubernetes]How to use Kubernetes CronJob and Job Contents CronJob의 Manifest 정의 및 배포 CronJob의 실행 시간 제약 CronJob의 동시성 관리 CronJob의 History Limit Job의 Manifest 정의 및 배포 CronJob Manifest 정의 및 배포 cronjob-concurrency.yaml apiVersion: batch/v1 kind: CronJob metadata: name: hello-concurrency spec: schedule: "*/1 * * * *" startingDeadlineSeconds: 600 concurrencyPolicy: Forbid jobTemplate: spec: template: spec: containers: - name: hello image: busybox args..