client-go入门之2:Job相关操作

连接k8s

首先要获取一个连接k8s的*kubernetes.Clientset对象,具体连接方法参考:创建连接Kubernetes集群的客户端

创建一个简单的Job

创建Job的代码:

import (
	"fmt"
	v1 "k8s.io/api/batch/v1"
	corev1 "k8s.io/api/core/v1"
	"time"
)

func CreateSimpleJob () {
	targetJob := &v1.Job{}
	targetJob.Namespace = "demo" // 所属的namespace,如果没有,需要先创建该namespace
	targetJob.Name = fmt.Sprintf("j-" + time.Now().Format("2006-01-02-15-04-05") + "-w") // job的名字,取一个合法的名字即可

	container := corev1.Container{Name:"perl-01"}
	container.Image = "perl"  // 指定容器镜像
	container.Command = []string{"perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"} // 指定启动命令
	targetJob.Spec.Template.Spec.Containers = []corev1.Container{container}

	// k8s pod默认的restartPolicy是"Always",job不支持"Always",必须改成"Never"或"OnFailure"
	targetJob.Spec.Template.Spec.RestartPolicy = corev1.RestartPolicyNever

	// GetClientSet()返回一个*kubernetes.Clientset类型的k8s客户端对象
	targetJob,err := GetClientSet().BatchV1().Jobs(targetJob.Namespace).Create(targetJob)
	if err != nil {
		fmt.Printf("%v\n", err)
	}
}

在k8s集群上查看创建出来的Job:

kubectl -n demo get jobs
NAME                                       COMPLETIONS   DURATION   AGE
j-2020-07-24-15-54-47-w                    1/1           19s        20m

查询Job的信息

查询刚刚提交的Job的信息:

jobInfo, err := GetClientSet().BatchV1().Jobs(targetJob.Namespace).Get(targetJob.Name, metav1.GetOptions{})

得到的jobInfo即包含了该Job的相关信息。

设置容器资源限制

可以为运行的容器设置资源限制,如下,为上述例子的container增加资源限制:

	container.Resources.Requests = map[corev1.ResourceName]resource.Quantity{
		corev1.ResourceCPU : resource.MustParse("1"),
		corev1.ResourceMemory : resource.MustParse("100Mi"),
	}
	container.Resources.Limits = map[corev1.ResourceName]resource.Quantity{
		corev1.ResourceCPU : resource.MustParse("2"),
		corev1.ResourceMemory : resource.MustParse("200Mi"),
	}

创建Job后查看相应的Pod信息:

kubectl -n demo get pods j-2020-07-24-16-40-52-w-qkvw6 -o yaml | grep resources -A 5
    resources:
      limits:
        cpu: "2"
        memory: 200Mi
      requests:
        cpu: "1"

可以看到成功为容器增加了资源限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值