首页 > 其他分享 >k8s 工作原理以及常用基础

k8s 工作原理以及常用基础

时间:2023-04-17 16:40:18浏览次数:43  
标签:Node 常用 K8s 集群 原理 Pod k8s 节点

k8s 是什么 ☛ 可移植:支持公有云,私有云,混合云,多重云 ☛ 可扩展:模块化,插件化,可挂载,可组合 ☛ 自动化:自动部署,自动重启,自动复制,自动伸缩/扩展 k8s 核实组件 1)主要组件 ● etcd:保存了整个集群的状态; ● apiserver:提供了资源操作的唯一入口,并提供访问控制、API注册和发现等机制; ● scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; ● controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; ● kubelet:负责维护容器的生命周期,同时也负责数据卷(CVI)和网络(CNI)的管理; ● kube-proxy:负责为Service提供集群内部的服务发现和负载均衡; ● Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI); 2) 扩展组件 ● kube-dns:负责为整个集群提供DNS服务 ● Metrics:提供资源监控 ● Dashboard:提供GUI ● Ingress Controller:为服务提供外网入口 ● Federation:提供跨可用区的集群 ● Fluentd-elasticsearch:提供集群日志采集、存储与查询 3)基本概念

  1. 集群管理 ◆ Master:K8s集群的管理节点,负责整个集群的管理和控制。 ◆ Node:K8s集群的工作节点,负责集群中的工作负载。 ◆ Namespace:为K8s集群提供虚拟的隔离作用。 ◆ Label:通过给指定资源捆绑一个或多个不同的资源标签,来实现多维度的资源分组管理。
  2. 资源管理 ◆ Pod:K8s集群中运行部署应用的最小单元,可以支持多容器。 ◆ RC:K8s集群中最早的保证Pod高可用的API对象,之后扩展匹配模式新增了RS。 ◆ Deployment:一个应用模式更广的API对象,通过操作RS进行创建、更新、滚动升级服务。 ◆ StatefulSet:K8s提供的管理有状态应用的负载管理控制器API。 ◆ DaemonSet:确保其创建的Pod在集群中的每一台(或指定)Node上都运行一个副本。 ◆ Job:K8s用来控制批处理型任务的API对象,之后基于时间管理新增了CronJob。 ◆ Service:定义了一个服务的多个Pod逻辑合集和访问Pod的策略,实现服务发现和负载均衡。 ◆ HPA:实现基于CPU使用率(或在使用自定义指标)的Pod自动伸缩的功能。
  3. 存储管理 ◆ Secret:用来保存和传递密码、密钥、认证凭证这些敏感信息的对象。 ◆ ConfigMap:将配置信息与镜像内容分离,以使容器化的应用程序具有可移植性。 ◆ Volume:是Pod中能够被多个容器访问的共享目录。 ◆ PV:持久化存储和与之相关联的持久化存储声明(PVC),使得K8s集群具备了存储的逻辑抽象能力。

4)系统架构

  1. 集群高可用 K8s作为容器应用的管理中心,通过对Pod的数量进行监控,并且根据主机或容器失效的状态将新的Pod调度到其他Node上,实现了应用层的高可用性。 针对K8s集群高可用性还应包含以下两个层面的考虑:Etcd 数据存储的高可用性(至少3台)和Master组件的高可用性。 这里我们采用 Hproxy + Keepalive 高可用方案,并且与 Etcd 服务、Master组件均部署到同一节点。
  2. 控制管理 K8s集群的管理和控制主要由Master节点负责,它来负责具体的执行过程,我们后面执行的所有命令基本都是在Master节点上运行的。 Master节点通常会占据一个独立的服务器,其主要原因是它太重要了,是整个集群的“首脑”,如果宕机或者不可用,那么对集群内容器应用的管理都将失效。
  3. 工作负载 K8s集群中的计算能力由Node提供,最初Node称为服务节点Minion,后来改名为Node。 K8s集群中的Node也就等同于Mesos集群中的Slave节点,是所有Pod运行所在的工作主机,可以是物理机也可以是虚拟机。
  4. 系统监控 Prometheus(普罗米修斯)是一套开源的监控、报警、时间序列数据库的组合。 基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。 这样做非常适合作为虚拟化环境监控系统,比如Docker、Kubernetes。
  5. 访问方式 • ClusterIP:默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问。 dnsplicy 通过clusterFirstWithHostNet 如果Pod的hostNetwork字段设置为true,则表示Pod与宿主机共用同一个网络命名空间,此时Pod的DNS策略默认使用的是Default,不能访问集群内的服务。若希望Pod在host网络模式下还能访问集群内的服务,可以将dnsPolicy设置成ClusterFirstWithHostNet。 • NodePort:将Service通过指定的Node上的端口暴露给外部,访问任意一个 NodeIP:nodePort都将路由到ClusterIP。 • LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部的负载均 衡器,并将请求转发到 :NodePort,此模式只能在云服务器上使用。 • ExternalName:将服务通过 DNS CNAME 记录方式转发到指定的域名(通过 spec.externlName 设定)。
  6. k8s 高可用主备 keepalived + k8s keepalived 当k8s主机宕机之后根据priority来重新选举master
  7. k8s 删除不是running的pod

kubectl get po -n namespace --field-selector 'status.phase!=Running' -o json |kubectl delete -f -

标签:Node,常用,K8s,集群,原理,Pod,k8s,节点
From: https://blog.51cto.com/u_16056808/6195432

相关文章

  • Vue - watcher原理
    原理Watcher原理是先把自己设置到全局唯一指定的位置(window.target),然后读取数据。因为读取了数据,所以会触发这个数据的getter。然后在getter中就会从全局唯一的那个位置读取真正读取数据的watcher,并把这个watcher收集到Dep中去。通过这样的方式,watcher可以主动去订阅任意一个数......
  • flask请求上下文分析(request原理)、wtforms
    上节回顾#1蓝图第一步:导入第二步:实例化得到对象,可以指定static和templates第三步:app中注册蓝图,注册蓝图时,可以指定前缀第四步:使用蓝图,注册路由,注册请求扩展#2g对象当次请求的全局对象,在当次请求中可以放值和取值跟session的区别是session可......
  • 通过一个具体的例子,深入了解 SAP UI5 控件数据双向绑定的工作原理和问题排查方法试读
    笔者知识星球里有朋友提问:SAPUI5中的sap.m.select控件,在当前页面做任何操作时,都可以选中key值,但触发dialog之后,可以看到select框内的key值被清空,当关闭dialog后,再去选择key值,无任何反应,请问是select控件的问题还是dialog的问题又或者是odata写法有问题,谢谢!......
  • k8s 认证
    整体过程简述:请求发起方进行K8sAPI请求,经过Authentication(认证)、Authorization(鉴权)、AdmissionControl(准入控制)三个阶段的校验,最后把请求转化为对K8s对象的变更操作持久化至etcd中。认证阶段。当请求发起方建立与APIServer的安全连接后,进入请求的认证阶段(图中步骤1......
  • 小波变换原理简要实现和分析
    傅里叶变换是频谱分析的重要工具,适用于周期性平稳信号,但是对于非平稳信号而言,效果较差。其实质是卷积求正弦波相关性,由于正弦波不是能量有限信号,对无差别做一个全部卷积,算出来的结果不考虑时间。小波变换也是频谱分析的重要工具,基函数为能量有限信号,也可以进行时域分析。针对不......
  • 微机原理(二)
    第二章:微处理器与总线微型计算机组成传统电子计算机由五大部分组成:运算器、控制器、存储器(内部存储器、外部存储器)、输入设备、输出设备。外部设备:外部存储器、输入出设备。主机:运算器、控制器、、内部存储器。(微处理器)中央处理器(CPU):运算器、控制器。微处理器(CPU)......
  • 【FPGA 仿真和调试脚本】常用系统任务
    一、显示任务$display和$write系统显示任务$display和$write在仿真测试中是最为常用的信息显示方式。$display和$write任务最主要的区别在于,$display在一次输出后会自动换行,而$write则不会,他们的其他用法格式基本类似。【语法结构】【任务名】(“【可选字符串】+【格式】”,【信......
  • Java中线程的常用操作-后台线程、自定义线程工厂ThreadFactpry、join加入一个线程、线
    场景Java中Thread类的常用API以及使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126596884上面讲了Thread的常用API,下面记录下线程的一些常用操作。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现后台线程后台线程,是指运行时在后台提供的一......
  • Kubernetes(k8s)健康检查详解与实战演示(就绪性探针 和 存活性探针)
    一、概述Kubernetes中的健康检查主要使用就绪性探针(readinessProbes)和存活性探针(livenessProbes)来实现,service即为负载均衡,k8s保证service后面的pod都可用,是k8s中自愈能力的主要手段,主要基于这两种探测机制,可以实现如下需求:异常实例自动剔除,并重启新实例多种类型探针检......
  • 深度学习的基本原理和常用框架介绍
    深度学习是一种基于人工神经网络的机器学习方法,它可以从大量的数据中学习抽象和复杂的特征,从而实现各种智能任务,如图像识别、自然语言处理、语音识别等。深度学习的基本原理是利用多层的神经网络结构,通过前向传播和反向传播的算法,不断调整网络中的参数,使得网络的输出能够逼近或优......