目录

一、pod

1.1. 最小部署单元

1.2. 一组容器的集合

1.3. 共享网络

1.4. 生命周期是短暂的

二、controller

2.1. 确保预期的pod副本数量

2.2. 无状态应用部署

2.3. 有状态应用部署

2.4. 确保所有的node运行同一个pod

2.5. 一次性任务和定时任务

三、service

k8s中的核心概念大致上分为三个,分别是pod、controller和service。我们下面一一进行介绍。

一、pod

Pod是k8s的核心概念之一,搞不懂Pod,就没法玩k8s。

1.1. 最小部署单元

pod是k8s中最小部署单元。在docker中的最小部署单元是容器,而k8s中是pod。

1.2. 一组容器的集合

pod可以理解为一组容器的集合,pod里面有很多的容器。

1.3. 共享网络

一个pod中的容器是共享网络的。如果一个容器监听了80端口,另外的容器也可以监听到。如果一个容器启用了80端口,则另外的容器就不能使用80端口了。

1.4. 生命周期是短暂的

pod不是一直存在的,如果服务器重启,重新部署,则该pod就不存在了,此时会生成新的的pod。

二、controller

2.1. 确保预期的pod副本数量

2.2. 无状态应用部署

无状态应用是孤立存在的,只提供一项服务或功能,之前并未有任何约定就可以直接使用的应用。

无状态事务的典型示例是执行在线搜索,寻找您想要的答案。您在搜索引擎中输入问题,然后按 Enter。如果您的事务被意外中断或关闭,则只需重新开始即可。我们不妨将无状态事务看作一台自动售货机:一个请求对应一个响应。

2.3. 有状态应用部署

依赖于其他服务、存储等前置条件,网络ip要统一,每次都要请求相同的服务器。比如电子支付、电子邮件等。这些操作是在先前的事务背景下执行的,当前事务可能会受到先前事务的影响。正因如此,有状态应用在每次处理用户的请求时都会使用相同的服务器。

如果有状态事务被中断,其上下文和历史记录会被存储下来,这样就可以或多或少地从上次中断的地方继续。有状态应用会跟踪诸如窗口位置、设置首选项和近期活动等内容。我们可以把有状态事务视为与同一个人进行的定期对话。

2.4. 确保所有的node运行同一个pod

这个我们使用不多

2.5. 一次性任务和定时任务

一次性执行完就没了就是一次性任务,需要在一定周期内反复执行的就是定时任务。

三、service

定义一组pod的访问规则,也是pod的统一入口。

整体流程便是:

通过service统一入口进行统一访问,由controller进行创建pod。这就是k8s三大核心组件的整体工作流程。