K8S的概念和基本应用

news2025/1/9 16:37:09

学习视频:Kubernetes基本概念和应用_哔哩哔哩_bilibili

零 . 架构概览

  • master节点:管理调度集群资源,一般为多节点构成,可以是物理机,也可以是虚拟机。
  • worker节点:资源的提供者,一般为多节点构成,可以是物理机,也可以是虚拟机。
  • pod:绿色部分,相当于云平台的虚拟机
  • 容器container:cpu和内存、资源的隔离单位,多节点部署,主容器+辅助容器。它共享pod的存储资源和网络栈。
  • k8s平台:解决集群资源调度的问题,将空闲的pod合理的分配到worker节点上面去。监控集群,如有节点或pod挂了,重新协调和启动pod,保证应用高可用,称为治愈。保证集群的网络,保证pod服务之间可以互通互联。

 

master节点组件构成

  • master节点:k8s集群的大脑,分布式数据库etcd,k8s集群集中的状态存储:节点,pod,发布,配置等都存储在里面。高可用部署的话,至少需要部署3个节点。
  • 所有的操作都是通过调用apiserver来实现的,可以认为是etcd的代理。
  • scheduler:负责调度决策的组件,比如:pod应该分配到那些worker里面去。
  • controller manager:保证集群状态最终一致的组件。通过apiserver 监控集群的状态,确保实际状态与预期状态一致。

worker节点组件构成

  • kubelet :worker节点的资源管理者,相当于agent角色。监听apiserver的事件,执行master下发的任务,汇报情况给APIserver等,是worker节点的小脑。
  • container runtime:结点容器资源的管理者。kubelet不直接参与动作,而是委托给container runtime。比如:启动或关闭容器,收集容器状态。在启动容器的时候,如果本地没有镜像缓存,会从docker hub 去拉取相应的镜像,缓存到本地。
  • kube-proxy:管理k8s中的服务网络的(servernetwork),当需要把服务暴露给外网的时候,需要kube-proxy代理作为转发。
  • pod:瞬息的,不固定的,ip可能会变(可变+不可变)。

K8S发布pod流程样例

流程解读如下:

1、使用kubectl命令行工具向apiserver发送一个创建一个新的replicaset 的请求。apiserver会将该资源请求先存储到etcd中。

2、controller manager 监听replicaset的 创建或修改相关的事件。接收到上一步的创建pod的一个通知。

3、controller manager比较当前集群状态和预期集群的状态,当发现不一致时,调用第一步中的创建pod的模板,在apiserver中创建预期的pod。

4、scheduler监听到apiserver创建新pod的请求,运行调度算法,选择空闲的work节点。然后通过apiserver更新创建pod的定义。把这些pod指定到具体要发布到哪些work节点上。、

注意,此时:controller manager、scheduler 只是通过apiserver更新了希望创建的集群状态,pod并没有真正创建。

5、一旦pod被分配到某个worker节点,apiserver就会通知相应节点上面的kubelet,kubelet接到通知以后,就会指示他的节点上的container runtime 去运行对应的容器。

6、container runtime就会开始下载镜像,启动容器。同时kubelet开始监控容器的运行。

K8S总体架构

 

小结各个组件的作用

 虚拟机抽象-pod

  • 容器 = 应用 + 操作系统,是一种资源隔离抽象;
  • pod 是容器的包装,是一种虚拟机抽象;
  • k8s 是管理pod虚拟机的数据中心抽象; 

https://kubernetes.io/docs/concepts/workloads/pods/pod/

  • 一般是一个pod对应一个容器,但也有一对多的情况,一个主,一个辅助。

https://hub.docker.com/r/spring2go/spring-petclinic/tags

发布pod:按照要求书写发布规范。

Pod | Kubernetes

如何访问pod?

针对测试环境:
端口转发功能开启外部访问:
kubectl port-forword petclinic 8080:8080 (主机端口:pod端口)

nodeport service

  • 传统数据中心反向代理原理

通过在数据中心的网络边界部署反向代理(proxy service)将内网资源暴露出去,使得公网可访问。

反向代理2大作用:

反向路由 + 负载均衡

  • k8s的反向代理

label:大标签机制,键值对

selector:路由选择机制,pod一致性。

service:负载均衡

添加一个:labels: 不然无法访问。

 K8S反向代理-service

传统反向代理

配置反向代理将web应用暴露出去。

反向代理作用:4层/7层

1、反向路由:将web请求反向路由到内部的应用地址。里面有个地址映射,比如:将域名映射到内部应用的IP,可直接在代理服务器配置。

2、负载均衡

nodeport service -k8s的反向代理

 作用:

1、反向路由

2、负载均衡

解释:

1、k8s中service是一个抽象概念。在k8s中,service将流量反向路由到后端的pod是通过selector和labels机制实现的。labels是一种打标签机制,selector是一种路由选择机制。selector上的标签和labels上的标签跨域匹配上,那么selector就将流量路由到匹配的pod上。该机制对比传统的nginx更加灵活,,能力更强。

service发布规范样例:

 

nodeport 范围:30000~32767

通过service实现蓝绿发布

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

沟通的层次模型

沟通的层次模型 根据沟通的倾向性将沟通划分为五个层次,分别是情绪、感受、想法、态度和事实。 模型介绍 沟通的层次 第5层:沟通情绪-带着强烈情绪表达,尤其经常使用这些字眼:“总是”、“每次都”第4层:沟通感受-不…

【APP开发】uni-data-select真机下拉框不显示问题

官网示例:uni-data-select 因为外层container有样式: width: 100%; height: 100%; overflow: hidden; display: flex; flex-direction: column; 去掉最外层 class"container"之后就可以了,但具体原因不清楚 我是对比了Hello uni-…

python中多态的作用是什么?

在强类型语言(例如Java或C#)中,多态是指允许使用一个父类类型的变量或常量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。即使用父类的类型来调用子类的方法。 在Python中,多态指在不考虑对象类型…

js压缩base64图片

今天试了用js把base64编码格式的图片进行压缩,记录一下: base64图片转换地址 base64图片转换网址 代码如下 js: $(document).ready(function(){compressImg(targetObj.src, 0.5, useImg, targetObj) });let targetObj {// base64字符串 …

机器学习26:《数据准备和特征工程-IV》数据转换

特征工程 是确定哪些特征可能对训练模型有用,然后通过转换日志文件等数据来源中的原始数据来创建这些特征的过程。在本文中,笔者将重点讨论何时以及如何转换数字和分类数据,以及不同方法的权衡。 目录 1.数据转换的原因 1.1 数据兼容性的强…

并发容器(一)CopyOnWriteArrayList

我们知道,ArrayList,LikedList,HashMap都是线程不安全的容器 同步容器:Vector,HashTable,SynchronizedList是线程安全的,因为里面加了synchronized同步,所以这样的容器也叫同步容器…

Zabbix监控

Zabbix监控 1.Zabbix监控概述1.1 zabbix是什么1.2 zabbix监控原理1.3 Zabbix 6.0新特性1.4 Zabbix 6.0功能组件1.5 Zabbix与prometheus区别对比 2. 部署Zabbix6.02.1 安装NginxPHP2.2 部署Mariadb数据库2.3 安装zabbix Server服务端2.4 部署Web前端,进行访问2.5 部署…

对给定的两个日期之间的日期进行遍历

每日一练:对给定的两个日期之间的日期进行遍历 题目 对给定的两个日期之间的日期进行遍历,比如startTime是2014-07-11;endTime是2014-08-11 如何把他们之间的日期获取并遍历出来。 思路与分析 不难看出,选项的4段实现代码中,除…

产品经理必须懂的api接口文档编写规范,api接口文档入门

很多产品经理刚接触 API 接口工作时,脑子一片空白,不理解接口(API)是什么,更看不懂接口开发文档。那么,作为一个不懂技术的产品经理,该如何看懂接口文档。今天这篇文章就跟大家好好巴拉巴拉。 …

一次阿里云Schedulerx换成Spring定时任务的过程

1、当前现状 所有的任务已经迁移到阿里云Schedulerx;阿里云Schedulerx是按照调用次数收费,有些任务每秒调用一次,费用太高; 2、明确需求 需要把执行非常频繁的定时任务从阿里云迁移(阿里云收费根据调用次数&#xff0c…

基于matlab使用迭代方法为语义分割网络生成对抗性示例(附源码)

一、前言 此示例说明如何使用基本迭代方法 (BIM) 为语义分割网络生成对抗性示例。 语义分割是将图像中的每个像素分配给类标签的过程,例如汽车、自行车、人或天空。语义分割的应用包括自动驾驶的道路分割和医疗诊断的癌细胞分割。 神经网络…

5、架构:通用 Schema 设计

作为前端开发一定会非常熟悉 AST 抽象语法树(Abstract Syntax Tree),当浏览器加载 JS 代码时,它会首先将代码转换为一棵抽象语法树(AST),然后再根据 AST 来渲染对应的 DOM 结构,对于…

接口自动化核心知识点浓缩,为面试加分

日常接触到的接口自动化从实际目标可以划分为两大类: 为模拟测试数据而开展的接口自动化 这种接口自动化大多是单次执行,目的很明确是为了功能测试创造测试数据,节约人工造数据的时间和人工成本,提高功能测试人员的测试效率。 …

Nuendo 12.0.70 资源下载及功能介绍

简介 Nuendo 12是一款屡获殊荣的影视、游戏和沉浸式环绕声音频后期制作软件,Nuendo 12在对白录音和编辑方面做了重大改进,为你的录音带来新声。Nuendo12把“对白”制作放到一个非常重要的位置,比以前更加贴近用户,它甚至起了一个…

读书笔记-《ON JAVA 中文版》-摘要19[第十八章 字符串-2]

文章目录 第十八章 字符串6. 常规表达式6.1 基础6.2 创建正则表达式6.3 量词6.4 CharSequence6.5 Pattern 和 Matcher6.5.1 find()6.5.2 组(Groups)6.5.3 start() 和 end()6.5.4 split()6.5.5 替换操作6.5.6 reset() 7. 扫描输入7.1 Scanner 分隔符7.2 用…

Python 解释器

文章目录 每日一句正能量前言交互式编程脚本式编程 每日一句正能量 不是因为生活太现实,而对生活失望;而是知道生活太现实,所以更要用心的活下去。给自己一个拥抱。 前言 Python 解释器是运行 Python 代码的工具,主要分为官方提供…

MySQL索引结构(面试题)、索引分类、语法

2索引 2.1 索引概述 2.1.1 介绍 ​ 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据&#xff…

【2022吴恩达机器学习课程视频翻译笔记】3.2线性回归模型-part-2

3.2线性回归模型-part-2 Let’s look in this video at the process of how supervised learning works. Supervised learning algorithm will input a dataset and then what exactly does it do and what does it output? Let’s find out in this video. Recall that a tr…

BeanUtils.copyProperties的11个坑

前言 我们日常开发中,经常涉及到DO、DTO、VO对象属性拷贝赋值,很容易想到org.springframework.beans.BeanUtils的copyProperties 。它会自动通过反射机制获取源对象和目标对象的属性,并将对应的属性值进行复制。可以减少手动编写属性复制代码…

高级Android开发人员枯竭,在这个利润丰厚的领域如何蓬勃发展

为什么高级人才供不应求? 技术行业的发展速度非常快,新的技术和工具不断涌现,导致技能需求不断演变。这使得不断更新和学习变得至关重要。行业发展速度超过了教育和培训体系的能力跟进。传统教育往往滞后于最新的技术趋势和实践,…