Kubernetes(K8S) 工作

  • Kubernetes 工作

    一项工作的主要功能是创建一个或多个Pod,并跟踪有关Pod成功的信息。他们确保指定数量的Pod成功完成。当成功完成指定数量的Pod运行后,该作业将视为已完成。
  • 创建工作

    使用以下命令创建作业-
    
    apiVersion: v1
    kind: Job ------------------------> 1
    metadata:
       name: py
       spec:
       template:
          metadata
          name: py -------> 2
          spec:
             containers:
                - name: py ------------------------> 3
                image: python----------> 4
                command: ["python", "SUCCESS"]
                restartPocliy: Never --------> 5
    
    在上面的代码中,我们定义了-
    • kind: Job → 我们将种类定义为作业,它将告诉kubectl所使用的yaml文件用于创建作业类型容器。
    • name: py → 这是我们正在使用的模板的名称,规范定义了该模板。
    • name: py → 我们在容器规范下给了一个名称py,这有助于识别将要从中创建的Pod。
    • image: python → 我们将要拉出的图像,以创建将在容器内运行的容器。
    • restartPolicy:Never → 此映像重新启动的条件为“从不”,这意味着如果容器被杀死或为假,则它将不会自行重启。
    我们将使用以下带有yaml的命令创建作业,该命令以名称py.yaml保存。
    
    $ kubectl create –f py.yaml
    
    上面的命令将创建一个作业。如果要检查作业的状态,请使用以下命令。
    
    $ kubectl describe jobs/py
    
    上面的命令将创建一个作业。如果要检查作业的状态,请使用以下命令。
  • 预定工作

    Kubernetes中的计划作业使用Cronetes,后者将Kubernetes的工作并在Kubernetes集群中启动。
    • 计划作业将在指定的时间点运行pod。
    • 将为其创建一个仿冒作业,该作业会自动调用自身。
    – 1.4版支持计划作业的功能,并且在启动API服务器时传递–runtime-config = batch/v2alpha1来打开betch/v2alpha1 API 。
    我们将使用与创建作业并使其成为计划作业相同的Yaml。
    
    apiVersion: v1
    kind: Job
    metadata:
       name: py
    spec:
       schedule: h/30 * * * * ? -------------------> 1
       template:
          metadata
             name: py
          spec:
             containers:
             - name: py
             image: python
             args:
    /bin/sh -------> 2
    -c
    ps –eaf ------------> 3
    restartPocliy: OnFailure
    
    在上面的代码中,我们定义了-
    • schedule:h / 30 * * * *? → 计划每30分钟运行一次作业。
    • /bin/sh:这将使用/bin/sh输入到容器中
    • ps –eaf → 将在机器上运行ps -eaf命令,并列出容器内所有正在运行的进程。
    当我们尝试在指定的时间点构建和运行一组任务然后完成该过程时,此计划作业概念非常有用。