本文首发于我的公众号 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. 使用HttpWebRequest请求https链接时,无法访问的问题,设置ServicePointManager.SecurityProtocol安全协议

    //请求前设置一下使用的安全协议类型 System.Net if (url.StartsWith("https", StringComparison.OrdinalIgnoreCa ...

  2. C#中的 隐式与显式接口实现

    在C#中,正常情况下使用接口的实现使用的是 隐式接口实现. public interface IParent1 { void Medthod(); } public class Child : IPa ...

  3. Linux网络技术管理及进程管理

    OSI七层模型和TCP/IP四层模型 OSI七层模型:OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联 ...

  4. Net MVC使用datatables插件

    基本用法 1 - 引入js和css <link href="https://cdn.bootcss.com/datatables/1.10.19/css/dataTables.boot ...

  5. 在WINDOWS中安装使用SIGPACK(MinGW64+Sublime Text3 &Visual Studio)

    本文介绍在Windows下安装使用SigPack库,涉及Armadillo.OpenBLAS安装使用说明,最终实现对SigPack示例CPP基于MinGW64在Sublime Text3下的编译运行, ...

  6. Annotation(注解)

    注解相当于一种标记,在程序中加入注解就相当于为程序打上某种标记,没有加,则表示没有任何标记,以后,javac编译器.开发工具和其它程序可以通过反射来了解你的类及各种元素上有无何种标记,看你的程序有什么 ...

  7. 【Codeforces 321E / BZOJ 5311】【DP凸优化】【单调队列】贞鱼

    目录 题意: 输入格式 输出格式 思路: DP凸优化的部分 单调队列转移的部分 坑点 代码 题意: 有n条超级大佬贞鱼站成一行,现在你需要使用恰好k辆车把它们全都运走.要求每辆车上的贞鱼在序列中都是连 ...

  8. wamp apache 设置多端口

  9. 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装

    高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...

  10. slitaz的root密码

    可以先试试root(我这个版本就是),如果不行passwd改密码吧...