K8S相关核心概念

个人笔记:

要弄明白k8s的细节,需要知道k8s是个什么东西。它的主要功能,就是容器的调度--也就是把部署实例,根据整体资源的使用状况,部署到任何地方

注意任何这两个字,预示着你并不能够通过常规的IP、端口方式访问部署的实例。复杂性由此而生。 我们学k8s,就要看它要调度哪些资源。以传统的感觉来看,无非就是cpu、内存、网络、io等。在了解怎么对这些资源调度之前,先要搞懂什么叫Pod,这可是k8s的核心概念之一。 搞不懂Pod,就没法玩k8s。

1、K8S怎么发展来的:

在过去,多数的应用都是大型单体应用,以单个进程或几个进程的方式,运行
于几台服务器之上。这些应用的发布周期长,而且迭代也不频繁。每个发布周期结
束前, 开发者会把应用程序打包后交付给运维团队,运维人员再处理部署、监控事直,
并且在硬件发生故障时于动迁移应用。
今天, 大型单体应用正被逐渐分解成小的、可独立运行的组件,我们称之为微
服务。微服务彼此之间解耦, 所以它们可以被独立开发、部署、升级、伸缩。这使
得我们可以对每一个微服务实现快速迭代, 并且迭代的速度可以和市场需求变化的
速度保持一致。
但是, 随着部署组件的增多和数据中心的增长,配置、管理并保持系统的
正常运行变得越来越困难。如果我们想要获得足够高的资源利用率并降低硬件成
本,把组件部署在什么地方变得越来越难以决策。手动做所有的事情,显然不太可行。
我们需要一些自动化的措施,包括自动调度、配置、监管和故障处理。这正是
Kubernetes 的用武之地。
Kubernetes 使开发者可以自主部署应用,并且控制部署的频率,完全脱离运维
团队的帮助。Kubemetes 同时能让运维团队监控整个系统,并且在硬件故障时重新
调度应用。系统管理员的工作重心,从监管应用转移到了监管Kubernetes ,以及剩
余的系统资源,因为Kubernetes 会帮助监管所有的应用。

2、Pod pod是k8s调度的最小单元,包含一个或者多个容器(这里的容器你可以暂时认为是docker)。 Pod拥有一个唯一的IP地址,在包含多个容器的时候,依然是拥有一个IP地址,它是怎么办到的呢? xjjdog之前写过两篇Docker原理的文章,指出其中两个使用到的底层技术,就是namespace和cgroup,k8s在使用多个容器的时候,用到的就是共享namespace,这样Pod里的容器就可以通过localhost通信了,就像两个进程一样。同理的,Pod 可以挂载多个共享的存储卷(Volume),这时内部的各个容器就可以访问共享的 Volume 进行数据的读写。

3、微服务的扩容:
面向单体系统,扩容针对的是整个系统,而面向微服务架构,扩容却只需要针
对单个服务,这意味着你可以选择仅扩容那些需要更多资源的服务而保持其他的服
务仍然维持在原来的规模。如图1.2 所示,三种组件都被复制了多个,并以多进程
的方式部署在不同的服务器上,而另外的组件只能以单体进程应用运行。当单体应
用因为其中一部分无法扩容而整体被限制扩容时,可以把应用拆分成多个微服务,
将那些能进行扩容的组件进行水平扩展,不能进行扩容的组件进行垂直扩展。

4、Kubernetes 的核心功能
图1.8 展示了一幅最简单的Kubernetes 系统图。整个系统由一个主节点和若干
个工作节点组成。开发者把一个应用列表提交到主节点, Kubernetes 会将它们部署
到集群的工作节点。组件被部署在哪个节点对于开发者和系统管理员来说都不用
关心。

5、 kubernetes概念

**Master**:集群控制节点,每个集群需要至少一个master节点负责集群的管控

**Node**:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行

**Pod**:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器

**Controller**:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等

**Service**:pod对外服务的统一入口,下面可以维护者同一类的多个pod

**Label**:标签,用于对pod进行分类,同一类pod会拥有相同的标签

**NameSpace**:命名空间,用来隔离pod的运行环境

6、简单部署k8s应用:

部署应用程序最简单的方式是使用kubectl run 命令,该命令可以创建所
有必要的组件而无需JSON 或YAML 文件

7、从大到小依次是:集群、节点、pod、容器,其中节点就是一个物理机、pod是k8s管理的最小单位,容器是pod的组件。目前如果要使用k8s的话,可以借助一些开源系统

Pod(Pods):Pod 是 Kubernetes 的基本单位。它是一组容器的集合,这些容器通常一起工作来实现一个应用程序或者一组相关的服务。
Pod 在同一个节点上运行,它们可以共享一些网络和存储资源,以便容器之间能够相互通信。

Node(Nodes):节点是一台物理机器或虚拟机,它们用于运行你的容器化应用程序。
每个节点都有一些计算、存储和网络资源,可以用来运行一个或多个 Pod。
在 Kubernetes 中,节点可以是本地机器、云服务器或虚拟机等。

Container(Containers):容器是一个轻量级、可移植、自包含的软件单元。
它包含了应用程序及其依赖项,并可以在不同的计算机上运行。
Docker 是 Kubernetes 最常用的容器技术之一。

Cluster(Clusters):集群是由一组节点组成的集合,它们一起工作来管理和运行你的容器化应用程序。
集群中的节点可以分布在不同的物理机器或虚拟机上。Kubernetes 管理集群中的资源,
负责调度容器,以确保应用程序在集群中的所有节点上都能高效运行。

 

8、

9、

10、

11、

12、

13

参考链接:

图解 K8s 核心概念和术语 - 后端进阶 - 博客园 (cnblogs.com)

k8s主要概念大梳理! - 腾讯云开发者社区-腾讯云 (tencent.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值