| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 31 |
- 머신러닝
- Cluster
- fastcampus
- Jenkins
- gradle
- SpringBoot
- 젠킨스
- ec2
- Redis
- spring
- 레디스
- 간단
- 자동
- Kafka
- 로그인
- config
- 예제
- aws
- EMR
- login
- vue
- Docker
- 클러스터
- hive
- 설정
- Zeppelin
- 자바
- Mac
- redash
- java
- Today
- Total
목록분류 전체보기 (204)
코알못
쿠버네티스는 Running 을 유지 하려는 동작 방식을 가지고 있어 Pod 가 정상 종료 되더라도 계속적으로 재 실행 된다. 이를 위해 나온것이 Job Controller 이다! Job Controller를 이용하면 Batch 처리하는 Pod를 만들어 잡이 정상 종료되면 완료 상태가 되고 비정상 종료시 재 실행 되도록 할 수 있다. 아래는 Job 을 생성하는 yaml 형식이며 template도 기존 controller 와 동일하게 담는다. 여기서 resartPolicy가 Naver인데 이는 비정상 종료일시 계속적으로 파드를 다시 생성한다는 의미이다. # job.yaml apiVersion: batch/v1 kind: Job metadata: name: centos-job spec: # completion..
Pod의 상태를 유지해주는 컨트롤러이다. 우리가 이전시간에 배운 ReplicationController 를 보면 replicas 를 3개로 설정하여 create 하면 pod 가 3개 생성된다. 여기서 파드 하나를 제거하면 파드가 재 생성이 되는데 해당 파드에 연결된 볼륨이 삭제 되고, 파드의 이름도 다른 해시 코드가 붙어 다른 이름으로 생성된다. StatefulSet 은 이와 다르게 Pod 이름, 볼륨이 유지 되는 성격을 가지고 있다! serviceName 필드 지정이 필요하며 아직 Service에 대해 배우지 않았으니 우선 지정이 필요하다는것만 알아두자! # sf-nginx.yaml apiVersion: v1 kind: StatefulSet metadata: name: sf-nginx spec: rep..
DaemonSet 컨트롤러는 노드당 Pod가 한개씩 실행 되도록 보장하는것으로 이는 어디다 쓸까? 노드당 하나씩 실행해야하는 로그 수집기, 모니터링 에이전트 프로그램 실행시 적용하게 된다! DaemonSet의 경우 ReplicaSet 과 동일한 형식으로 작성하고 노드당 1개씩 띄워 지므로 replicas만 정의 하지 않는다. 우선 노드 추가시 daemonSet에 의해 pod 가 생성 되는지 실습을 위해 노드 하나를 제거 하고 시작한다 우선 노드 확인후 $ kunectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready control-plane 4m39s v1.27.2 node2 Ready 42s v1.27.2 node3 Ready 20s v1.27.2 노드 명을..
이번 시간에는 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..