Kubernetes入门概念
来源:互联网 发布:linux 拷贝整个文件夹 编辑:程序博客网 时间:2024/06/05 03:38
这是在k8s1.40版时的入门学习笔记。根据k8s的tutorials和user guide总结的。本文主要涉及到到k8s操作的一些基本术语概念。不涉及命令行细则。
重要概念
Master/Node
Master处理集群的活动,控制Node工作,如应用的调度,维持应用的状态,增加应用实例规模更新应用等。
Node是是一台虚拟机或者真机,主要用于完成具体的支持应用运行的任务。每个Node至少需要以下两个部分:
- 容器,负责将应用容器化,如Docker、rkt
- Kubelet,用于在k8s中Master和Node通信以及管理本机上的pod和容器的工具。
Pod
在Docker中,我们将应用部署在容器中,而在k8s中,我们还应将这些容器放在Pod中,一方面,Pod是k8s中调度的最小单位,即我们在k8s中是通过管理Pod来管理容器的,另一方面,Pod对于容器(应用)来说,扮演了逻辑主机(logical-host)的角色。此外,一个Pod中可以放置多个容器,一般的,我们会将紧耦合的应用容器放在同一个Pod中,在同一个Pod中的容器有同样的生命周期。一个Pod可能包含下面的内容:
- 一个或者多个容器,如Docker
- 共享存储部分,如Volume
- 一个集群唯一的网络地址
Label/Label Selector
Label是一个键值对,用来标识资源,如在创建Pod时,可以为其添加一个Label,在以后的部署操作中,可以通过Label Selector指明对应Label从而操作资源。
Deployment
前面说到我们通过将容器放入Pod来部署应用,可是如何设置Pod的冗余数(增加应用实例)或者更新我们的Pod(应用)呢?这就需要使用Deployment了,通常,我们是通过定义Deployment来部署、更新我们的Pods。
Service
如果我们通过Deployment部署了一些Pod,并且通过在多个不同的Pod中有一些依赖的服务,如Pod-A作为前端应用依赖Pod-B的后端应用,那么在细节上有一些值得思考的地方:
- 每个Pod都有一个IP,但是在Pod都可能是暂时的(可能被重启),如A通过IP连接B,在B重启后IP变化,A怎么办。
- 同类Pod拥有不同的IP,那么是不是需要做附在均衡?
这时候就需要Service,Service是一个抽象层,通过Label Selector将有特定Label的Pod定义成一个Service,此时,这些Pods在逻辑上隶属于同一个Service,这样的好处是,他们获得了一个固定的外部IP(相对于Service内部的Pod而言),因而这些Pod就算是重启、在新的机器上部署,只要有这个特定的Label,对外他们的IP是固定的,这就解决了问题1,对于问题2,Service是提供了一个负载均衡的功能,此外,Service还有一个服务发现的功能,当我们通过Deployment增加或者更新一个Pod时,其实就涉及到新的Pod加入到这个Service中来,这样的场景Service依然能够处理。
整体架构
本文涉及到的概念关系如下图所示,参考k8s官网,有所增加:
如图所示,k8s主要是一个用来管理集群的工具。在搭建好集群后,一般会做的事情就是,部署应用、定义服务、增加应用实例、更新应用。基本上就是,我们通过Deployment定义应用,然后Master会通过管理调度在Node节点上起一些Pod,Pod中会有Docker容器,容器中是我们真正部署的应用,然后我们需要通过设置Service来管理来定义这些Pod。在这之后,我们根据需要通过Deployment来增加应用实例或者更新应用,这个时候,因为他们都属于同一个Service(相同的Label),这之间会出现的负载均衡、服务发现的问题都会由Service替我们解决。
- Kubernetes入门概念
- kubernetes 概念和架构(入门)
- Kubernetes系列01:Kubernetes入门
- Kubernetes系列01:Kubernetes入门
- Kubernetes基础概念
- Kubernetes的几个概念
- kubernetes 概念介绍
- kubernetes 概念介绍二
- kubernetes 概念&部署
- Kubernetes核心概念总结
- Kubernetes核心概念
- Kubernetes核心概念理解
- Kubernetes核心概念总结
- Kubernetes重要概念总结
- Kubernetes核心概念总结
- kubernetes 概念总结
- Kubernetes入门整理
- Kubernetes 学习之入门
- noip2006T4 2^k进制数(组合数学+高精度)
- 使用Android Studio检测内存泄露
- 【日常被虐】【XJOI】NOIP2016提高组冲剌题1
- How to Switch the Driving Table in a Hash Join (文档 ID 171940.1)
- 排序算法
- Kubernetes入门概念
- 如何表现营销型网站的互动性?
- 服务器端socket使用流程
- 7、认识bashshell
- 谈谈Objective-C的警告
- char和varchar的区别
- 集趣(及时通讯聊天)
- while,do while循环结构
- 南邮数据结构、算法实践周基础题3(哈夫曼树及其编码)