K8s 概念及组件

news2024/11/13 3:38:37

K8s 的全称为Kubernetes,是一种开源的容器编排平台,用于自动化部署以及扩展和管理容器化的应用程序,它提供了一种容器编排和管理的方式,可以帮助开发人员更轻松的管理容器化的应用程序,并且提供了一种跨多个主机的自动化部署和管理机制

作用:

        用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。
可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。

​官网:https://kubernetes.io

github:https://github.com/kubernetes/kubernets​

为什么要用K8s

        传统的后端部署办法:把程序包(包括可执行二进制文件、配置文件等)放到服务器上,接着运行启动脚本把程序跑起来,同时启动守护脚本定期检查程序运行状态、必要的话重新拉起程序。
        如果服务的请求量上来,已部署的服务响应不过来怎么办?传统的做法往往是,如果请求量、内存、CPU超过阈值做了告警,运维人员马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力

        这样问题就出现了:从监控告警到部署服务,中间需要人力介入!那么,有没有办法自动完成服务的部署、更新、卸载和扩容、缩容呢?
        而这就是 K8S 要做的事情:自动化运维管理容器化(Docker)程序。

K8s 的目标是让部署容器化应用简单高效。

K8s 解决了裸跑Docker 的若干痛点:
  1. 单机使用,无法有效集群

  2. 随着容器数量的上升,管理成本梦升

  3. 没有有效的容灾、白愈机制

  4. 没有预设编排模板,无法实现快速、大规模容器调度

  5. 没有统一的配置管理中心工具

  6. 没有容器生命周期的管理工具

  7. 没有图形化运维管理工具

 

K8s特性

  • 弹性伸缩

保证应用业务高峰并发时的高可用性,业务低峰时回收资源,最小成本运行服务

  • 自我修复

节点故障时重新启动失败的容器,替换和重新部署,杀死健康检查失败的容器,未准备好之前不会处理客户端请求,保证线上服务不中断

  • 服务发现和负载均衡

k8s为多个容器提供一个统一访问入口【内部IP地址和一个DNS名称】,负载均衡关联所有的容器,使得用户无需考虑容器ip问题

  • 自动发布(默认滚动发布模式)和回滚

一次更新一个或部分 pod ,如果更新过程中出现问题,将回滚更改,确保升级不影响业务

  • 集中化配置管理和密钥管理

管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,包括用户密码、私钥、公钥

  • 存储编排,支持外挂存储并对外挂存储资源进行编排

挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如 NFS、Glusterfs、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性

  • 任务批量处理运行

提供一次性任务,定时任务,满足批量数据处理和分析的场景

 

K8s集群架构和组件

K8s是属于主从设备模型【Master 和 Slave 架构】

  • Master节点负责集群的调度、管理和运维,

  • slave节点是集群中的运算工作负载节点。在K8s 中,主节点一般被称为Master节点,而从节点则被称为worker Node节点,每个Node 都会被Master分配一些工作负载

Master 组件

  • kube-apiserver  

所有访问的统一入口,资源请求或调用操作都是通过kube-apiserver提供的接口进行,所有对象资源的增删改查和监听操作都交给API Server处理后再提交给Etcd 存储。

  • kube-controller-manager(控制器)

  负责根据预设模板创建pod,维持pod等资源副本期望数目【创建删除维护pod】

  • kube-scheduler(调度器)

   负责调度 pod 通过预选、优选策略,选择合适的 node节点分配 pod    【调度算法:62种】

  • etcd:配置存储中心

     分布式键值对数据库,负责存储 k8s 集群的重要信息(持久化)
     go语言开发的 使用raft 一致性的算法  集群需要三台或以上奇数台组成
     【端口】
     2379:对外为客户端提供通讯
     2380:服务器之间内部通讯

Node组件

  • kubelet:

  在K8s集群中,在每个Node (又称 Worker Node)上都会启动一个kubelet 服务进程。每个kubelet进程都会在 API server 中注册信息,定期向 master 汇报节点资源的使用情况

  • kube-proxy: 

  在node 节点上实现 pod 的网络代理,维护网络规则和四层负载均衡器工作,负责写入规则到 iptables 或 ipvs 实现服务映射访问

  • docker 或 rocket:

  容器引擎,运行容器,负责本机的容器创建和管理工作

 

Pod

Pod是 Kubernetes 创建或部署的最小/最简单的基本单位,一个 Pod 代表集群上正在运行的一个进程。
可以把 Pod 理解成豌豆荚,而同一 Pod 内的每个容器是一颗颗豌豆。

一个 Pod 由一个或多个容器组成,Pod 中容器共享网络、存储和计算资源,在同一台 Docker 主机上运行。
一个 Pod 里可以运行多个容器,又叫边车模式(SideCar)。而在生产环境中一般都是单个容器或者具有强关联互补的多个容器组成一个 Pod。

同一个 Pod 之间的容器可以通过 localhost 互相访问,并且可以挂载 Pod 内所有的数据卷;但是不同的 Pod 之间的容器不能用 localhost 访问,也不能挂载其他 Pod 的数据卷。

Pod 控制器

Pod 启动的一种模版,用来保证在K8S里启动的 Pod 应始终按照用户的预期运行(副本数、生命周期、健康状态检查等)。

K8S 内提供了众多的 Pod 控制器,常用的有以下几种:

  • Deployment:无状态应用部署
  • Statefulset:有状态应用部署
  • ReplicaSet:确保预期的 Pod 副本数量,用于管理和控制Pod,受控于 Deployment
  • DaemonSet:确保所有节点运行同一类 Pod,保证每个节点上都有一个此类 pod 运行 
  • Job:一次性任务
  • Cronjob:周期性计划性任务

控制器有五大类:

标签选择器:
  • 标签选择器可以用来选择一组具有相同的标签的 Pod,service,RC,deployment 和 RS,使用标签选择器可以轻松的管理部署应用程序和其他资源

service:
  • service 是通过标签选择器关联具有对应 Label(标签)的Pod,再把相关 Pod的 IP 加入到自己的 endpoints 当中,service再根据 endpoints 里的IP 进行转发

ingress:
  • ingress是一种 API对象,用于管理 K8s集群中入口流量,它为我们提供了一种统一的方式来管理不同服务方式的路由规则和负载均衡

name:
  • 通常是指资源对象的名称

namespace:
  • K8s中的 namespace 是一种虚拟化的技术,它将一个物理的 K8s 集群划分成多个虚拟集群,每个虚拟机群都有自己的资源和对象,不同的虚拟机群之间相互隔离

CFSSL用来为etcd提供TLS 证书,它支持签三种类型的证书:

  1. client.证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如l kube-apiserver访问 etcd; 

  2. server 证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如 etcd对外提供服务;

  3. peer 证书,相互之间连接时使用的证书,如 etcd节点之间进行验证和通信。

          这里全部都使用同一套证书认证。

cfssl:证书签发的工具命令
cfssljson:将cfssl生成的证书(json格式)变为文件承载式证书
cfssl-certinfo:验证证书的信息
cfssl-certinfo -cert <证书名称>     #查看证书的信息

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

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

相关文章

内存爆炸、CPU100%问题定位

目录 一、内存爆炸相关1、关于-Xms(最小堆内存)和-Xmx(最大堆内存)2、JVM初始化时申请实际物理内存3、OutOfMemory问题排查(1) 堆内存溢出排查(2) 堆外内存溢出排查 二、CPU 100及死锁问题定位1、CPU 100问题排查(1) 找到程序对应进程号(2) 查找进程对应的线程编号(3)查看线程堆…

根据Excel表格数据去修改数据库数据

一、背景 项目上线&#xff0c;实施任务发来一份Excel表格数据 需要将供应商和生产厂商进行绑定&#xff0c;因为数据过多&#xff0c;实施人员一个个绑定时间成本过高&#xff0c;想让开发给出一个脚本。 二、操作 比如这些数据 生产厂商为A 供应商为B 以update 语句为例 …

基于Vertx实现可配置及可扩展的IOT服务

搭建框架的目标 相信写过IOT服务的伙伴应该知道&#xff0c;面对各种千奇百怪的通信协议&#xff0c;特别是16进制报文的协议&#xff0c;有些协议看的确实有点让人头疼。但这些协议中也有很多共性&#xff0c;不必针对每过协议都把一些业务无关的代码再撸一遍。 搭建这个项目主…

【Javascript】‘var‘ is used instead of ‘let‘ or ‘const‘

解决&#xff1a; 设置完之后,var 就不会再出现黄色波浪线警告

普通二维码跳转微信小程序实战

简介 服务端springboot项目,前端基于uniapp的微信小程序,要求扫描二维码之后进入到小程序指定页面,下面记录一下实现过程以及过程中遇到的问题. 实现过程 下面是成功跳转的配置截图: 首先说下二维码规则,这个地方需要填写扫描二维码之后打开的地址,这个地址在我的项目里…

Keil实现Flash升级跳转(STM32/GD32/HC32)

编写BOOT程序&#xff0c;和APP程序。 BOOT程序检查OTA参数&#xff0c;执行OTA升级&#xff0c;然后跳转到APP代码。 记录一下跳转APP需要修改得东西&#xff1a; 1、BOOT程序 修改跳转地址 先检查APP地址是否有效 然后关闭外设 反初始化 设置MSP指针&#xff0c;进行跳转 …

多商户自营连锁小程序商城的作用是什么

近几年&#xff0c;线上线下经营压力很大&#xff0c;不少商家都希望通过数字化转型实现破局或增长&#xff0c;单店管理力度相对容易些&#xff0c;但如果是连锁门店&#xff0c;近几年则相对风险大些&#xff0c;但从2020年至今依然有不少品牌选择扩店&#xff0c;增加连锁规…

vue 组件封装 综合案例

vue 组件封装 综合案例 **创建 工程&#xff1a; H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day05\准备代码\11-综合案例-商品列表 vue --version vue c…

深入探索Sharding JDBC:分库分表的利器

随着互联网应用的不断发展和用户量的不断增加&#xff0c;传统的数据库在应对高并发和大数据量的场景下面临着巨大的挑战。为了解决这一问题&#xff0c;分库分表成为了一个非常流行的方案。分库分表主流的技术包括MyCat和Sharding JDBC。我们来通过一张图来了解这两者有什么区…

38 WEB漏洞-反序列化之PHPJAVA全解(下)

目录 Java中的API实现序列化和反序列化演示案例WebGoat_Javaweb靶场反序列化测试2020-网鼎杯-朱雀组-Web-think java真题复现 文章参考&#xff1a; https://www.cnblogs.com/zhengna/p/15737517.html https://blog.csdn.net/MCTSOG/article/details/123819548 ysoserial生成攻…

CC攻击和其防御策略

CC攻击简介 CC攻击&#xff0c;又称为Challenge Collapsar攻击&#xff0c;是一种常见的DDoS&#xff08;分布式拒绝服务&#xff09;攻击方式&#xff0c;旨在使Web服务在第七层协议层面遭受攻击。攻击者并不需要大量的肉鸡来实施CC攻击&#xff0c;相反&#xff0c;他们使用…

Flyway Desktop updated

Flyway Desktop updated 为比较工件序列化和反序列化添加了额外的调试日志记录。 Flyway Desktop现在将记住以前用于创建项目和匹配克隆的位置。 新的脱机许可工作流现在已在Microsoft Windows上启用。 现在&#xff0c;在配置目标数据库列表时&#xff0c;环境ID是可见的。 现…

HTML图像标签

html文件&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图像标签学习</title> </head> <body> <img src"../resources/image/01.jpg" alt"小狗图…

【机器学习】集成模型/集成学习:多个模型相结合实现更好的预测

1. 概述 1.1 什么是集成模型/集成学习 "模型集成"和"集成学习"是相同的概念。它们都指的是将多个机器学习模型组合在一起&#xff0c;以提高预测的准确性和稳定性的技术。通过结合多个模型的预测结果&#xff0c;集成学习可以减少单个模型的偏差和方差&am…

2023年全球及中国分离纯化装备市场发展概况分析:未来市场将持续增长[图]

随着创新药物的研发加速&#xff0c;纯化环节在药物生产过程中的重要性也将日益凸显&#xff0c;纯化设备市场未来有望不断增长。2022年&#xff0c;全球小分子药物分离纯化装备市场规模达到45美元&#xff0c;期间复合年增长率为21.9%&#xff1b;预计未来全球小分子药物分离纯…

使用标准模板 MRI 主题根据 EEG 数据计算前向算子

# https://mne.tools/stable/auto_tutorials/forward/35_eeg_no_mri.html# 本教程说明如何使用标准模板 MRI 主题根据 EEG 数据计算前向算子 # # 成人模板 MRI (fsaverage) # 首先我们展示如何fsaverage用作替代subject# Authors: Alexandre Gramfort <alexandre.gramfortin…

vscode摸鱼插件开发

不知道大家在写代码的时候&#xff0c;摸不摸鱼&#xff0c;是不是时不时得打开一下微博&#xff0c;看看今天发生了什么大事&#xff0c;又有谁塌房&#xff0c;而你没有及时赶上。 为此&#xff0c;我决定开发一个vscode插件&#xff0c;来查看微博热搜 插件名称&#xff1…

每日一练 | 华为认证真题练习Day121

1、如下图所示的交换网络&#xff0c;所有交换机都运行了STP协议。当拓扑稳定后&#xff0c;在下列那台交换机上修改配置BPDU的发送周期&#xff0c;可以影响SWD配置BPDU的发送周期 A. SWD B. SWC C. SWB D. SWA 2、如下图所示的网络&#xff0c;交换机的MAC地址已标出。在S…

(数据结构)单链表的相关操作

//1.预编译部分#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//2.单链表的结构体typedef struct LNode{int data;struct LNode* next; //因为next指针指向的为结构体类型&#xff0c;所以类型为struct LNode*}LNode, * LinkList; …

如何保障Facebook账号登录稳定?跨境人必看

作为全球最大的社交媒体平台&#xff0c;Facebook已成为众多跨境人们拓展海外市场的重要渠道。然而&#xff0c;Facebook对跨境业务卖家的监管越来越严格&#xff0c;封号政策也日趋严厉。对于想要在Facebook上开展业务的跨境人们而言&#xff0c;大家是否被Facebook封号问题困…