Linux:Kubernetes(k8s)——基础理论笔记(1)

我笔记来源的图片以及共享至GitHub,本章纯理论。这是k8s中部分的基础理论

👇

KALItarro/k8spdf: 这个里面只有一个pdf文件 (github.com)https://github.com/KALItarro/k8spdf👆


什么是kubernetes

kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供应用部署,规划,更新,维护的一种机制。就是用于管理容器化平台的一个应用


kubernetes为什么还叫k8s

kubernetes这个名字起源于希腊语,意为"舵手"或者"飞行员"。k8s这个缩写是以为开头字母 "k" 到最后一个字母 "s" 中间包含了8个字母,所以简称为k8s了


他的来自哪里

他是Google的一个开源项目,结合了社区中最优秀的想法和实践


为什么需要k8s

更加方便的对容器进行管理更加快捷


k8s的特点

自我修复,弹性伸缩,自动部署和回滚,服务发现和负载均衡,机密和配置管理,存储编排,批处理


api接口

在k8s中所有操作都是进入到api中,再由api接口进行分配


相关组件

(官方并没有明确的规定,这个是来自网络上以及大家日常进行的归类)
控制面板组件

节点组件

附加组件


控制面板组件(核心)(master)

操作客户端的两大途径:kuberctl , dashboard

api-server:接口服务,基于rest风格开发的k8s的接口服务
kubecontroller-manager:控制器管理器,管理各个类型的控制器针对k8s中的各种资源进行管理
cloud-controller-manager:云控制管理,第三方云平台提供的控制器api对接管理功能
kuber-scheduler:调度器,负责将pod 基于一定算法,将其调用到更合适的节点服务器上
etcd :理解为k8s的数据库,键值类型存储的分布式数据库提供了基于rast算法实现自主的集群高可用 (老版本:基于内存,新版:持久化储存)


节点组件(node)

kubelet:负责pod的生命周期,存储,网络
kube-proxy:网络代理,负责service的服务发现负载均衡(4层负载)
container-runtime:容器运行时环境:docker,containerd CRI-O
pod:pod里面至少有一个容器,可以有多个pod


附加组件

kube-dns:为整个集群提供dns服务
ingree controller :为服务提供外网入口
heapster:提供GUI
federation:提供跨可用区的集群
fiuentd-elasticsearch:提供集群日志采集,存储与查询


分层架构

|------|
| 生态系统 |
| 接口层 |
| 管理层 |
| 应用层 |
| 核心层 |


服务的分类

如何区分有状态和无状态,如再部署个同样的如再部署个同样的节点,同样访问会不会因为数据等本地原因引起无法访问,超时,数据丢失等

无状态应用

无状态应用的特点:不会对本地环境产生任何依赖,不会存储数据到本地磁盘,例如nginx代理 , apche等
优点:对客户端透明,无需依赖关系,可以高效的实现扩容迁移
缺点:不能存储数据,需要额外的数据服务支撑

有状态应用

有状态的特点:会对本地环境产生依赖,储存数据到本地磁盘,例如:mysql,redis,mongodb等
优点:可以独立存储数据,实现数据管理
缺点:集群环境下需要实现主从,数据同步,备份,水平扩容复杂

总之一句话

存储数据的是有状态

不存储数据的是无状态


资源和对象

k8s中所有内容都被抽象为"资源" ,如 pod service node 等都是资源,对象就是资源的实例,是持久化的实体,如某个具体的pod,某个具体的node ,k8s使用这些,实体去表示整个集群的状态


对象规约和状态

规约------规格,希望对象所具有的特征,通过spec ,他是必须的,当创建对象时,必须提供对象的规约
状态------表示对象的实际状态,该属性为k8s自己维护,k8s会通过一系列的控制器对对应对象进行管理,让对象尽可能的让实际与期望状态重合


资源分类

元空间,集群,命名空间 (三大类,但是不止这三个)
元空间:对于资源的元数据描述,每一个资源都可以使用元空间的数据
集群: 作用与集群之上,集群下的所有资源都可以共享使用
命名空间:作用于命名空间之上,通常只能在该命名空间范围内使用


什么是pod

pod是一个容器组,里面至少一个容器,pod的底层有一个pause容器,其他的容器都是通过这个底层容器之上创建
pod理解为容器组,最小的部署单元
一般情况下一个pod里面只包含一个应用程序容器
pod里面是容器,但是里面可以各种品牌的容器,但建议是一个pod里面放一个容器


副本

基于一个对象创建出来的对象就是副本,一个pod可以被复制多份,每一份都是副本


控制器

通常包含一个名为 "replicas" 的属性 ,repclica则指定了特定的pod的副本数量
控制器里定义了很多描述对象的参数,可以理解为pod之上的pod

相关推荐
何陈陈10 分钟前
【Linux】线程池
linux·服务器·开发语言·c++
S hh12 分钟前
【Linux 】文件描述符fd、重定向、缓冲区(超详解)
linux·运维·服务器
DuoRuaiMiFa12 分钟前
Linux系统性能调优实战指南
linux
憧憬一下14 分钟前
线程池的实现和讲解:解决多线程并发服务器创建销毁线程消耗过大的问题
linux·线程池·c/c++·嵌入式linux
朝九晚五ฺ1 小时前
【Linux探索学习】第三弹——Linux的基础指令(下)——开启新篇章的大门
linux·运维·学习
肥or胖1 小时前
【MySQL】索引
linux·数据库·mysql
妍妍的宝贝1 小时前
k8s 中的金丝雀发布(灰度发布)
云原生·容器·kubernetes
王俊山IT2 小时前
C++学习笔记----8、掌握类与对象(五)---- 嵌套类与类中枚举
开发语言·c++·笔记·学习
卓琢2 小时前
(九)Shell 脚本(四):正则表达式、sed 和 awk 详解
linux·mysql·正则表达式
小码狐3 小时前
并查集【数据结构与算法】【C语言版-笔记】
数据结构·笔记·并查集·c语言版