当前位置: 首页 > news >正文

【K8s学习】

k8s的简单执行流程:
Kubernetes Master(API Server、Scheduler等组件)负责调度Pod到合适的Node上。
当Pod被调度到某个Node时,该Node上的kubelet代理会收到指令并开始执行Pod的生命周期管理任务,包括创建、监控和终止Pod中的容器。
kubelet通过调用底层容器运行时接口来管理容器,而默认情况下,这个容器运行时就是Docker。也就是说,kubelet实际上是间接控制Docker引擎来创建和管理Pod内的容器。
所以,Pod更像是Kubernetes对容器进行抽象和编排的一种方式,并不是直接“控制”Docker的。在Kubernetes生态系统下,Docker是实现容器化技术的一种具体工具,kubelet通过与Docker API交互,确保Pod中的容器按照Kubernetes的规则运行。

1、Master 主节点 与Node计算节点 (组件)

在这里插入图片描述

Master-节点包括API Server、Scheduler、Controller manager、etcd.
API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。
Scheduler负责对集群内部的资源进行调度,相当于“调度室”。
Controller manager负责管理控制器,相当于"“大总管”。
初步理解 提供api ,调度任务,mananager器,数据库
然后是Node节点。
在这里插入图片描述
Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口
Docker,不用说了,创建容器的。
Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
先理解为类似于redis的sentinel
Kube-proxy,主要负责为Pod对象提供代理。
mybatis插件 切面分页
Fluentd,主要负责日志收集、存储与查询,守护进程。
打日志
RKT
rkt运行容器,作为docker工具的替代方案。
supervisord
supervisord是一个轻量级的监控系统,用于保障kubelet和docker运行。
k8s

2、K8s对象

1.容器化应用正在运行(以及在哪些节点上)
这些应用可用的资源
关于这些应用如何运行的策略,如重新策略,升级和容错
Kubernetes对象是“record of intent”,一旦创建了对象,Kubernetes系统会确保对象存在。通过创建对象,可以有效地告诉Kubernetes系统你希望集群的工作负载是什么样的。

要使用Kubernetes对象(无论是创建,修改还是删除),都需要使用Kubernetes API。例如,当使用kubectl命令管理工具时,CLI会为提供Kubernetes API调用。你也可以直接在自己的程序中使用Kubernetes API,Kubernetes提供一个golang客户端库 (其他语言库正在开发中-如Python)。Java:k8sClient源码库

<dependency>
 <groupId>io.kubernetes</groupId>
 <artifactId>client-java</artifactId>
 <version>8.0.2</version>
 <scope>compile</scope>
</dependency>

2.描述Kubernetes对象
在Kubernetes中创建对象时,必须提供描述其所需Status的对象Spec,以及关于对象(如name)的一些基本信息。当使用Kubernetes API创建对象(直接或通过kubectl)时,该API请求必须将该信息作为JSON包含在请求body中。通常,可以将信息提供给kubectl .yaml文件,在进行API请求时,kubectl将信息转换为JSON。认证信息放在yam文件中发生的时候变为json发送
3.必填字段
对于要创建的Kubernetes对象的yaml文件,需要为以下字段设置值:
apiVersion - 创建对象的Kubernetes API 版本
kind - 要创建什么样的对象?
metadata- 具有唯一标示对象的数据,包括 name(字符串)、UID和Namespace(可选项)

3.K8s Names

Kubernetes REST API中的所有对象都用Name和UID来明确地标识。

对于非唯一用户提供的属性,Kubernetes提供labels和annotations。

1.Name
Name在一个对象中同一时间只能拥有单个Name,如果对象被删除,也可以使用相同Name创建新的对象,Name用于在资源引用URL中的对象,例如/api/v1/pods/some-name。通常情况,Kubernetes资源的Name能有最长到253个字符(包括数字字符、-和.),但某些资源可能有更具体的限制条件.

2.UIDs
UIDs是由Kubernetes生成的,在Kubernetes集群的整个生命周期中创建的每个对象都有不同的UID(即它们在空间和时间上是唯一的)。

4.K8s Labels与selecotrs

Labels选择器
与Name和UID 不同,标签不需要有唯一性。一般来说,我们期望许多对象具有相同的标签。

通过标签选择器(Labels Selectors),客户端/用户 能方便辨识出一组对象。标签选择器是kubernetes中核心的组成部分。

API目前支持两种选择器:equality-based(基于平等)和set-based(基于集合)的。
标签选择器可以由逗号分隔的多个requirements 组成。在多重需求的情况下,必须满足所有要求,因此逗号分隔符作为AND逻辑运算符。

一个为空的标签选择器(即有0个必须条件的选择器)会选择集合中的每一个对象。

一个null型标签选择器(仅对于可选的选择器字段才可能)不会返回任何对象。

注意:两个控制器的标签选择器不能在命名空间中重叠。

相关文章:

  • Docker RTMP服务器搭建与视频流推送示例(流媒体服务器tiangolo/nginx-rtmp,推流客户端ffmpeg)
  • 如何在网络爬虫中解决CAPTCHA?使用Python进行网络爬虫
  • 学习k8s的应用(三)
  • 设计模式——模板方法模式
  • Mysql的in与exits
  • 【Web】websocket应用的是哪个协议
  • 全链路压力测试:现代软件工程中的重要性
  • Maven和MyBatis框架简单实现数据库交互
  • GPT-4技术报告的解读(二)
  • haiku实现三角乘法模块
  • 说一下mysql的锁
  • Configure Virtual Serial Port Driver串口模拟器VSPD
  • 【手把手带你玩转MyBatis】基础篇:掌握事务管理,确保数据操作的原子性与一致性
  • 【JVM调优系列】如何导出堆内存文件
  • 微信小程序支付之V2支付
  • QT上位机开发(进度条操作)
  • 2024.1.14
  • 【驱动】TI AM437x(内核调试-06):网卡(PHY和MAC)、七层OSI
  • C++笔记
  • springcloud gateway动态路由
  • 青海省交通运输厅副厅长田明有接受审查调查
  • 体坛联播|博洛尼亚时隔51年再夺意杯,皇马逆转马洛卡
  • 沧州低空经济起飞:飞行汽车开启千亿赛道,通用机场布局文旅体验
  • 巴方:印度上周导弹袭击造成至少40名平民死亡
  • 人民日报评外卖平台被约谈:合法规范经营,公平有序竞争
  • 《广州大典研究》集刊发展座谈会:“广州学”的传承与创新