k8s是负责自动化运维管理多个Docker程序的集群。相信大家对docker容器已经不陌生,在此不过多赘述。
由于k8s部署较为复杂,对新手比较不友好
Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。
Pod,英文原意为豆荚。在k8s中就想一个豆荚一样包含着一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。通过pod环境,使得这组容器对于外界相对独立。
pod在k8s里可以直接被视为一个实体。Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod 所建模的是特定于应用的 “逻辑主机”,其中包含一个或多个应用容器, 这些容器相对紧密地耦合在一起。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。
下面是一个最简单的pod实例,通过simple-pod.ymal文件来描述它。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
在这个实例里面,pod以nginx1.14.2版本的镜像为基础创建了一个nginx容器
可以通过kubectl apply -f simple-pod.ymal创建这个pod,并通过kubectl get pods查看它。
然而,Pod 通常不是直接创建的,而是使用工作负载资源创建的。
在k8s中,能够直接的创建管理pod的有job,deployment,rs,rc等。这里我们先介绍job。
以下为k8s中官方文档对pod的解释
Job 会创建一个或者多个 Pod,并将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。 随着 Pod 成功结束,Job 跟踪记录成功完成的 Pod 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pod。 挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。
一种简单的使用场景下,你会创建一个 Job 对象以便以一种可靠的方式运行某 Pod 直到完成。 当第一个 Pod 失败或者被删除(比如因为节点硬件失效或者重启)时,Job 对象会启动一个新的 Pod。
你也可以使用 Job 以并行的方式运行多个 Pod。
这是一个最简单的job配置文件
apiVersion: batch/v1
kind: Job
metadata:
name: hello
spec:
template:
# 这里是 Pod 模板
spec:
containers:
- name: hello
image: busybox:1.28
command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']
restartPolicy: OnFailure
# 以上为 Pod 模板
他按照其中的pod模板管理生成了一个执行了输出任务
同样的,通过kubectl apply 来运行它

可以通过kubectl describe检查 Job 的状态

要查看 Job 对应的已完成的 Pod,可以执行kubectl get pods

要以机器可读的方式列举隶属于某 Job 的全部 Pod,你可以使用类似下面这条命令:
pods=$(kubectl get pods --selector=job-name=hello --output=jsonpath='{.items[*].metadata.name}')
echo $pods
查看其中一个 Pod 的标准输出:
kubectl logs $pods
输出结果为:

这样,就正式宣告踏入k8s的大门了
浙公网安备 33010602011771号