本文首发于我的公众号 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. codeforces / project Euler 泛做

    目录 PE 15 PE 76 PE 90 PE 577 PE 97 PE 364(坑) 待做 发现这个题库,很有意思,趁着还没有学习微积分,看不了书,赶快从头开始刷,所以都是一些简单的题目,即时简单, ...

  2. 原生js触碰到底部触发函数;

    /** function __morebook(){ console.log(123) } ScrollBottom(function(){__morebook();}); **/ //如果直接写一个 ...

  3. 课堂小记---JavaScript(4)

    day11 1.正则表达式 去掉首尾的空格或者其他字符 replace方法可传入函数可分组. 以下为分组 基础正则表达式语法: /** * 正则表达式是一个对象类型 */ // 匹配字符串中的che ...

  4. Django---form表单提交数据到数据库(普通方法+Django的form类)

    目标: ①.初始form的简单应用 ②.使用Django的form组件完成新增一个帖子 方法一:普通方法 1.前端表单代码 <div> <form class="navba ...

  5. linux环境下安装tcping工具测试访问超时

    wget https://sources.voidlinux.eu/tcping-1.3.5/tcping-1.3.5.tar.gz tar zxvf tcping-1.3.5.tar.gz cd t ...

  6. 基于TensorFlow的手写中文识别(版本一)

    具体效果实现: 第一次由于设备问题所以只训练了是一些个简单的字: 第二选了23个字训练了3000在字迹清晰下能够识别: 类似于默,鼠,鼓,这类文字也能识别,由于训练数据的问题,在测试的时候应尽量写在正 ...

  7. [OC] 富文本 AttributedString 以及 用富文本解析html文本

    AttributedString   为了便于添加新属性,我们一般初始化  NSMutableAttributedString 类型的富文本. NSMutableAttributedString *a ...

  8. Android中的数据持久化机制

    Android中几种最简单但是却最通用的数据持久化技术:SharedPreference.实例状态Bundle和本地文件. Android的非确定性Activity和应用程序生存期使在会话间保留UI状 ...

  9. 我的 FPGA 学习历程(09)—— 时序逻辑入门

    讲到这篇时,组合逻辑就告一段落了,下面是一些总结: 描述组合逻辑时,always 语句中的敏感信号列表中需要列出全部的可能影响输出的变量 描述组合逻辑时,always 语句中的赋值总是使用阻塞赋值符号 ...

  10. 微信跳转技术,浏览器唤起微信,weixin://dl/business/?ticket=

    weixin://dl/business/?ticket=  到底怎么生成的?调用以下接口 weixin://dl/scan 扫一扫weixin://dl/feedback 反馈weixin://dl ...