从本文开始,将正式开始Kubernetes的核心内容学习。首先要了解的是Pod,总共大约分为六篇左右,本篇是第一篇,相信学完之后,我们会对Pod有一个整体的理解。

本文内容:

1、什么是Pod

2、Pod的特性

一、什么是Pod

Pod是Kubernetes中最基本的调度、管理单元,其他的Kubernetes对象比如各种controller、svc,都是对Pod的动态管理和使用。可以说,Pod是Kubernetes中最核心的定义,没有之一。

Kubernetes规定,每个Pod必须运行在一个Node上。Node在Kubernetes中的概念类似于物理主机,而每个Pod就是运行在物理主机上的虚拟机,这样的对比虽然不那么严谨,但有助于开始的理解。下面是它们的关系图:

上图中每个Pod中都可以有一个至多个容器,此处的容器指的就是docker中的容器(当然也支持其他的容器化技术),容器中运行的就是我们的代码。可以看出来,Kubernetes的设计者将容器与对容器的管理分开了,中间加了一层Pod来负责生命周期的管控,如果容器运行过程中由于环境异常导致Pod挂掉,则Kubernetes会创建新的Pod重新运行容器,通过分层达到更好的管控效果。

虽然一个Pod中可以运行多个容器,但通常,还是建议一个Pod同一时间只运行一个容器,分散部署可以更好的利用Pod的扩缩容能力。

二、Pod的特性

既然上面说了Pod类似于运行在宿主机上的虚拟机,那么Pod本身有什么特性呢?它和虚拟机的区别点又是什么?

先来看Pod与虚拟机的区别。在本系列的第二篇文章中,提到过docker容器与虚拟机的区别与联系,其实一个docker容器的体量是比虚拟机小的,相较而言,Pod更像虚拟机。它们都能运行多个容器,有独立的网络命名空间。最大的区别还是虚拟机有自己的操作系统。

再来看Pod本身的特性。每个Pod都有独立的Linux命名空间和linux控制组(cgroup),前者可以使每个Pod有自己的系统视图,包括文件、进程、主机名等,后者可以使每个Pod有自己的系统资源,比如CPU、内存、网络带宽等。Kubernetes会给每个Pod分配一个独立的虚拟IP,这个IP在当前Kubernetes集群中是唯一的。

下面是几个相关问题:

1、Pod中的多个容器问题及解决

对于普通的docker容器来说,每个容器都有自己的PID linux命名空间,即容器内的进程系列号是独立的,完全可能与另一个容器内的PID相同。而且每个容器都有独立的文件系统

但容器的上述特性,尤其是独立进程系列号的特性,会给一个Pod中的多个容器产生麻烦。Kubernetes是如何解决的?它通过配置docker来让一个Pod内的所有容器共享相同的linux命名空间,所以它们就有了相同进程树,并且都共享相同的主机名和网络接口。第二个特性【每个容器有独立的文件系统】,Kubernetes提供了共享文件目录来解决文件不共享的问题,共享文件在后面会进行学习。

此处还需注意,由于同一Pod的多个容器共享同一个网络命名空间,所以端口不能冲突。

2、Pod中的多容器之间以及Pod间的通讯

同一Pod中的多容器具有相同的loopback网络接口,所以可以用localhost+端口进行通信

Kubernetes的所有Pod处于同一个共享网络地址空间中,所以Pod间可以通过Pod的ip来进行访问,它们之间没有网络地址转换网关(NAT),可以像局域网一样通信。

本篇就到这里,下一篇将学习Pod的创建及使用。

傲视Kubernetes(三):Kubernetes中的Pod的更多相关文章

  1. Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署

    一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...

  2. [原]CentOS7安装Rancher2.1并部署kubernetes (三)---解决登录kubernets超时和部署测试Pod和Containter[nginx为例]

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  3. Kubernetes集群中Service的滚动更新

    Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经“全天候化”,为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足 ...

  4. 【转载】浅析从外部访问 Kubernetes 集群中应用的几种方式

    一般情况下,Kubernetes 的 Cluster Network 是属于私有网络,只能在 Cluster Network 内部才能访问部署的应用.那么如何才能将 Kubernetes 集群中的应用 ...

  5. (三)Kubernetes 快速入门

    Kubernetes的核心对象 API Server提供了RESTful风格的编程接口,其管理的资源是Kubernetes API中的端点,用于存储某种API对象的集合,例如,内置Pod资源是包含了所 ...

  6. Kubernetes集群中Jmeter对公司演示的压力测试

    6分钟阅读 背景 压力测试是评估Web应用程序性能的有效方法.此外,越来越多的Web应用程序被分解为几个微服务,每个微服务的性能可能会有所不同,因为有些是计算密集型的,而有些是IO密集型的. 基于微服 ...

  7. (转)在Kubernetes集群中使用JMeter对Company示例进行压力测试

    背景 压力测试是评估应用性能的一种有效手段.此外,越来越多的应用被拆分为多个微服务而每个微服务的性能不一,有的微服务是计算密集型,有的是IO密集型. 因此,压力测试在基于微服务架构的网络应用中扮演着越 ...

  8. Kubernetes使用节点污点和pod容忍度阻止节点调度到特定节点

    Kubernetes允许你去影响pod被调度到哪个节点.起初,只能通过在pod规范里指定节点选择器来实现,后面其他的机制逐渐加入来扩容这项功能,本章将包括这些内容. 现在要介绍的高级调度的两个特性是节 ...

  9. ingress-nginx 的使用 =》 部署在 Kubernetes 集群中的应用暴露给外部的用户使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488189&idx=1&sn=8175f067 ...

随机推荐

  1. MySQL存储索引InnoDB数据结构为什么使用B+树,而不是其他树呢?

    InnoDB的一棵B+树可以存放多少行数据? 答案:约2千万 为什么是这么多? 因为这是可以算出来的,要搞清楚这个问题,先从InnoDB索引数据结构.数据组织方式说起. 计算机在存储数据的时候,有最小 ...

  2. CTF-WEB-HCTF 2018 Warmup

    题目链接 攻防世界-Warmup 解题思路 [原题复现]HCTF 2018 Warmup(文件包含)

  3. FTP漏洞利用复现

    目录 FTP弱口令漏洞 FTP后门漏洞利用 FTP弱口令漏洞 漏洞描述 FTP弱口令或匿名登录漏洞,一般指使用FTP的用户启用了匿名登录功能,或系统口令的长度太短.复杂度不够.仅包含数字.或仅包含字母 ...

  4. 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!

    一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...

  5. python3错误AttributeError: 'TestSequenceFunctions' object has no attribute 'seq'

    对比了两段代码发现,原来是setUp要用用大写才能被正确引用. 修改后,代码运行成功.

  6. 【P1588】丢失的牛——区间dp/bfs

    (题面来自Luogu) 题目描述 FJ丢失了他的一头牛,他决定追回他的牛.已知FJ和牛在一条直线上,初始位置分别为x和y,假定牛在原地不动.FJ的行走方式很特别:他每一次可以前进一步.后退一步或者直接 ...

  7. 顺序结构(C语言基本结构)

    顺序结构 1.基本概念 语句执行的顺序与顺序程序书写的顺序一致 特点 a.程序执行的顺序和语句书写的顺序一致 b.有一个数据入口,一个数据出口 顺序结构与四则运算 顺序结构是C语言的基本结构 程序由上 ...

  8. Kafka作为分布式消息系统的系统解析

    Kafka概述 Apache Kafka由Scala和Java编写,基于生产者和消费者模型作为开源的分布式发布订阅消息系统.它提供了类似于JMS的特性,但设计上又有很大区别,它不是JMS规范的实现,如 ...

  9. GitHub 访问不顺怎么办?在线等,急

    在日常的工作生活学习中 经常会遇到无法访问 GitHub.访问不稳定等等突发情况 这不,今天群里的朋友们又双叒叕遇到了问题-- 为方便用户从 GitHub 快速备份开源仓库,稳定访问,CODING 现 ...

  10. Spring Cloud Alibaba 初体验(四) Sentinel

    一.Sentinel 下载与运行 本文使用 Sentinel 1.7.1:https://github.com/alibaba/Sentinel/releases 使用自定义端口 8089 运行 Se ...