일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Kafka
- 레디스
- Jenkins
- 클러스터
- EMR
- 간단
- 설정
- 자바
- Redis
- 젠킨스
- 로그인
- gradle
- ec2
- redash
- Mac
- 머신러닝
- Cluster
- Docker
- config
- Zeppelin
- aws
- vue
- 자동
- fastcampus
- spring
- java
- 예제
- hive
- SpringBoot
- login
- Today
- Total
목록전체 글 (193)
코알못
이번 시간에는 Controller 중에 하나인 Deployment 를 알아보자! Deployment의 경우 배포를 위한 Controller로 ReplicaSet을 이용해서 Pod 수를 조절하는 방법을 사용한다. 그리고 Rolling Update(파드를 '점진적=하나씩'으로 새 버전으로 업데이트하여 서비스 중단없이 배포 한다.), RollBack 기능을 지원하여 배포를 원활하게 진행 할 수 있다. Rolling Update, RollBack 기능을 이용하지 않으면 내부 문법은 ReplicaSet과 동일하게 이용할 수 있어 저번 시간에 사용한 ReplicaSet yaml 파일에 kind 부분만 ReplicaSet에서 Deployment로 변경하여 deploy-nginx.yaml 을 생성해보자! # deplo..
이번 시간에는 Contoller 종류중 하나인 ReplicaSet에 대해 알아보자! 저번 시간에 알아본 ReplicationController 보다 풍부한 selector를 가지고 있다. 예시를 통해 살펴보자! 이전 ReplicationController의 경우 아래와 같이 정의 하고 label 2개 모두 해당 될 시 관리 대상에 포함된다. spec: replicas: 3 selector: app: webui version: "2.1" ReplicaSet 으로 동일하게 구현 하면 matchLabels를 통해 구현하면 된다. spec: replicas: 3 selector: matchLabels: app: webrui version: "2.1" matchLabels으로만 구현도 가능하나 matchExpre..
컨트롤러는 Pod의 갯수를 보장해주는 역할을 하며 아래와 같이 여러개의 컨트롤러가 있다. ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob 이번 시간에는 ReplicationController를 먼저 알아보도록 하자! ReplicationControllers는 지정한 label selector를 가진 Pod 가 요청한 replica 수 보다 작다면 정의한 template 를 보고 파드를 생성하는 Controller 로 아래와 같이 정의한다. # rc-nginx.yaml apiVersion: v1 kind: ReplicationController metadata: labels: run: rc-nginx name: rc..
하나의 노드에 여러 컨테이너 파드가 뜰 수 있으며 리소스 제한을 두지 않는다면 하나의 파드가 리소스를 다써버려 다른 파드에 장애가 나게 된다. 우리는 이를 방지 하기 위해 Resource Requests를 사용하여 리소스 제한을 두도록 한다! 그리고 너무 타이트한 파드 배치가 되지 않도록 어느정도 리소스의 여유가 있는 노드에 할당하고 싶다면 Resource Requests 기능을 이용하면 된다! 리소스 조정 항목 내용 Resource Requests 파드를 실행하기 위한 최소 리소스양을 요청 Resource Limits 파드가 사용할 수 있는 최대 리소스양을 제한 단위는 아래를 참고한다. MB 1000KB 1Mib 1024Kib 1core 1000mc 이제 nginx 컨테이너 파드를 요청하는데 reque..
pod 안에 init container, main container 를 같이 두고 반드시 실행 되어야 하는 컨테이너는 init 컨테이너로 지정하여 init 컨테이너가 정상일때 main container가 실행 되도록 해야할때 사용한다. init 컨테이너는 아래와 같이 spec.initContainers 에 컨테이너를 지정한다. apiVersion: v1 kind: Pod metadata: name: myapp labels: app: myapp spec: containers: - name: main-app image: initContainers: - name: init-app image: 쿠버네티스 홈페이지에 예시가 있어 해당 예시로 실습을 진행해보도록 하자! https://kubernetes.io/doc..
쿠버네티스는 self-healing 기능이 있으며 Liveness Probe를 이용하면 해당 기능을 사용할 수 있다. 아래와 같이 spec.containers 부분에 정의하며 apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: my-nginx image: nginx licenessProbe: httpGet: path: / port: 80 위에 httpGet 방식 포함하여 세가지가 있어 서비스에 맞게 사용하면 된다. 매커니즘 형식 어떻게 확인 httpGet httpGet: path: / port: 80 지정된 port, path를 주기적으로 호출하여 200이 아닌 값이 나오면 컨테이너 다시 시작 tcpSocket tcpS..
우리는 쿠버네티스에서 클러스터 관리 할때 yaml 파일, 또한 yaml 파일에서 Object 정의시 apiVersion 을 정의한다. 하지만 저자의 경우 왜 이렇게 쓰는지에 대해 알아본적이 없으며 알고 사용하는것과 모르고 사용하는것은 다르기에 간단하게 알아 보도록 하자! 우선 yaml은 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식이다. 아래와 같은 구조를 가지고 있으며 $ vi nginx.yaml apiVersion: v1 kind: Pod metadata: labels: run: my-nginx name: my-nginx spec: containers: - image: nginx name: my-nginx :wq! 작성하는 방법은 아래와 같다. 구분 내용 상세 들여쓰기 스페이스바 Tab X 문법 Sc..
이번 시간에는 쿠버네티스를 이루고있는 컴포넌트에 대해 알아보자! 아래 글에 상세하게 정리 해두어 아래 글을 참고하면 되며 https://co-de.tistory.com/182 [kubernetes] 쿠버네티스란? 앞서 실습한 내용으로 도커를 이용하여 CD 구현하면 되지만 만약 배포 서버가 1000대라면..! 물론 구현할 수 있지만 편리하게 할 수 있는게 있다면! 그리고 운영 서버를 받고 사용해보니 많은 리소 co-de.tistory.com 위에 정리한거 이외에 Add-on(=애드온=보강프로그램)으로 마스터 노드에 coreDNS ,마스터노드&워커노드에 CNI 가 있다. 컴포넌트 설명 coreDNS 클러스터 DNS 기능 (사용하면서 알아보자) CNI(Container Network Interface) Pod..