https://cloudbim.tistory.com/35
Replication controller - 파드 생성 개수를 보장해주는 컨트롤러
1. ReplicationController 생성하기
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-nginx
spec:
relicas: 3
selector:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
2. ReplicationController 파드 확인하기
kubectl get pods
3. ReplicationController 파드 개수 확인하기
kubectl get replicationcontrollers
3. 파드 라벨 확인하기
kubectl get pod --show-labels
4. 파드 지워도 자동으로 생기는 것 확인하기
kubectl delete pod #특정파드
kubectl get pods
5. 파드 지정 개수 스케일링 시키기 ( + 같은 라벨 파드 추가 생성 )
kubectl scale rc rc-nginx --replicas=5
6. ReplicationController 삭제하기
kubectl delete rc rc-nginx.yaml
Replicaset - pod 개수 보장 해 주면서 풍부한 selector 제공해주는 컨트롤러
6. Replicaset controller 생성하기
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-nginx
spec:
replicas: 3
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
6. Replicaset controller 삭제하기
kubectl delete rs rs-nginx
Deployment – rolling update 기능을 replicaSet 컨트롤로 서비스중단없이 업데이트해주는 컨트롤러
7. Deployment controller 생성하기
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deploy
spec:
selector:
matchLabels:
app: webui
replicas: 3
template:
metadata:
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
ports:
- containerPort: 80
8. 파드 현재 버전 확인하기
kubectl describe pod #특정파드
9. 파드 컨테이너 이미지 변경하기
kubectl set image deployment app-deploy nginx-container=nginx:1.15 --record
10. 버전 업데이트 기록 확인하기
kubectl rollout history deployment app-deploy
11. 버전 업데이트 중지 및 재개 시키기
kubectl rollout pause deployment app-deploy
kubectl rollout resume deployment app-deploy
12. 버전 업데이트 복구 시키기
kubectl rollout undo deployment app-deploy --to-revision=2
13. Deployment controller 삭제하기
kubectl delete deployments.apps app-deploy
DeamonSet - 노드당 1개씩 파드 할당 보장 해 주면서 롤링 업데이트 기능한 컨트롤러
모니터링 에이전트, 로그 에이전트 와 함께 사용시 용이
14. DeamonSet controller 생성하기
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-nginx
spec:
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
15. DeamonSet controller 삭제하기
kubectl delete daemonsets.apps daemonset-nginx
StatefulSet - 삭제되도 파드의 이름과 볼륨이 변하지 않도록 파드 상태를 보존 해주는 컨트롤러 / 롤링 업데이트 가능
16. Stateful controller 생성하기
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sf-nginx
spec:
replicas: 3
serviceName: sf-nginx-service
podManagementPolicy: Parallel
selector:
matchLabels:
app: webui
template:
metadata:
name: nginx-pod
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
17. Stateful controller 삭제하기
kubectl delete statefulsets.apps sf-nginx
Job controller - 백업작업 정상 종료시 됬으면 멈추고 비 정상시 다시 실행해주는 컨트롤러
파드의 로그를 확인할수있도록 삭제하지않고 보존할 때 필요
18. Job controller 생성하기
apiVersion: batch/v1
kind: Job
metadata:
name: centos-job
spec:
template:
spec:
containers:
- name: centos-container
image: centos:7
command: ["bash"]
args:
- "-c"
- "echo 'hello'; sleep 50; echo 'bye'"
restartPolicy: Never
19. Job controller 2 생성하기 ( 비정상인 경우 3번까지 시도 )
apiVersion: batch/v1
kind: Job
metadata:
name: centos-job
spec:
template:
spec:
containers:
- name: centos-container
image: centos:7
command: ["basherror"]
args:
- "-c"
- "echo 'hello'; sleep 50; echo 'bye'"
restartPolicy: OnFailure
backoffLimit: 3
20. 파드 생성 완료시 총 생성 개수
#yaml 에 추가
spec:
completions: 3
21. 총 생성 개수와 한번에 구동 가능한 파드 개수
#yaml 에 추가
spec:
completions: 3
parallelism: 2
22. Job controller 삭제하기
kubectl delete jobs.batch centos-job
Cronjob controller - 예약을 해서 넣어두는 대로 주기적으로 반복적으로 실행해주는 컨트롤러
Cronjob Schedule: “1 2 3 * *”
매월 3일 새벽 2시 1분에 작업 실행 요청
“0 3 * * 1-5”
주중 새벽3시에 작업 실행 요청/ 주말 – 0,6
“* * * * *” 매분마다
“ */5 * * * *” 5분마다
“* */2 * * *” 2시간마다
Minutes (0~59)
Hours (0~23)
Day of the month ( 1~31)
Month (1~12)
Day of the week (0~6)
23. CronJob controller 생성하기
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob
spec:
schedule: "* * * * *"
startingDeadlineSeconds: 300
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- echo hello; sleep 50; echo bye
restartPolicy: Never
24. CronJob 생성 총 개수 확인하기
kubectl get cronjobs.batch -o yaml
# successfulJobHistoryLimit: 개수
25. CronJob 삭제하기
kubectl delete cronjobs.batch cronjob
'IT' 카테고리의 다른 글
MSA ( MicroServices Architecture ) 란? (0) | 2022.08.11 |
---|---|
머신러닝 (Machine Learning) 개념과 알고리즘 종류 (0) | 2022.08.07 |
클라우드 IaaS,PaaS,SaaS 개념과 트렌드 (0) | 2022.08.06 |
[TED] AI 와 우리의 미래 | How AI can save our humanity (0) | 2022.08.04 |
쿠버네티스 kubernetes 기본 명령어 (0) | 2022.08.02 |