本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。

Hi,大家好,我是 CloudDeveloper,欢迎大家和我一起学习 K8S,这是系列第 8 篇。

上篇我们简单学习了 Pod 的基础知识,本篇开始讲述一些 Pod 的高阶知识(本文只做理论的简单阐述,后面会针对每个点进行实践)。

Pod 的生命周期管理

豌豆荚自诞生之日起,便注定要经历生老病死的一生。Pod 是由容器组成的,Pod 生命周期实际上是由容器的生命周期决定的。

在整个生命周期过程中,Pod 会被定义为各种状态,如下:

这些状态包括正常状态和异常状态,当出现异常状态时,K8S 的监控机制会检测到这种异常,并执行相应的异常处理。

Pod 的监控机制

Pod 的监控主要是监控 Pod 内容器的健康状况,并进行相关的异常处理和容错管理。

当监控到某个容器异常退出或健康检查失败时,Pod 会执行重启策略,使得 Pod 内的容器健康运转。

如下记录了 Pod 的重启策略和健康检查机制:

Pod 的调度管理

K8S Master 上的 Scheduler 服务负责实现 Pod 的调度管理,Pod 是静态的,只有真正被调度到具体的节点上才能发挥它的作用。K8S 根据不同的应用场景,定义了多种不同的调度策略。这些策略可以是根据算法自动完成的,也可以是人为指定的。具体可以看下面这张导图:

笼统来看,有时候为了权衡应用场景和集群资源的需求,需要对 Pod 进行扩容和缩容,这同样属于 Pod 调度管理的范畴。

Pod 的存储管理

Pod 和容器的数据存储使用 Volume,K8S Volume 和 Docker 的 Volume 是一样的原理,都是文件系统上的一个目录,只不过在 K8S 中实现了更多的 backend driver。包括 emptyDir、hostPath、GCE Persistent Disk、NFS、Ceph 等。

Volume 提供了对各种 driver 的抽象,容器在使用 Volume 读写数据的时候不需要关心底层具体存储方式的实现,对它来说,所有类型的 Volume 都是一个目录。

当 Volume 被挂载到 Pod 中时,这个 Pod 中的容器都会共享这个 Volume,当其中的容器销毁时,Volume 中的数据也不会丢失,当 Pod 销毁时,根据不同的 driver 实现,数据也可以保存下来。

Volume 提高了 Pod 内数据的持久化管理,延长了 Pod 和容器的生命周期。

Pod 的网络管理

在 K8S 中,定义了多种资源对象,很多对象本身就是一个通信的实体,比如容器、Pod、Service、Node。

K8S 维护这多种对象之间的通信关系,比如:Pod 内容器之间的通信、Pod 与容器之间的通信、Pod 之间的通信、Pod 与 Service 之间的通信,以及外部的访问。

这些通信机制的建立离不开 K8S 建立的完善的网络模型。K8S 使用了 CNI(容器网络规范)来标准化、归一化网络模型。

第三方的厂商或开发者可以根据自身网络需求,遵从 CNI 的规范,实现各种网络方案,并以插件的形式提供给 K8S 使用。目前比较知名的网络方案有:flannel、calico、weave、canal 等。

这些网络方案各有千秋、虽然实现方式各有区别,但殊途同归,最终都是满足 K8S 中各种实体间的通信需求。

OK,本文就到这里,我们通过两篇文章大致梳理了豌豆荚从出生到死亡要面临的多种人生的关卡。跨过去了,就成熟了,希望我们都能跨过自己人生的关卡。

下文我们开始进入实践的部分。

为了给大家更多的福利,这个系列的每一篇文章我都会送一些电子书,可能有重的,也有一些新书,之前送了《K8S 指南》和《容器与容器云》,这次送一本新书《》,大家有需要的后台回复“K8S2”


我的公众号 「Linux云计算网络」(id: cloud_dev) ,号内有 10T 书籍和视频资源,后台回复 「1024」 即可领取,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。

Kubernetes 笔记 07 豌豆荚之旅(二)的更多相关文章

  1. Kubernetes 笔记 06 豌豆荚之旅(一)

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  2. Kubernetes笔记(二):了解k8s的基本组件与概念

    前文 Kubernetes笔记(一):十分钟部署一套K8s环境 介绍了如何快速搭建一个k8s系统.为了继续使用k8s来部署我们的应用,需要先对k8s中的一些基本组件与概念有个了解. Kubernete ...

  3. Kubernetes 笔记 05 yaml 配置文件详解

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  4. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

  5. 学习笔记 07 --- JUC集合

    学习笔记 07 --- JUC集合 在讲JUC集合之前我们先总结一下Java的集合框架,主要包含Collection集合和Map类.Collection集合又能够划分为LIst和Set. 1. Lis ...

  6. 机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析

    机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析 关键字:Apriori.关联规则挖掘.频繁项集作者:米仓山下时间:2018 ...

  7. Kubernetes笔记(四):详解Namespace与资源限制ResourceQuota,LimitRange

    前面我们对K8s的基本组件与概念有了个大致的印象,并且基于K8s实现了一个初步的CI/CD流程,但对里面涉及的各个对象(如Namespace, Pod, Deployment, Service, In ...

  8. Qlik Sense学习笔记之Mashup开发(二)

    date: 2019-01-26 11:28:07 updated: 2019-01-26 11:28:07 Qlik Sense学习笔记之Mashup开发(二) 1.Mobile SPA UI Fr ...

  9. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

随机推荐

  1. kafka常规及几个重要的操作命令

    1. 查看所有topic kafka-topics.sh --zookeeper hadoop3 --list 2. 创建tooic及topic的partitioner ./kafka-topics. ...

  2. Pandas常用功能总结

    1.读取.csv文件 df2 = pd.read_csv('beijingsale.csv', encoding='gb2312',index_col='id',sep='\t',header=Non ...

  3. python基础知识练习题(一)

    1.执行Python脚本的两种方式:WIN+R,cmd,命令行窗口输入:python  进入python模式输入命令行直接执行命令:编写以.py结尾的文件,写入命令行,然后运行python.exe打开 ...

  4. HDU 6437 Problem L.Videos (最大费用)【费用流】

    <题目链接> 题目大意: 一天有N个小时,有m个节目(每种节目都有类型),有k个人,连续看相同类型的节目会扣w快乐值.每一种节目有都一个播放区间[l,r].每个人同一时间只能看一个节目,看 ...

  5. 转载 CSDN 谈谈我对证券公司一些部门的理解(前、中、后台)

    谈谈我对证券公司一些部门的理解(前.中.后台) 2018年02月08日 15:11:07 unirong 阅读数:2165   文中对各大部门的分析都是从作者多年经历总结出来的有感之谈,尤其是前台的6 ...

  6. spring为什么推荐使用构造器注入?

    闲谈 ​ Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Spr ...

  7. 数据库和Content Provider

    SQLite提供了强大的SQL数据库的库文件,从而使应用程序拥有一个具备完全控制权的健壮的持久化层. Content Provider实现在应用程序内和应用程序之间存储.共享和使用结构化数据.通过将数 ...

  8. 命令行 app

    [Getting Title at 38:53](http://click.pocoo.org/5/) 其实在 实际操作中 如果参数特别多的话,最好使用配置文件来操作,比如 yaml [YAML 语言 ...

  9. REM——适合移动开发的自适应方案

    文章目录 1.什么是REM 2.REM和EM的区别 3.手机端方案的特点 4.使用JS动态调整REM 5.REM与其他单位同时存在 1.什么是REM 先来认识几个常见单位: px:像素,这个大家都知道 ...

  10. Python数据科学手册

    Python数据科学手册(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1KurSdjNWiwMac3o3iLrzBg 提取码:qogy 复制这段内容后打开百度网盘手 ...