본문 바로가기

IT

쿠버네티스 kubernetes 컨트롤러 명령어

https://cloudbim.tistory.com/35

 

쿠버네티스 kubernetes 기본 명령어

1) 생성한 노드 기본정보 확인하기 kubectl get nodes 2)  생성한 노드 자세한 정보 확인하기 kubectl get nodes -o wide 3) 특정 지은 노드 full 정보 확인하기 kubectl describe node master 4) 파드 기본..

cloudbim.tistory.com

 

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