kubernetes Controller

4154 ワード

Kubernetes Controller


K 8 SコントローラRC、RS、Deployment等は、Webサーバ等の一般的なワークロードをPod管理するためのコントローラである.Podは、サーバ、データベース、バッチ・ジョブ、デーモン・サーバなど様々な形で存在し、それらをサポートするためのコントローラです.

RC - Replication Controllers


シード数を制御するコントローラ.サムネイルはrcで、kubectlコマンドでショートヘアとして使用されます.
rc.yaml
apiVersion: v1
kind: ReplicationController # rc 선언
metadata:
  name: rc-nginx
spec:
  replicas: 3  # pod의 개수 3개
  selector:
    app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
        
# nginx-pod를 3개로 유지하는 yaml 파일
kubectl create -f rc.yaml

こうして3つのpodを生成するコントローラを削除しない限り、生成されたpodは続行されます.
$ kubectl delete pod --all

pod完全削除コマンドを入力すると、新しく生成された3つのpodが表示されます.

RS - ReplicaSet


RSは、RCと非常に類似して、常にReflicappardセットの動作を安定させる.指定された数のパドレプリカが常に実行されていることを確認します.ただし、カスタムバンドが必要な場合や更新が必要ない場合は、RSではなく配置を使用することをお勧めします.
rs.yaml
apiVersion: apps/v1
kind: ReplicaSet # rs 선언
metadata:
  name: rs-nginx
spec:
  replicas: 3 # pod 3개 유지
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
$ kubectl create -f rs.yaml

これも同様に3つのpodを維持することを見ることができる.

Deployment


導入により、パイドとReplica Setの宣言的な更新が提供されます.
デプロイの予想状態を説明し、トラフィックコントローラを現在の状態から予想状態に調整して変更します.新しいreplicationセットを作成する1つ以上のストリームを定義したり、既存の複数のストリームを削除したりして、すべてのリソースを新しい複数のストリームに適用したりできます.
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-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

Job


Jobで1つ以上のシードを作成し、指定した数のシードが正常に終了するまでシードの再試行を続けます.シードが正常に完了した場合、正常に完了した作業を追跡します.指定された数の正常な完了に達した場合、タスクは完了します.jobを削除すると、jobによって生成されたシードは消去され、jobを一時停止すると、ジョブが回復するまでアクティブなシードが生成されます.
job.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: centos-job
spec:
  completions: 5 # 실행할 작업의 개수
  parallelism: 2 # 동시에 실행할 pod 개수
  activeDeadlineSeconds: 25
  template:
    spec:
      containers:
      - name: centos-container
        image: centos:8
        command: ["bash"]
        args:
        - "-c"
        - "echo 'Hello World'; sleep 5; echo 'Bye'"
      restartPolicy: Never
  backoffLimit: 3
  
  # 코드 설명
  # args에 있는 작업이 완료되면 Pod는 Completed가 되면서 작업을 종료하게 된다.
  # 그렇기 때문에 해당 코드는 pod를 2개씩 생성하며 생성뒤 5초가 지나면 작업이 종료되고
  # 다시 2개가 실행되고 종료된 후 마지막 1개가 실행되는 yaml 코드이다.

閉鎖された5つのクレーン.

CronJob


Cron JobはLinuxコマンドcronによく似たコントローラです.
クローンキャプチャは、バックアップやEメールの送信など、定期的に繰り返されるタスクの作成に役立ちます.さらに、クローン作成者のクラスタがアイドル状態にある場合にジョブをスケジュールするなど、特定の時間内に個別のタスクをスケジュールできます.
cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-exam
spec:
  schedule: "* * * * *"  # 매분마다 실행
  startingDeadlineSeconds: 500 # 500초가 지나도 실행이안되면 삭제
  concurrencyPolicy: Forbid # 동시실행 금지
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - echo Hello; sleep 10; echo Bye
          restartPolicy: Never
$ kubectl create -f cronjob.yaml
このコマンドは1分おきに実行され、sleep 10コマンドが終了すると終了します.