일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kubernets on Jenkins
- 솔데스크
- jenkins
- 깃허브 액션
- blue-green
- livenessPorbe
- 딥레이서 보상함수
- github action 사용법
- grafana on kubernetes
- LoadBalancer Controller
- terraform
- 로드밸런서 컨트롤러
- 딥레이서
- AWS 딥레이서
- kubernetes 동작 원리
- 쿠버네티스
- helm
- EKS 클러스터
- Aurora cluster
- 쿠버네티스 컴포넌트
- 그라파나 대시보드
- headless service
- SAA 합격 후기
- Solution Architecture
- 그라파나 시각화
- Kubernetes
- EFS CSI Driver
- Prometheus install
- Firelens
- 메탈LB
mingming
kubernetes controller - Replication Controller 본문
Replication Controller
요구하는 Pod의 개수를 보장하며 파드 집합의 실행을 항상 안정적으로유지 하는 것을 목표
- 요구하는 Pod의 개수보다 부족하면 template를 이용해 Pod를 추가
- 요구하는 Pod의 개수보다 많으면 최근에 생성된 Pod를 삭제
Replication Definition
apiVersion: v1
kind: ReplicationController
metadata:
name: <ReplicationController_Name>
spec:
replicas: <배포 개수>
selector:
key: value
template:
<Container template>
selector : Key : Value로 구성해 selector에 포함되는 파드를 관리
replicas : 배포 개수
template : 컨테이너를 정의하는 template
webui 라벨을 갖는 nginx 웹서버를 3개 실행해줘!
kubectl create rc-exam --image=nginx --replicas=3 --selector=app=webui
nginx-rc.yaml
apiVersion:
kind: ReplicationController
metadata:
name: nginx-rc
spec:
replicas: 3
selector:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
ReplicationController의 selector label의 template의 lable에 포함되어 있어야 합니다.
작성한 manifest 파일 배포
kubectl apply -f nginx-rc
3개의 Pod가 실행중인 것을 확인할 수 있습니다.
kubectl describe rc nginx-rc
redis 이미지의 파드 실행 ( app = webui 라벨을 가진 )
kubectl run redis --image=redis --dry-run --labels=app=webui -o yaml > redis.yaml
kubectl apply -f redis.yaml
실행되지 않고 바로 삭제됩니다. 해당 라벨을 갖는 Pod를 3개만 실행해주기 때문에 그 이상의 Pod는 바로 죽여버립니다.
ReplicationController 편집하기
kubectl edit rc nginx-rc
replicas를 4로 바꾸고 저장해줍니다. Pod의 개수를 맞추기 위해 한개의 Pod를 추가 실행합니다.
명령어로 스케일 조절하기
kubectl scale rc nginx-rc --replicas=2
가장 최근 실행된 두개의 Pod를 삭제합니다.
Pod의 이미지 버전 수정하기
kubectl edit rc nginx-rc
selector:
app: webui
template:
metadata:
creationTimestamp: null
labels:
app: webui
name: nginx-pod
spec:
containers:
- image: nginx:1.15 ### 1.14 ~> 1.15
imagePullPolicy: IfNotPresent
name: nginx-container
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
버전이 바뀐다고해서 Pods의 이미지가 변경되진 않습니다. 그러나 이후 생성되는 Pods는 1.15 버전으로 생성됩니다.
EXAMPLE
다음 조건으로 ReplicationController를 사용하는 rc-lab.yaml 파일을 생성하고 동작시킵니다.
- lables(name: apache, app:main, rel:stable)를 가지는 httpd:2.2 버전의 Pod를 2개 운영합니다
rc name : rc-mainui
container: httpd:2.2
rc-lab.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-mainui
spec:
replicas: 2
selector:
app: main
template:
metadata:
name: apache-pod
labels:
app: main
rel: stable
name: apache
spec:
containers:
- name: apache
image: httpd:2.2
동작되는 httpd:2.2 버전의 컨테이너를 3개로 확장하는 명령을 적고 실행하세요
kubectl scale rc rc-mainui --replicas=3
'kubernetes' 카테고리의 다른 글
kubernetes controller - Deployment (1) | 2023.09.04 |
---|---|
kubernetes controller - ReplicaSet (0) | 2023.09.03 |
Vagrant로 kubernetes Cluster 구축하기 (0) | 2023.09.01 |
Kubernetes Pod Resoure 할당하기 (0) | 2023.08.31 |
EKS Prometheus & Grafana (0) | 2023.08.31 |