首页 > 其他分享 >kubernetes应用编排的基本工作逻辑

kubernetes应用编排的基本工作逻辑

时间:2024-08-14 17:28:59浏览次数:13  
标签:容器 逻辑 Service kubernetes 控制器 编排 应用 Pod 共享

Pod和应用

image

  • Kubernetes本质上是“以应用为中心”的现代应用基础设施,Pod是其运行应用及应用调度的最小逻辑单元
    • 本质上是共享Network、IPC和UTS名称空间以及存储资源的容器集
      • 可将其想象成一台物理机或虚拟机,各容器就是该主机上的进程
      • 各容器共享网络协议栈、网络设备、路由、IP地址和端口等,但Mount、PID和USER仍隔离
      • 每个Pod上还可附加一个“存储卷(Volume)”作为该“主机”的外部存储,独立于Pod的生命周期,可由Pod内的各容器共享
    • 模拟“不可变基础设施”,删除后可通过资源清单重建
      • 具有动态性,可容忍误删除或主机故障等异常
      • 存储卷可以确保数据能超越Pod的生命周期
  • 在设计上,仅应该将具有“超亲密”关系的应用分别以不同容器的形式运行于同一Pod内部
  1. 共享网络名称空间 (Network Namespace)
    • 网络共享:在同一个 Pod 内的所有容器共享同一个 IP 地址和网络接口。这意味着这些容器可以通过 localhost 直接相互通信,而不需要通过外部网络。
    • 端口共享:由于容器共享 IP 地址,因此它们共享相同的端口空间。每个容器可以监听不同的端口号来提供服务,但不能有冲突的端口。
  2. 共享 IPC 名称空间 (Inter-Process Communication Namespace)
    • 进程间通信:Pod 内的容器可以通过共享的 IPC 机制(如信号量、消息队列、共享内存)进行通信。这种共享使得容器之间能够在同一个进程通信环境下工作,协同处理任务。
  3. 共享 UTS 名称空间 (UTS Namespace)
    • 主机名和域名共享:Pod 内的容器共享相同的 UTS 名称空间,这意味着它们共享相同的主机名(hostname)和域名(domain name)。对于容器内的应用程序来说,它们会看到相同的主机名,这有助于跨容器的应用程序更容易识别和协作。
  4. 共享存储资源
    - 存储卷共享:Pod 内的容器可以通过挂载到 Pod 的同一个存储卷来共享文件系统。这使得容器可以访问相同的数据,并在其上进行读写操作。这种共享对于需要协同处理数据的应用程序特别有用,比如一个容器生成文件,另一个容器处理或读取这些文件。
  5. 如何理解这些共享特性?
    • 紧密耦合的容器:这些共享特性使得 Pod 内的容器紧密耦合,类似于在一个物理机或虚拟机上运行的进程。它们能够在同一个网络环境下通信,共享进程间通信机制,以及使用相同的存储资源。
    • 轻量级的虚拟机:尽管 Pod 内的容器共享这些资源,它们仍然是独立的容器,具有自己的文件系统、进程和用户空间。Pod 提供了一种类似于虚拟机的隔离环境,但比虚拟机更轻量。

为什么要设计Service资源?

image

  • Pod具有动态性,其IP地址也会在基于配置清单重构后重新进行分配,因而需要服务发现机制的支撑
  • Kubernetes使用Service资源和DNS服务(CoreDNS)进行服务发现
    • Service能够为一组提供了相同服务的Pod提供负载均衡机制,其IP地址(Service IP,也称为Cluster IP)即为客户端流量入口
    • 一个Service对象存在于集群中的各节点之上,不会因个别节点故障而丢失,可为Pod提供固定的前端入口
    • Service使用标签选择器(Label Selector)筛选并匹配Pod对象上的标签(Label),从而发现Pod
      • 仅具有符合其标签选择器筛选条件的标签的Pod才可由Service对象作为后端端点使用

Pod 和工作负载型控制器

image

  • Pod是运行应用的原子单元,其生命周期管理和健康状态监测由kubelet负责完成,而诸如更新、扩缩容和重建等应用编排功能需要由专用的控制器实现,这类控制器即工作负载型控制器
    • ReplicaSet和Deployment
    • DaemonSet
    • StatefulSet
    • Job和CronJob
  • 工作负载型控制器也通过标签选择器筛选Pod标签从而完成关联
  • 工作负载型控制器的工作重心
    • 确保选定的Pod精确符合期望的数量
      • 数量不足时依据Pod模板创建,超出时销毁多余的对象
    • 按配置定义进行扩容和缩容
    • 依照策略和配置进行应用更新

部署并访问应用

部署应用

  • 依照编排需求,选定合适类型的工作负载型控制器
  • 创建工作负载型控制器对象,由其确保运行合适数量的Pod对象
  • 创建Service对象,为该组Pod对象提供固定的访问入口
    image

请求访问Service对象上的服务

  • 集群内部的通信流量也称为东西向流量,客户端也是集群上的Pod对象;
  • Service同集群外部的客户端之间的通信流量称为南北向流量,客户端是集群外部的进程;
    • 另外,集群上的Pod也可能会与集群外部的服务进程通信,
      image

标签:容器,逻辑,Service,kubernetes,控制器,编排,应用,Pod,共享
From: https://www.cnblogs.com/Dxj01/p/18359416

相关文章

  • kubernetes 核心组件详解
    Kubernetes是什么?**Kubernetes集群(KubernetesCluster)是一个由多个节点组成的系统,用于自动化部署、管理、扩展和操作容器化应用程序。Kubernetes是一种开源的容器编排平台,它通过集群的形式来管理容器,使得应用的运行、管理和扩展变得更加高效和自动化。基础概念与组件docker......
  • kubernetes负载感知调度
    背景kubernetes的原生调度器只能通过资源请求来调度pod,这很容易造成一系列负载不均的问题,并且很多情况下业务方都是超额申请资源,因此在原生调度器时代我们针对业务的特性以及评估等级来设置Requests/Limit比例来提升资源利用效率。在这种场景下依然存在很多问题:节点负载......
  • 拆除kubeadm部署的Kubernetes 集群
    kubeadm拆除Kubernetes集群工作节点在拆除集群之前,先从集群中删除所有的工作节点,而后拆除各控制平面节点。若仅拆除单个已然处于正常工作状态的节点:先禁止该节点作为调度目标:kubectlcordonNODE然后排空该节点:kubectldrainNODE待排空操作完成后,从控制平面上删除该节点......
  • 附038.Kubernetes_v1.30.3高可用部署架构二
    部署组件该Kubernetes部署过程中,对于部署环节,涉及多个组件,主要有kubeadm、kubelet、kubectl。kubeadm介绍Kubeadm为构建Kubernetes提供了便捷、高效的“最佳实践”,该工具提供了初始化完整Kubernetes过程所需的组件,其主要命令及功能有:kubeadminit:用于搭建Kuberne......
  • dapr部署到kubernetes
    apiVersion:apps/v1kind:Deploymentmetadata:name:dev-backendnamespace:dapr-demo03labels:app:app-backendservice:service-backendspec:replicas:3selector:matchLabels:app:dev-backendtemplate:metadata:......
  • kubernetes基于csi使用rbd存储
    描述ceph-csi扩展各种存储类型的卷的管理能力,实现第三方存储ceph的各种操作能力与k8s存储系统的结合。通过ceph-csi使用cephrbd块设备,它动态地提供rbd以支持Kubernetes持久化存储,并将这些rbd映射给pod做为块设备持久化数据使用。Ceph将pod存在块设备的数据以副本......
  • 主线程等待所有其他线程执行完毕,然后再继续执行主线程的逻辑,有以下几种方法可以实现:
    ##1.使用`Thread.join()``Thread.join()`方法会让主线程等待被调用线程执行完毕之后再继续执行。####示例代码:```javapublicclassMain{publicstaticvoidmain(String[]args){//创建3个线程Threadthread1=newThread(()->{Syste......
  • 春秋云境 | 逻辑漏洞 | CVE-2022-23134
    目录靶标介绍开启靶场获取flag靶标介绍ZabbixSiaZabbix是拉脱维亚ZabbixSIA(ZabbixSia)公司的一套开源的监控系统。该系统支持网络监控、服务器监控、云监控和应用监控等。Zabbix存在安全漏洞,该漏洞源于在初始设置过程之后,setup.php文件的某些步骤不仅可以由超级......
  • 春秋云境 | 逻辑漏洞 | CVE-2020-13933
    靶标介绍<p>ApahceShiro由于处理身份验证请求时出错存在权限绕过漏洞,远程攻击者可以发送特制的HTTP请求,绕过身份验证过程并获得对应用程序的未授权访问。</p>开启靶场发现不管拿点哪里都是登录页面,发现登录框那里写着flag在/admin里访问之后并没有反应,在后......
  • 利用Jenkins Pipeline高效部署Kubernetes服务
    什么是JenkinsPipelineJenkinsPipeline是一种持续集成和持续交付(CI/CD)的功能,它允许开发者将复杂的构建、测试和部署流程编码为一系列称为“管道”的自动化步骤。这些步骤以Groovy脚本的形式编写,并且可以在Jenkins中可视化管理。Pipeline提供了代码化和可重用的构建过程,支持更......