文档章节

kubernetes资源--pod和job

l
 lykops
发布于 2017/08/04 09:04
字数 1280
阅读 137
收藏 1

pod

Pod是K8S的最小操作单元,一个Pod可以由一个或多个容器组成;整个K8S系统都是围绕着Pod展开的,比如如何部署运行Pod、如何保证Pod的数量、如何访问Pod等。

特点

Pod是能够被创建、调度和管理的最小单元;

每个Pod都有一个独立的IP;

一个Pod由一个或多个容器构成,并共享所有资源,主要包括:PID、Network、IPC、UTS、共享存储等;Pod所有容器在同一个Node上;

容器生命周期管理;

对资源使用进行限制,resources(requests、limits);

对容器进行探测:livenessProbe;

集群内的Pod之间都可以任意访问,这一般是通过一个二层网络来实现的。

Pod与容器

在Docker中,容器是最小的处理单元,增删改查的对象是容器,容器是一种虚拟化技术,容器之间是隔离的,隔离是基于Linux Namespace实现的。

而在K8S中,Pod包含一个或者多个相关的容器,Pod可以认为是容器的一种延伸扩展,一个Pod也是一个隔离体,而Pod内部包含的一组容器又是共享的(包括PID、Network、IPC、UTS)。除此之外,Pod中的容器可以访问共同的数据卷来实现文件系统的共享。

Pod生命周期

Pod被分配到一个Node上后,就不会离开这个Node,直到被删除。当某个Pod失败,首先会被K8S清理掉,之后将会在其它机器上(或本机)重建Pod,重建后Pod的ID发生变化,那将会是一个新的Pod。所以,K8S中Pod的迁移,实际指的是在新Node上重建Pod。

生命周期回调函数:PostStart(容器创建成功后调用该回调函数)、PreStop(在容器被终止前调用该回调函数)。以下示例中,定义了一个Pod,包含一个JAVA的web应用容器,其中设置了PostStart和PreStop回调函数。即在容器创建成功后,复制/sample.war到/app文件夹中。而在容器终止之前,发送HTTP请求到http://monitor.com:8080/waring,即向监控系统发送警告。

一pod多容器

Pod主要是在容器化环境中建立一个面向应用的“逻辑主机”模型,它可以包含一个或多个相互间紧密联系的容器。当其中任一容器消失时,该节点上的Pod也随之被删除。

一pod多容器,让多个同应用的单一容器整合到一个类虚拟机中,使其所有容器共用一个vm的资源,提高耦合度,从而方便副本的复制,提高整体的可用性。

一pod多容器的优势:

同个Pod下的容器之间能更方便的共享数据和通信使用相同的网络命名空间、IP地址和端口区间,相互之间能通过localhost来发现和通信。

在同个Pod内运行的容器共享存储空间(如果设置),存储卷内的数据不会在容器重启后丢失,同时能被同Pod下别的容器读取。

相比原生的容器接口,Pod通过提供更高层次的抽象,简化了应用的部署和管理,不同容器提供不同服务。Pod就像一个管理横向部署的单元,主机托管、资源共享、协调复制和依赖管理都可以自动处理。

yaml文件格式请见http://blog.csdn.net/liyingke112/article/details/76155428

Job

在有些场景下,是想要运行一些容器执行某种特定的任务,任务一旦执行完成,容器也就没有存在的必要了。在这种场景下,创建pod就显得不那么合适。于是就是了Job,Job指的就是那些一次性任务。通过Job运行一个容器,当其任务执行完以后,就自动退出,集群也不再重新将其唤醒。

从程序的运行形态上来区分,可以将Pod分为两类:长时运行服务(jboss、mysql等)和一次性任务(数据计算、测试)。RC创建的Pod都是长时运行的服务,Job多用于执行一次性任务、批处理工作等,执行完成后便会停止(status.phase变为Succeeded)。

在Job的定义中,restartPolicy(重启策略)只能是Never和OnFailure。

OnFailure(当容器异常终止退出时重启):在出现故障时其内部重启容器,而不是创建。

Never(从不重启):会在出现故障时创建新的,且故障job不会消失。


设置超时:job执行超时时间可以通过spec.activeDeadlineSeconds来设置,超过指定时间未完成的job会以DeadlineExceeded原因停止

apiVersion: v1

kind: Job

metadata:

 labels:

   name: test-job

 name: test-job

spec:

 template:

   metadata:

     name: test-job

   spec:

     containers:

       - name: test-job

         image: web:apache

         command:

           - sleep

           - 300


    在v1.5无法实现,使用pod来代替

apiVersion: v1

kind: Pod

metadata:

 labels:

   app: container1

   version: apache

 namespace: default

 name: container1

spec:

 containers:

  -args:

    -"30"

   command:

    -sleep

   image: web:apache

    name: container1

 restartPolicy: OnFailure #或者Never


本文转载自:http://blog.csdn.net/liyingke112/article/details/76549203

共有 人打赏支持
l
粉丝 2
博文 297
码字总数 7445
作品 2
深圳
运维
私信 提问
【读书笔记】Cronjob原理及源码分析

原文链接:https://mp.weixin.qq.com/s?biz=MzI0NjI4MDg5MQ==&mid=2715291842&idx=1&sn=e605f9b4099d946f94ca6783a8e4a6f6 背景: CronJob是Kubernetes提供的定时任务功能,CronJob可以根据你......

猫猫maomao
2018/06/15
0
0
Kubernetes 1.3 current and future

本文讨论 K8S 1.3 的一些新功能,以及正在进行中的功能。读者应该对 kubernetes 的基本结构已经有所了解。 支持更多类型的应用 1 Init container Init container 是1.3 中的 alpha feature,...

Caicloud
2016/08/01
34
0
零基础入门│带你理解Kubernetes

条分缕析带你充分理解Kubernetes的各个细节与部分:它是什么,它如何解决容器编排问题,它包含哪些你必须掌握的关键对象,以及如何快速上手部署使用Kubernetes。 容器的好处不胜枚举:一致的...

RancherLabs
2018/09/13
0
0
Kubernetes基本概念(术语介绍)

在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石。 Cluster Cluster 是计算、存储和网络资源的集合,Kubernetes 利用这些资源运行各种基于容器的应用。...

Devin
2018/06/26
0
0
k8s的job和Cron Job

版权声明:本文为博主原创文章,转载请注明来源。开发合作联系luanpenguestc@sina.com https://blog.csdn.net/luanpeng825485697/article/details/85612987 任务主要包含两种: Job负责批处理...

数据架构师
01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安装数据库 常见问题

数据库重置密码 如果MySQL数据库用户的密码设置过于简单,数据库在用户登录后会提示重置密码,并且不接受简单的密码。 提示需要重置密码: ERROR 1820 (HY000): You must reset your passwo...

狼王黄师傅
2分钟前
0
0
三种方式拿到反射的入口

public class a_1 { public static void main(String args[]) throws ClassNotFoundException { //三种方式拿到反射的入口 System.out.println(Class.forName("reflect.com.Son")); System.o......

南桥北木
13分钟前
0
0
Macbook 安装PhotoShop 总提示安装包损坏的问题

问题描述 今天在给Mac10.12安装Adobe Photoshop的时候一直提示Error The installation cannot continue as the installer file may be damaged. Download the installer file again.起初以为......

Carlyle_Lee
20分钟前
0
0
Java 帝国对 Python 的渗透能成功吗?哈哈

引子 Java 帝国已经成立20多年,经过历代国王的励精图治,可以说是地大物博,码农众多。 可是国王依然不满足,整天想着如何继续开拓疆土, 这一天晚上他又把几个重臣招来商议了。 IO大臣说:...

边鹏_尛爺鑫
今天
10
0
分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部