首页 > 其他分享 >kubernetes介绍

kubernetes介绍

时间:2022-11-05 17:32:52浏览次数:91  
标签: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等完成网络间的流量转发

kubernetes介绍_k8s

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形式运行;

kubernetes介绍_k8s_02

7-1-2、静态Pod模式
  • 控制平面各组件以静态Pod对象运行于Master主机之上
  • kubelet和docker以二进制部署,运行为守护进程
  • kube-proxy等则以Pod形式运行
  • ​registry.k8s.io​​​(2022年前:​​k8s.gcr.io​​)

kubernetes介绍_kubernetes_03

7-2、安装工具
  • 原生安装工具kubeadm
  • CNCF认证的安装工具

​​​​https://landscape.cncf.io/​

kubernetes介绍_k8s_04

7-3、Kubeadm工具

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

  • 负责执行构建一个最小化可用集群并将其启动等必要的基本步骤
  • Kubernetes集群全生命周期管理工具,可用于实现集群的部署、升级、降级、卸载等
  • Kubernetes仅关心如何初始化并拉起一个集群,其职责仅限于下图中背景着色的部分:

kubernetes介绍_k8s_05

7-4、部署前提
  • 支持Kubernetes运行的Linux主机,例如Debian、RedHat等
  • 主机2GB以上内存,2核以上CPU(小于此配置,第二主节点加入集群会提示,并且无法加入)
  • 各主机间能够通过网络无障碍通信
  • hostname、MAC地址已经UUIP都是唯一,主机名能相互解析
  • 放行Kubernetes使用的各个端口,或者直接禁用(建议禁用)
  • 禁用swap
  • 时间同步

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

kubernetes介绍_k8s_06

7-5、部署示例

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

标签:kubernetes,Kubernetes,Service,介绍,API,集群,Pod,节点
From: https://blog.51cto.com/dayu/5826044

相关文章

  • 什么是kubernetes,kubernetes有什么作用?
    1、介绍kubernetes(简称K8S)是一个以“应用”为中心,管理容器生命周期,容器之间关系,集群资源调度的容器编排工具,是一个面向平台的平台。为什么要简称K8S呢?1、字母k和字母s中......
  • HTML介绍
    目标:会使用HTML5的基本结构创建网页会使用文本相关标签排版文本信息会使用图像相关标签实现图文并茂的页面会使用标签创建超链接、锚链接及功能性链接1、什么是HTML......
  • 23种设计模式-原型设计模式介绍加实战
    1、描述用原型实例指定创建对象的种类,并且通过拷贝这些原型对象的属性来创建新的对象。通俗点的意思就是一个对象无需知道任何创建细节就可以创建出另外一个可定制的对象......
  • kubernetes 之二进制方式部署
      我的资料链接:https://pan.baidu.com/s/18g0sar1N-FMhzY-FCMqOog 两种集群架构图    多master需要在集群上面加个lb,所有的node都需要连接lb,lb帮你转发到a......
  • SpringBoot02-对yaml的介绍(配置环境)
    一、SpringBoot配置文件的分类和优先级配置的介绍:yaml二、介绍yaml格式1-他和其他传统格式的不同2-yaml的基本语法3-yaml数据格式代码块解析:server:port:80......
  • .net 反射简单介绍
    1.什么是反射反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型......
  • 介绍箭头函数的 this
    由于箭头函数不绑定this,它会捕获其所在(即定义的位置)上下文的this值,作为自己的this值1.所以call()/apply()/bind()方法对于箭头函数来说只是传入参数,对它的this......
  • Kubernetes_从云原生到kubernetes
    一、前言二、kubernetes和云原生CloudNative直接翻译为云原生,云原生官网:https://www.cncf.io/CNCF,表示CloudNativeComputingFoudation,翻译为云原生计算......
  • 我看谁还不懂多线程之间的通信+基础入门+实战教程+详细介绍+附源码
    一、多线程之间的通信(Java版本)1、多线程概念介绍多线程概念在我们的程序层面来说,多线程通常是在每个进程中执行的,相应的附和我们常说的线程与进程之间的关系。线程......
  • 更多了解 Python: 一些有趣的知识介绍
      有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少......