目录
一、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三大核心组件的整体工作流程。