k8s中的层级结构,及节点组件的作用

news/2024/9/17 19:02:52/ 标签: kubernetes, java, docker

可以从三个层面来看待k8s集群

第一个层

是client主机

为什么要有client主机

不是在控制节点上管理计算节点吗

是的

但是,当有多个k8s集群需要管理的时候

一般不会每管理一个集群,就登录到那个集群的控制节点上

这样来来回回切换登录

client主机同时管理多个主机比较方便

在client主机上,安装kubectl软件包

使用kubectl  config  get-contexts

查看上下文有哪几个k8s集群,当前在哪个k8s集群

使用kubectl  config  use-context  *k8s

选择当前管理的集群为*k8s集群

这里,逐一解释

kubectl命令是client主机上,是如何联络到各个k8s集群的

依靠~/.kube/config配置文件

这个配置文件里面有什么

有各个被管理k8s集群的名称,管理用户,集群的证书cacert,客户端的证书cert,客户端的密钥key,等这些信息。

那么当client主机上的命令行工具kubectl config被解释器翻译的时候

cpu会去读取kubectl config命令的配置文件

也就是这个~/.kube/config

这个配置文件里面有client主机想kubectl config操作的k8s集群的信息

那么kubectl config get-contexts的时候

就是看配置文件里面都有谁

都有几个集群

然后敲回车

cpu就会把自己在配置文件~/.kube/config里面读到的集群内容

返回到屏幕上

就可以看到client主机可以管理的k8s的集群的名称

和当前在管理哪个集群

当在client主机的命令行界面输入

kubectl config use-context ak8s的时候

cpu就会去那个配置文件下面去找这个ak8s相关的信息

然后client主机就会在一个管理ak8s的状态下

用kubectl  create pods ...

等这些命令的时候

就可以操作人员在client主机上管理ak8s集群的资源,创建pod等操作

叫远程管理。

第二个层级

管理节点,也叫管理控制节点,也叫控制节点,也叫主节点

随便吧

知道意思就行

这个节点上,有几个重要组件,而这几个组件都是通过

kubeadm  init这个命令生成的

kubeadm命令行工具

是用安装kubeadm这个软件包产生的。

控制节点的核心组件有四个

apiserver:  api接口

controller-manager: 控制器管理器

schduler: 调度器

etcd: 状态数据库

api接口好解释,我们用kubectl api-resources,敲回车,就可以看到好多api资源

里面有ingresses,  serviceaccount,  rolebinding, classrolebinding, services等等

这些api资源,是k8s集群提供的各种各样功能

那么k8s本身的核心作用是对容器进行各种编排管理的

那么这些api资源都是为了让k8s更好的提供容器化服务的工具

apiserver就是把这些写好的工具提供一个接口给程序

管理用户可以通过程序和命令行去调用这些工具

比如kubectl  create pods ...

那么pods就是一个api资源,可以用kubectl create这样的命令去调用

加上参数,就可以创建出什么什么样的pod

另一种使用api资源的方法

就是写资源文件

kind

apiVersion

medata

spec

status

这五个是资源文件里面的顶级字段,最后一个status状态大部分情况下可以不写,在创建资源的时候。因为status信息k8s一般会自动生成。

控制节点?什么是控制节点?

控制节点的主要特征就是装了一个kubeadm

然后用kubeadm init产生了

api-server   controller-manager  schduler  etcd这几个组件

这些都是可配置可条件的

毕竟来说

操作系统层面来讲

一切皆文件

好像还是很有道理的

管理配置文件就是了

自定义集群的各种样子

controller-manager是控制器管理器

什么是控制器管理器?

首先看什么是控制器

比如daemonsets这种控制器

这种控制器的一个,就是kube-proxy

daemonsets这种控制器是什么

就是守护集

意思是要管理一些pod提供的服务

这些pod每个节点上都得有

比如kube-proxy这个控制器搞的服务

这个服务就是监控网络状态,保证每个计算节点上的

网络状态都是ok的

daemonsets这种控制器

意思就是守护每个节点的

可以理解成,既然要是k8s的集群的一个节点

总得有点特征吧

跟不是k8s集群的节点的机器有些区别

而这些特征和区别,我们就可以理解为

计算节点上的一些必备环境

比如网络,那么这个就是可以说的通的

所以

daemonsets这种控制器

是控制器的一种

什么意思呢

就是说

k8s的控制器还有其他品类

男装女装护肤品

不同的品类

那么k8s集群的控制器

也有好多个品类

还有deployment

管理各个节点的pod数量的

如果有的pod被删掉了

那么deployment会自动创建一个新的pod

是不是很智能

它的作用之一是维护集群节点中的数量

还有控制器叫statefulset

这个是对应deployment这个控制器来称呼的

deployment是个无状态控制器

statefulset是个有状态控制器

这么来看

控制器的作用也是为了实现k8s集群的各个品类的功能的需求的满足。

所以控制器的种类也比较多。

那么这些品类,多了之后,也需要有角色来协调和管理。

包括监控

那么这个活

就由controller-manager来干

控制器的经理

也就是控制器的管理器

控制器的管理器有点类似于linux操作系统的systemd

systemd管理系统的所有进程

controller-manager管理k8s集群中个各个控制器

controller-manager可以认为是一些程序的集合,也有对应的配置文件

那么第三个层

就是计算节点

主要组件是kubelet和kube-proxy

kubelet是监工的

看计算节点上的服务运行的如何

kube-proxy主要管理计算节点上的网络。

还有一个计算节点的组件是runtime

就是,是时候跑起来了

计算节点真正跑服务的

叫硬件干活的

就是容器里面的进程了

这个runtime就是替kubelet管容器的

kubelet叫runtime创建容器

runtime就创建容器

图片来源:k8s官网


http://www.ppmy.cn/news/1523351.html

相关文章

ThreadLocal 释放的方式有哪些

ThreadLocal基础概念:IT-BLOG-CN ThreadLocal是Java中用于在同一个线程中存储和隔离变量的一种机制。通常情况下,我们使用ThreadLocal来存储线程独有的变量,并在任务完成后通过remove方法清理这些变量,以防止内存泄漏。然而&…

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸 在默认情况下 这两个壁纸是相同的 如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.* &#…

记录一下blender烘焙贴图黑边的一个坑

首先是拆UV这里 margin 0.1 better share better 这个也大一点好了 这样烘焙的猴头就是正常的 这里的坑点是 降噪!!烘焙如果开启降噪 如果关闭下面那一个 会好一点,都关闭了,才是最上面的效果

SockJS的使用方法

SockJS 是一个 JavaScript 库,用于在浏览器和服务器之间创建 WebSocket 连接,并提供 WebSocket 的备用方案,以应对浏览器或网络环境不支持 WebSocket 的情况。以下是 SockJS 主要方法的详细语法和逻辑。 1. SockJS(url, [options]) 功能: 创…

并发编程(六)

并发容器 ConcurrentLinkedQueue CopyOnWriteArrayList BlockingQueue ArrayBlockingQueue LinkedBlockingQueue 线程池 拒绝策略 execute

2. GIS数据工程师岗位职责、技术要求和常见面试题

本系列文章目录: 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…

TMS320F28335芯片及使用介绍

1、简介 CPU性能的好坏不仅取决于主频大小,还需要看其整体架构集成性能、运算能力与指令体系。TMS320C2000系列DSP集微控制器和高性能 DSP 的特点于一身,具有强大的控制和信号处理能力,能够实现复杂的控制算法。TMS320C2000 系列DSP 片上整合了Flash存储器、快速的AD转换器…

计算机网络 第二章: 物理层_信道复用技术

文章目录 信道复用技术的基本原理常见的信道复用技术习题解答 信道复用技术的基本原理 复用(Multiplexing)就是在一条传输媒体上同时传输多路用户的信号。 当一条传输媒体的传输容量大于多条信道传输的总容量时,就可以通过复用技术&#xf…

2024 WMCTF re 部分wp

Rustdroid 附件拖入jadx apk解包找到so文件拖入ida,定位到check函数。先检查格式 对RC4熟悉的话,能看出来是初始化S盒 然后是轻微魔改RC4 脚本 ez_learn 附件拖入ida 下断点调试,窗口一闪而过,应该有反调试。函数列表中能找到TlsC…

蚁剑webshell连接报错A JavaScript error occurred in the main process

报错如图: 已知解决方式: 将上传shell中文文件名修改为任意的英文文件名即可连接。

UEFI——获取UEFI MemoryMap

一、MemoryMap简介 首先讲一下什么是MemoryMap? 内存映射(Memory Mapping)是一种将文件内容映射到进程的虚拟地址空间的技术。在这种机制下,文件可以视为内存的一部分,从而允许程序直接对这部分内存进行读写操作&…

AIGC 初识 GAN(Generative Adversarial Networks,生成对抗网络)是如何工作的,浅记。

GAN(Generative Adversarial Networks,生成对抗网络)是一种深度学习模型,它通过生成器和判别器之间的对抗训练来生成逼真的数据样本。 提示:以下是本篇文章正文内容,下面案例可供参考 GAN(Gene…

FPGA第 9 篇,Verilog 中的关键字和基数

前言 在 Verilog 中,关键字(Keywords)和基数(Radix)是语言的重要组成部分,它们有助于描述和定义硬件设计。上期分享了 Verilog 的基本使用,以及数据类型、逻辑值和算数运算符的简单应用&#x…

Obsidian git sync error / Obsidian git 同步失敗

Issue: commit due to empty commit message Solution 添加commit資訊,確保不留空白 我的設置:auto-backup: {{hostname}}/{{date}}/

AWS EC2安全组配置:轻松开放端口访问

在AWS EC2实例上开放特定端口是配置服务器安全性和可访问性的重要步骤。本文中九河云将介绍如何通过AWS控制台配置EC2安全组来实现端口开放。 1. 登录AWS控制台 首先,登录到AWS管理控制台,并导航到EC2服务页面。 2. 找到目标EC2实例 在EC2控制面板中,找到需要开放端口的实例…

投放Facebook广告开户全流程解析:从开户到广告投放的实用指南

Facebook作为全球最大的社交平台之一,广告业务覆盖范围广泛,已成为各类企业推广产品和服务的重要渠道。要在Facebook上成功投放广告,首先需要完成广告账户的开户流程。本文将详细介绍投放Facebook广告开户的步骤和条件,并解释如何…

随身 WiFi 大探秘:芯片竟有二手货?快来避雷!随身wifi芯片哪个好?随身wifi芯片排行榜!

你的随身wifi芯片可能是二手的...是的,你没听错! 随身wifi的好坏主要取决于芯片,他决定了网速,散热性等关键性能。目前市场上常见的随身 WiFi 芯片有多种,我们该如何挑选高性能芯片,避免买到二手芯片设备呢…

python之异步任务

在 Python 中,异步任务通常通过使用库如 Celery 来实现。Celery 是一个简单、灵活且可靠的分布式系统,用于处理大量消息,同时提供操作控制。 在 Celery 中,delay 和 apply_async 是两种常用的方法来调度异步任务。 delay 方法 …

Harmony arkTs组件开发:ListItem控件中不能使用多个组件

如下代码: List(){ForEach(this.indexList, (item: number) >{ListItem(){Text("测试")Row(){Image(this.images[item]).width(20).height(20).margin({left:15})Text(this.arr[item])//.width(80%).fontSize(sizes.oneFontSize).fontColor(colors.Tit…

Web 原生组件化方案:Web Components

你好,我是沐爸,欢迎点赞、收藏、评论和关注。 Web 组件化是一种将Web应用的UI部分拆分成可复用的独立组件的架构方法。这种方法有助于提高代码的可维护性、可重用性和可测试性。 而Web Components 标准则提供了一套原生的API,允许开发者创建…