k8s(kubernetes)介绍篇

一、Kubernetes 是什么

Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S。

Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台,对现有的编程语言、编程框架、中间件没有任何侵入性。

Kubernetes 提供了完善的管理工具,这些工具涵盖了开发、部署测试、运维监控在内的各个环节。

Kubernetes 具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制、多粒度的资源配额管理能力。

Kubernetes 官方文档:Kubernetes

二、Kubernetes 特性

① 自我修复
在节点故障时,重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理用户的请求,确保线上服务不中断。

② 弹性伸缩
使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。

③ 自动部署和回滚
K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不影响业务。

④ 服务发现和负载均衡
K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。

⑤ 机密和配置管理
管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。

⑥ 存储编排
挂载外部存储系统,无论是来自本地存储,公有云,还是网络存储,都作为集群资源的一部分使用,极大提高存储使用灵活性。

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

三、基础架构图

核心组件:
• etcd保存了整个集群的状态和应用部署的信息;
• Kube-apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
• Kube-Controller-manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
• Kube-scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;

• kubelet负责节点注册和心跳发送、应用生命周期管理、应用健康检查、CSI存储接口对接存储;
• Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
• kube-proxy负责服务暴露实现;           

注意:kubelet、container Runtime、kube-proxy这几个组件在master节点也可以有。master节点也可以组集群。具体作用可自行检索。

Node和Pod是不同的概念,Node是物理或虚拟机器,而Pod是一个或多个容器的集合。Pod可以在Node上运行,一个Node可以运行多个Pod,一个Pod也可以跨多个Node运行。

四、配额限额

(1)资源配置

要配置两个:

request--资源请求, limit--最大限制;

实例:
 spec:
      containers:
      - name: hostnames
        image: mirrorgooglecontainers/serve_hostname
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 100m
            memory: 100Mi
            
100 millicpu,也就是 0.1 个 CPU 的意思。也可以写成 cpu:0.1;
memory100Mi:1Mi=1024*1024;1M=1000*1000,所以这里就是100MB内存的意思。

问题:按理说设置limit最大资源限制就可以了,类似docker-compose上面配置一样,为什么k8s还要设置一个request资源请求参数?

答:`resources.requests` 字段可以指定 Pod 所需的 CPU 和内存资源量。Kubernetes 调度器会根据这个参数来选择合适的节点,以确保节点上的资源能够满足 Pod 的需求。如果没有设置这个参数,Kubernetes 调度器会默认将 Pod 的资源需求设置为 0,这可能会导致 Pod 被调度到资源不足的节点上,从而影响 Pod 的性能和稳定性。
需要注意的是,resources.requests 字段只是一个建议值,Kubernetes 调度器并不会强制要求节点提供这些资源。如果节点上的资源不足,Pod 仍然可能会出现资源不足的情况。因此,在设置 resources.requests 字段时,需要根据实际情况合理设置,以确保 Pod 能够正常运行。

(2)资源抢占

对于内存这类不可压缩资源,如果发生资源抢占,则会按照优先级的高低进行Pod的驱逐(关闭掉)。驱逐的策略为: 优先驱逐Request=Limit=0(BestEffort级别)的Pod,其次驱逐Request !=Limit (Burstable)。0<Request==Limit的Pod的会被保留;

Request设置按比例分占CPU调度的时间片,所以反过来说,request值设得越大,也就意味着,发生资源抢占时,每个Pod分到的CPU时间片也越多;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP环境配置

1.服务器 简单理解&#xff1a;服务器也是一台计算机&#xff0c;只是比平时用到的计算机在性能上更强大&#xff0c;开发中通常都需要将开发好的项目部署到服务器进行访问&#xff0c;例如&#xff1a;我们可以访问百度、淘宝、京东等&#xff0c;都是因为有服务器的存在&…

无涯教程-Android - Frame Layout函数

Frame Layout 旨在遮挡屏幕上的某个区域以显示单个项目&#xff0c;通常&#xff0c;应使用FrameLayout来保存单个子视图&#xff0c;因为在子视图彼此不重叠的情况下&#xff0c;难以以可扩展到不同屏幕尺寸的方式组织子视图。 不过&#xff0c;您可以使用android:layout_grav…

博流RISC-V芯片JTAG debug配置与运行

文章目录 1、Windows下安装与配置2、Linux下安装与配置3、芯片默认 JTAG PIN 列表4、命令行运行JTAG5、Eclipse下使用JTAG 1、Windows下安装与配置 CKLink 驱动安装 Windows版驱动下载地址&#xff1a; https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1666331…

如何用VMware虚拟机连上Xshell

目录 前言废话1.1设置虚拟机设置1.2 设置虚拟网络编辑器方法一&#xff1a;方法二&#xff1a; 1.3 配置静态IP地址1.4 Xshell连接虚拟机2.1 解决可能出现的一些问题2.1.1 虚拟机Ping不通网络2.1.2 我可以Ping通百度了&#xff0c;但是宿主机和虚拟机互相Ping不通。2.1.3 更离谱…

ElasticSearch学习4--复杂查询

1、查询分类 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。例如&#xff1a;match_all全文检索&#xff08;full text&#xff09;查询&#xff1a;利用分词器对用户输入内容分词&#xff0c;然后去倒排索引库中匹配。例如&#xff1a; match_query 根据单个字段…

IDEA 设置提示信息

IDEA 设置提示信息 File->Settings->Editor->Code Completion 取消勾选 Math case

Nginx百科之gzip压缩、黑白名单、防盗链、零拷贝、跨域、双机热备

引言 早期的业务都是基于单体节点部署&#xff0c;由于前期访问流量不大&#xff0c;因此单体结构也可满足需求&#xff0c;但随着业务增长&#xff0c;流量也越来越大&#xff0c;那么最终单台服务器受到的访问压力也会逐步增高。时间一长&#xff0c;单台服务器性能无法跟上业…

xx音乐app逆向分析

目标 看一下评论的请求 抓包 这里使用httpcanary 请求包如下 POST /index.php?rcommentsv2/getCommentWithLike&codeca53b96fe5a1d9c22d71c8f522ef7c4f&childrenidcollection_3_1069003079_330_0&kugouid1959585341&ver10&clienttoken7123ecc548ec46d…

(c++)类和对象 上篇

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步…

PostGIS空间数据中基础常用函数介绍

目录 前言 一、基础数据 1、数据结构准备 2、基础数据构造 二、常用空间函数 1、st_srid 获取空间对象SRID 2、st_asgeojson geojson转换 3、st_aswkt wkt支持 4、st_area 面积计算 5、ST_Buffer 缓冲区 6、其它函数 总结 前言 近些年&#xff0c;面向GIS的应用如雨后…

pytorch如何使用Focal Loss

Focal loss 是 文章 Focal Loss for Dense Object Detection 中提出对简单样本的进行decay的一种损失函数。是对标准的Cross Entropy Loss 的一种改进。 FL对于简单样本&#xff08;p比较大&#xff09;回应较小的loss。 如论文中的图1&#xff0c; 在p0.6时&#xff0c; 标准的…

nginx反向代理 负载均衡

目录 1.反向代理介绍&#xff1a; 2.七层代理和四层代理&#xff1a; 2.1 七层代理&#xff1a; 2.2 四层代理&#xff1a; 3.反向代理web服务器&#xff1a; 3.1 代理服务器配置&#xff1a; 3.2 服务器配置 &#xff1a; 3.3 客户端访问&#xff1a; 3.4 代理不同端口&am…

使用nps实现内网穿透

1、介绍 ​ 当我们想把内网的一些资源暴露在公网上时&#xff0c;可以使用内网穿透功能。比如公司的内网服务器&#xff0c;部署了平时需要开发的项目&#xff0c;但是回到家中无法访问&#xff0c;就可以使用内网穿透&#xff0c;将公司内网的接口映射到一台公网的服务器上&a…

C++之std::search应用实例(一百八十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

typescript的~~和双感叹号符号使用

&#xff08;标题不给用“!”&#xff09; "~~"符号使用 1.对于number类型的值&#xff0c;~~是取整作用 const num: number 3.14; const roundedNum: number ~~num; // 3 2.对于boolean类型的值&#xff0c;~ ~ true还是true&#xff0c;false还是false “!!”…

6.(Python数模)游泳接力指派问题

Python解决游泳接力指派问题 该问题也属于一个线性规划问题 源代码 import pulp # 导入 pulp 库 import numpy as np# 主程序 def main():# 问题建模&#xff1a;"""决策变量&#xff1a;x(i,j) 0, 第 i 个人不游第 j 种姿势x(i,j) 1, 第 i 个人游第 …

javaee spring 静态代理

静态代理 package com.test.staticProxy;public interface IUsersService {public void insert(); }package com.test.staticProxy;//目标类 public class UsersService implements IUsersService {Overridepublic void insert() {System.out.println("添加用户");…

A. Increasing and Decreasing

题目&#xff1a;样例&#xff1a; 输入 3 1 4 3 1 3 3 100 200 4输出 1 3 4 -1 100 150 180 200 思路&#xff1a; 思维题&#xff0c;这里我们看一下规律&#xff0c;我们已知a(1)&#xff0c;a(n) &#xff0c;又因为 数列b 应该是递减的&#xff0c;而观察规律可知 &#x…

无涯教程-Android - Spinner函数

Spinner允许您从下拉菜单中选择一个项目 例如。使用Gmail应用程序时,将显示如下所示的下拉菜单,您需要从下拉菜单中选择一个项目。 Spinner Example 示例 本示例演示计算机的类别,您需要从类别中选择一个类别。 以下是修改后的主要Activity文件src/com.example.spinner/Andr…

opencv-人脸识别

对https://blog.csdn.net/weixin_46291251/article/details/117996591这哥们代码的一些修改 import cv2 import numpy as np import os import shutil import threading import tkinter as tk from PIL import Image, ImageTkchoice 0# 首先读取config文件&#xff0c;第一行…