深入剖析Kubernetes
张磊
Kubernetes社区资深成员与项目维护者
立即订阅
21369 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (5讲)
开篇词 | 打通“容器技术”的任督二脉
免费
01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐
02 | 预习篇 · 小鲸鱼大事记(二):崭露头角
03 | 预习篇 · 小鲸鱼大事记(三):群雄并起
04 | 预习篇 · 小鲸鱼大事记(四):尘埃落定
容器技术概念入门篇 (5讲)
05 | 白话容器基础(一):从进程说开去
06 | 白话容器基础(二):隔离与限制
07 | 白话容器基础(三):深入理解容器镜像
08 | 白话容器基础(四):重新认识Docker容器
09 | 从容器到容器云:谈谈Kubernetes的本质
Kubernetes集群搭建与实践 (3讲)
10 | Kubernetes一键部署利器:kubeadm
11 | 从0到1:搭建一个完整的Kubernetes集群
12 | 牛刀小试:我的第一个容器化应用
容器编排与Kubernetes作业管理 (15讲)
13 | 为什么我们需要Pod?
14 | 深入解析Pod对象(一):基本概念
15 | 深入解析Pod对象(二):使用进阶
16 | 编排其实很简单:谈谈“控制器”模型
17 | 经典PaaS的记忆:作业副本与水平扩展
18 | 深入理解StatefulSet(一):拓扑状态
19 | 深入理解StatefulSet(二):存储状态
20 | 深入理解StatefulSet(三):有状态应用实践
21 | 容器化守护进程的意义:DaemonSet
22 | 撬动离线业务:Job与CronJob
23 | 声明式API与Kubernetes编程范式
24 | 深入解析声明式API(一):API对象的奥秘
25 | 深入解析声明式API(二):编写自定义控制器
26 | 基于角色的权限控制:RBAC
27 | 聪明的微创新:Operator工作原理解读
Kubernetes容器持久化存储 (4讲)
28 | PV、PVC、StorageClass,这些到底在说啥?
29 | PV、PVC体系是不是多此一举?从本地持久化卷谈起
30 | 编写自己的存储插件:FlexVolume与CSI
31 | 容器存储实践:CSI插件编写指南
Kubernetes容器网络 (8讲)
32 | 浅谈容器网络
33 | 深入解析容器跨主机网络
34 | Kubernetes网络模型与CNI网络插件
35 | 解读Kubernetes三层网络方案
36 | 为什么说Kubernetes只有soft multi-tenancy?
37 | 找到容器不容易:Service、DNS与服务发现
38 | 从外界连通Service与Service调试“三板斧”
39 | 谈谈Service与Ingress
Kubernetes作业调度与资源管理 (5讲)
40 | Kubernetes的资源模型与资源管理
41 | 十字路口上的Kubernetes默认调度器
42 | Kubernetes默认调度器调度策略解析
43 | Kubernetes默认调度器的优先级与抢占机制
44 | Kubernetes GPU管理与Device Plugin机制
Kubernetes容器运行时 (3讲)
45 | 幕后英雄:SIG-Node与CRI
46 | 解读 CRI 与 容器运行时
47 | 绝不仅仅是安全:Kata Containers 与 gVisor
Kubernetes容器监控与日志 (3讲)
48 | Prometheus、Metrics Server与Kubernetes监控体系
49 | Custom Metrics: 让Auto Scaling不再“食之无味”
50 | 让日志无处可逃:容器日志收集与管理
再谈开源与社区 (1讲)
51 | 谈谈Kubernetes开源社区和未来走向
答疑文章 (1讲)
52 | 答疑:在问题中解决问题,在思考中产生思考
特别放送 (1讲)
特别放送 | 2019 年,容器技术生态会发生些什么?
结束语 (1讲)
结束语 | Kubernetes:赢开发者赢天下
特别放送 | 云原生应用管理系列 (1讲)
基于 Kubernetes 的云原生应用管理,到底应该怎么做?
深入剖析Kubernetes
登录|注册

14 | 深入解析Pod对象(一):基本概念

张磊 2018-09-24

你好,我是张磊。今天我和你分享的主题是:深入解析 Pod 对象之基本概念。

在上一篇文章中,我详细介绍了 Pod 这个 Kubernetes 项目中最重要的概念。而在今天这篇文章中,我会和你分享 Pod 对象的更多细节。

现在,你已经非常清楚:Pod,而不是容器,才是 Kubernetes 项目中的最小编排单位。将这个设计落实到 API 对象上,容器(Container)就成了 Pod 属性里的一个普通的字段。那么,一个很自然的问题就是:到底哪些属性属于 Pod 对象,而又有哪些属性属于 Container 呢?

要彻底理解这个问题,你就一定要牢记我在上一篇文章中提到的一个结论:Pod 扮演的是传统部署环境里“虚拟机”的角色。这样的设计,是为了使用户从传统环境(虚拟机环境)向 Kubernetes(容器环境)的迁移,更加平滑。

而如果你能把 Pod 看成传统环境里的“机器”、把容器看作是运行在这个“机器”里的“用户程序”,那么很多关于 Pod 对象的设计就非常容易理解了。

比如,凡是调度、网络、存储,以及安全相关的属性,基本上是 Pod 级别的。

这些属性的共同特征是,它们描述的是“机器”这个整体,而不是里面运行的“程序”。比如,配置这个“机器”的网卡(即:Pod 的网络定义),配置这个“机器”的磁盘(即:Pod 的存储定义),配置这个“机器”的防火墙(即:Pod 的安全定义)。更不用说,这台“机器”运行在哪个服务器之上(即:Pod 的调度)。

© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入剖析Kubernetes》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(55)

  • blackpiglet
    对于 Pod 状态是 Ready,实际上不能提供服务的情况能想到几个例子:
    1. 程序本身有 bug,本来应该返回 200,但因为代码问题,返回的是500;
    2. 程序因为内存问题,已经僵死,但进程还在,但无响应;
    3. Dockerfile 写的不规范,应用程序不是主进程,那么主进程出了什么问题都无法发现;
    4. 程序出现死循环。

    作者回复: 课代表来了

    2018-09-24
    57
  • Jeff.W
    POD的直议是豆荚,豆荚中的一个或者多个豆属于同一个家庭,共享一个物理豆荚(可以共享调度、网络、存储,以及安全),每个豆虽然有自己的空间,但是由于之间的缝隙,可以近距离无缝沟通(Linux Namespace相关的属性)。
    2018-10-12
    40
  • 龙坤
    你好,我进入shell容器,然后执行ps ax,跟例子的结果不一样。例子代码也一样,添加了shareProcessNamespace: true了,为什么不行呢,请问可能出现的原因在哪里
    / # ps
    PID USER TIME COMMAND
        1 root 0:00 sh
       10 root 0:00 ps

    2018-09-26
    1
    36
  • 安排
    你好,我进入shell容器,然后执行ps ax,跟例子的结果不一样。例子代码也一样,添加了shareProcessNamespace: true了,为什么不行呢,请问可能出现的原因在哪里
    / # ps
    PID USER TIME COMMAND
    1 root 0:00 sh
    10 root 0:00 ps

    请问怎么开启sharepid功能呢?

    作者回复: apiserver 加—feature-gates=PodShareProcessNamespace=true 1.11后已经默认开启了

    2018-10-05
    5
  • asdf100
    本地测试的进入shell容器后执行ps ax,跟例子的结果不一样。没有看到nginx窗口里的nginx进程信息,为什么,我看也有人遇到这个问题.
    / # ps
    PID USER TIME COMMAND
    1 root 0:00 sh
    10 root 0:00 ps

    作者回复: 你看看sharepid功能开启了没

    2018-09-30
    4
  • 姜戈
    通过node selector将任务调度到了woker1 成功运行之后 再修改worker1的label, 任务会重新调度吗?

    作者回复: 不会

    2018-09-25
    4
  • 杨孔来
    老师,如果pod中的image更新了(比如 通过jenkins发布了新版本),我想通过重启pod,获取最新的image,有什么命令,可以优雅的重启pod,而不影响当前pod提供的业务吗

    作者回复: 不是讲了prestop hook了?

    2018-09-25
    4
  • 混沌渺无极
    各位,中秋节好。
    如果entrypoint是一个一直运行的命令,那postStart会执行吗?还是启动一个协程成执行entrypoint,然后再运行一个协程执行这个postStart,所以这两个命令的执行状态是独立的,没有真正的先后关系。

    作者回复: 文中不是已经解释了?当然会执行,不管entrypoint。

    2018-09-24
    3
  • pytimer
    老师,问一下,我看pod.status.phase是running,但是Ready是false,如果我想判断pod状态,要怎么做

    作者回复: 看events

    2018-09-24
    3
  • 追风
    作者的那句评论。先让让子弹飞一会,让我看出了作者决胜千里之外的眼界。哈哈哈
    2019-01-01
    2
  • 王天明
    张老师,有一个问题,在使用kubeadm安装后,我查看etc与apiserver的信息,发现他们俩的ip都是宿主机内网IP,同时在apiserver中有关etc的地址写的是127.0.0.1,很是纳闷,又重要找到这节课程,是因为作了如下设置了吗?
    hostNetwork: true
    hostIPC: true
    hostPID: true
    2018-12-12
    2
  • 细雨
    问一下老师,infra 网络的镜像为什么取名字叫 pause 呀,难道它一直处于“暂停状态”吗?

    作者回复: 对啊

    2018-12-03
    2
  • 短笛
    Pod 的意思我理解应该是指 a small herd or school of marine animals, especially whales 而不是豆荚,为什么是鲸群呢?因为 Docker 的 Logo 啊 😂
    2018-11-21
    2
  • 两两
    pod runing好理解,但k8s怎么知道容器runing呢,通过什么标准判断?应用死循环,k8s怎么能感知?

    作者回复: liveness和readiness啥区别?

    2018-09-26
    2
  • hexinzhe
    比较想要知道优雅停机方面的更详细内容,比如说terminationgraceperiodseconds与prestop之间的关系,两者怎么用

    作者回复: 前者就是sig term的超时时间。后者是要你自己编写逻辑处理的。

    2018-09-25
    2
  • XThundering
    文章中有处有问题:"ImagePullPolicy 的值默认是 Always,即..." 这部分和官方文档与实际情况不一致。
    在官方文档中提到"The default pull policy is IfNotPresent",我这边在使用中发现的也是这样子的~
    附一下官方文档链接:https://kubernetes.io/docs/concepts/containers/images/

    作者回复: 最新版本才改的呢

    2019-01-17
    1
  • 橄榄树
    老师 和你同样的版本为什么shareProcessNamespace不起作用呢?
    2018-12-22
    1
  • 陆培尔
    关于pod还有一事请教,之前老师说过pod所有进出流量都会经pause这个根容器,那么是否可以这样理解,实现service mesh的最佳方式是扩展这个根容器的功能来做流量控制和路由,这比再注入一个envoy要更加底层,更加原生?

    作者回复: 当然不是。pause和sidecar没有任何区别。

    2018-10-28
    1
  • 北卡
    只要容器没有down掉,pod就会处于running状态。pod只会监控到容器的状态,但不会监控容器里面程序的运行状态。如果程序处于死循环,或者其他bug状态,但并没有异常退出,此刻容器还是会处于存活状态,但实际上程序已经不能工作了。
    日常使用的感受是这样的,不知道对不。
    2018-09-27
    1
  • 徐海浪
    以前我对容器的认识还不深,竟然用tail -f Catalina.out作为前台进程,这样即使tomcat进程挂掉,容器还是正在运行。应用不可用tomcat进程还在经常会遇到,比如内存溢出,或者应用依赖的数据库等外部系统动荡导致应用不正常。怎么在应用的角度来决定容器是否应该退出?应用提供一个健康检查url,跑前台shell定期检查该url,状态不对则shell退出,从而容器退出。

    作者回复: 吃一堑长一智

    2018-09-26
    4
    1
收起评论
55
返回
顶部