首页 > 其他分享 >什么是kubernetes,kubernetes有什么作用?

什么是kubernetes,kubernetes有什么作用?

时间:2022-11-05 17:11:51浏览次数:73  
标签:kubernetes Kubernetes Service 什么 API 集群 Pod 节点 作用

1、介绍

kubernetes(简称K8S)是一个以“应用”为中心,管理容器生命周期,容器之间关系,集群资源调度的容器编排工具,是一个面向平台的平台。

为什么要简称K8S呢?

1、字母k和字母s中间有8个字母;

2、据说需要搭建8遍才能入门;

1、功能

  • 容器编排;

  • 应用容器的生命周期管理

  • 应用容器之间的关系管理

  • 集群资源调度

  • 构建其它的平台

2、运行逻辑

  • Kubernetes将所有工作节点的资源集结在一起形成一台更加强大的“服务器"

  • 计算和存储接口通过Master之上的API Server暴露

  • 客户端通过API提交应用程序的运行请求,而后由Master通过调度算法将其自动指派至某特定的工作节点以Pod对象的形式运行

  • Master会自动处理因工作节点的添加、故障或移除等变动对Pod的影响

3、节点类型

  • Master节点:控制节点

  • Worker节点:工作节点

2、Kubernetes组件

2-1、Master节点组件

2-1-1、API Server
  • 整个集群的 API 网关,应用程序为 kubekube-apiserver

  • 以API形式对外提供服务,服务器程序,监听在某个套接字上

  • 基于 http/https 协议以 REST 风格提供,几乎所有功能全部抽象为“资源”及相关的对象

  • 声明式 API,用于只需要声明对象的 “终态”,具体业务逻辑由各资源相关Controller 负责完成

  • 无状态,数据存储于 etcd 中

2-1-2、Scheduler
  • 调度器,负责为那些未能绑定到某节点的Pod,挑选一个最适配的Worker来运行它

  • 只会从API接收指令

  • 相关程序为 kube -scheduler

2-1-3、Controller Manager

☆ Controller的集合,由一组Kubernetes内置的Controller集结而成

☆ 负责实现客户端通过 API 提交的终态声明,相应用程序为 kubekube-controller-manager

☆ 由相关代码通过一系列步骤驱动 API 对象的“实际状态”接近或等同“期望状态”

☆ 除调度之外的编排决策,几乎都由Controller负责形式

2-1-4、Cluster Store
  • 集群状态数据存储系统,通常指的就是 etcd

  • 仅会同 API Server交互

2-2、Worker节点组件

2-2-1、kubelet
  • Kubernetes集群于每个 Worker 节点上的代理,相应程序为 kubelet

  • 接收并执行 Master 发来的指令,管理由 Scheduler 绑定至当前节点上的 Pod 对象的容器

    • 通过 API Server 接收 Pod 资源定义,或从节点本地目录中加载静态 Pod 配置

    • 借助于兼容 CRI 的容器运行时管理和监控 Pod 相关的容器

2-2-2、kube-proxy
  • 运行于每个 Worker 节点上,专用于负责将 Service 资源的定义转为节点本地的实现

    • iptables模式:将 Service 资源的 定义转为适配当前节点视角的iptables 规则

    • ipvs模式:将 Service 资源的 定义转为适配当前节点视角ipvs 和少量 iptables 规则

  • 是打通 Pod 网络在 Service 网络的关键所在

2-2-3、插件

负责扩展 Kubernetes 集群的功能应用程序,通常以 Pod 形式托管运行于 Kubernetes集群之上

2-2-3-1、必须插件
  • Network Plugin:网络插件,经由CNI接口,负责为Pod提供专用的通信网络,有多种实现,如:flannel、calico等

  • Cluster DNS:通常是指CoreDNS,集群DNS服务器,负责服务注册、发现和名称解析

2-2-3-2、重要插件
  • Ingress Controller:Ingress控制器,负责为Ingress资源提供具体的实现,实现http/https协议的七层路由和流量调度,有多种实现,如:Ingress-Nginx、Contour等

  • Dashboard: 基于Web的UI

  • 指标监控系统: prometheus

  • 日志系统:ELK、PLG等

3、POD

Kerbernetes本质上是“以应用为中心”的现代基础设施,Pod是其运行应用及应用调度的最小逻辑单元

  • 本质上是共享 Network 、IPC 和UTS 名称空间以及存储资源的容器集

    • 可将其想象成一台物理机或虚拟,各容器就是该主上的进程

    • 各容器共享网络协议栈、 网络设备、路由、IP 地址和端口等,但 Mount 、PID 和USER 仍隔离

    • 每个 Pod 上还可附加一个“存储卷( Volume)”作为该“主机”的外部存储,独立于 Pod 的生命周期,可由 Pod 内的 各容器共享

  • 模拟“不可变基础设施”,删除后可通过资源清单重建 - 具有动态性,可容忍误删除或主机故障等异常 - 存储卷可以确保数据能超远pod的生命周期

4、Service

Pod具有动态性,其IP地址在基于配置清单重构后也会重新分配,因而需要服务发现机制的支撑

Kubernetes使用 Service 资源和 DNS 服务( CoreDNS)进行服务发现

  • Service能够为一组提供了相同服务的 Pod 提供负载均衡机制,其 IP 地址( Service IP ,也称为 Cluster IP)即为客 户端流量入口

  • 一个 Service 对象存在于集群中的各节点之上,不会因个别故障而丢失,可为 Pod 提供固定的前端入口

  • Service使用 标签选择器 (Label Selector)筛选并匹配 Pod 对象上的标签( Label),从而发现 Pod(仅具有符合其标签选择器筛条件的 Pod 才可由Service对象作为后端端点使用)

5、工作负载型控制器

Pod 是运行应用的原子单元,其生命周期管理和健康状态监测由 kubelet 负责完成,而诸如更新、扩缩 容和重建等应用编排功能需要由专用的控制器实现,这类控制器即为工作负载型控制器

  • ReplicaSet和Deployment

  • DaemonSet

  • StatefulSet

  • Job和CrontJob

工作负载型控制器也通过标签选择器筛选Pod标签从而完成关联

工作负载型控制器的重心

  • 确保选定的 Pod 精确符合期望的数量

  • 数量不足时依据 Pod 模板 创建,超出时销毁多余的对象

  • 按配置定义进行扩容和缩容

  • 依照策略和配置进行应用更新

6、网络模型

Kubernetes集群上会存在三个分别用于节点、 Pod 和Service 的网络,于worker上完成交汇,有节点内核中的路由模块,以及iptables/netfilter和ipvs等完成网络间的流量转发

image-20221105162404895

6-1、节点网络

  • 集群节点间的通信网络,并负责打通与集群外部端点间的通信

  • 网络及各节点地址需要于Kubernetes部署前完成配置,非由Kubernetes管理, 因而需要由管理员手动进行,或借助于主机虚拟化管理程序进行

6-2、Pod网络

  • 为集群上的Pod对象提供的网络

  • 虚拟网络,需要经由CNI网络插件实现,例如:Flannel、Calico、Cilium等

6-3、Service网络

  • 在部署 Kubernetes 集群时指定,各 Service 对象使用的地址将从该网络中分配

  • Service对象的 IP 地址存在于其相关的 iptables 或ipvs 规则中

  • 由Kubernetes集群自行管理

6-4、通信流量

Kubernetes网络中主要存在 4中类型的通信流量

 - 同一Pod内的容器间通信
 - Pod间的通信
 - Pod与Service间的通信
 - 集群外部流量与Service间的通信

Pod网络需要借助于第三方兼容CNI规范的网络插件完成,这些插件需要满足一下功能要求:

 - 所有Pod间均可不经NAT机制而直接通信
 - 所有节点均可不经NAT机制直接与所有Pod通信
 - 所有Pod对象都位于同一平面网络中

7、kubernetes集群部署

7-1、部署模式

7-1-1、独立组件模式
  • 除Add-ons(插件)以外,个关键组件以二进制方式部署与节点上,并运行于守护进程;

  • 各Add-ons以Pod形式运行;

image-20221105163817021

7-1-2、静态Pod模式
  • 控制平面各组件以静态Pod对象运行于Master主机之上

  • kubelet和docker以二进制部署,运行为守护进程

  • kube-proxy等则以Pod形式运行

  • registry.k8s.io(2022年前:k8s.gcr.io)

image-20221105164058122

7-2、安装工具

  • 原生安装工具kubeadm

  • CNCF认证的安装工具

https://landscape.cncf.io/

image-20221105164446827

7-3、Kubeadm工具

Kubernetes社区提供的集群构建工具

  • 负责执行构建一个最小化可用集群并将其启动等必要的基本步骤

  • Kubernetes集群全生命周期管理工具,可用于实现集群的部署、升级、降级、卸载等

  • Kubernetes仅关心如何初始化并拉起一个集群,其职责仅限于下图中背景着色的部分:

image-20221105164923596

7-4、部署前提

  • 支持Kubernetes运行的Linux主机,例如Debian、RedHat等

  • 主机2GB以上内存,2核以上CPU(小于此配置,第二主节点加入集群会提示,并且无法加入)

  • 各主机间能够通过网络无障碍通信

  • hostname、MAC地址已经UUIP都是唯一,主机名能相互解析

  • 放行Kubernetes使用的各个端口,或者直接禁用(建议禁用)

  • 禁用swap

  • 时间同步

因Kubernetes所有镜像都在registry.k8s.io和k8s.gcr.io,建议使用国内阿里源或者华为源,或者根据情况,使用代理

image-20221105165539464

7-5、部署示例

请查看:https://blog.51cto.com/dayu/5825840

标签:kubernetes,Kubernetes,Service,什么,API,集群,Pod,节点,作用
From: https://www.cnblogs.com/wdy001/p/16860602.html

相关文章

  • kubernetes 之二进制方式部署
      我的资料链接:https://pan.baidu.com/s/18g0sar1N-FMhzY-FCMqOog 两种集群架构图    多master需要在集群上面加个lb,所有的node都需要连接lb,lb帮你转发到a......
  • Kubernetes_从云原生到kubernetes
    一、前言二、kubernetes和云原生CloudNative直接翻译为云原生,云原生官网:https://www.cncf.io/CNCF,表示CloudNativeComputingFoudation,翻译为云原生计算......
  • Vue2的组件中data为什么不能使用对象
    当一个组件被定义,data必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果data仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通......
  • 我为什么建议不要用CMake
    作者:朱金灿CMake的优点  CMake在开源代码中最常见的应用场景之一是生成很多平台的makefile或者project文件,这种统一管理的方式确实有其方便之处。尽管CMake有一些优点,我......
  • 基于docker和cri-dockerd部署kubernetes v1.25.3
    基于docker和cri-dockerd部署kubernetesv1.25.31、环境准备1-1、主机清单主机名IP地址系统版本k8s-master01k8s-master01.wang.orgkubeapi.wang.orgkube......
  • 说一下什么是三次握手和四次挥手
    一、三次握手(1)第一次握手就是客户端请求服务端连接,发送SYN报文置为1,并加上初始化序列号seq(2)当服务端收到请求后,会回复应答报文ACK置为1,并发送属于服务端的SYN连接请求,连......
  • JavaSE—变量的作用域和初始化
    一、变量的作用域变量被定义为只在某个程序块内或只在方法体内部有效,这种类型的变量通常被称为“局部变量”。局部变量的作用范围有效,只在相应的方法体或程序块内有效,超出......
  • 为什么建议初学者选择Python入门?
    这个星球的编程语言有数百上千种,能够称为热门的也只有那十几种而已,比如C、C++、Java、C#、PHP等,这些编程语言也都十分火爆。但对于新人来讲,尤其是现阶段对编程语言的优劣......
  • 1 JavaScript作用、功能和发展史
    文章目录​​前言​​​​1JavaScript基本介绍​​​​2JavaScript当前作用​​​​3JavaScript结构组成​​​​4JavaScript语言特点​​​​结语​​前言......
  • 总结:为什么你不容易坚持一件事?
    为自“渡一教育”的成哥,分享的。为什么你不容易坚持一件事?因为环境让我们对快乐的底线要求太高了,试着让自己过的原始一点。怎么坚持做一件事?1,坚持是比选择更重要的事情;1.1,......