Kubernetes 概述
一、背景介绍
云计算发展迅速
-IaaS
-PaaS
-SaaS
Docker技术正在突飞猛进
– 构建一次,随处运行
– 容器快速且轻量
– 完整的生态环境
2.什么是Kubernetes?
首先,它是基于容器技术的分布式架构的全新领先解决方案。 Kubernetes(k8s)是Google的开源容器集群管理系统(Google内部:Borg)。基于Docker技术,提供容器化应用部署运行、资源调度、服务发现、动态伸缩等一整套功能,提高大规模容器集群管理的便捷性。
Kubernetes是一个完整的服务提供者,具有完整的集群管理能力、多级安全保护和访问机制、多租户应用支持、透明的服务注册和发现机制、内置的智能负载均衡器以及强大的分布式系统支持。平台。自愈能力、滚动服务升级和在线扩容能力、可扩展的自动资源调度机制、多粒度资源配额管理。同时,Kubernetes提供了完善的管理工具,涵盖了开发、部署测试、运维监控等各个方面。
在Kubernetes中,服务是分布式集群架构的核心。服务对象具有以下重要特征:
通过具有唯一指定的名称、虚拟IP(集群IP、服务IP 或VIP)和端口号,您可以表示映射到提供此服务功能的一组容器应用程序的特定远程服务功能。目前,我们对外提供基于socket通信的服务,如Redis、Memcache、MySQL、Web服务器,或者实现特定业务的特定TCP服务器进程。 Kubernetes 允许通过一个服务连接到指定的服务,该服务通常由多个相关的服务进程提供,每个服务进程都是一个独立的端点(IP+端口)接入点。 Kubernetes 透明的负载均衡和故障恢复机制确保支持您团队的常规调用,无论后端有多少服务进程,或者故障是否导致服务进程重新部署到另一台机器上都没有影响。更重要的是,服务本身创建后就不会改变。这意味着使用Kubernetes 集群,您不必担心更改服务的IP 地址。
容器提供了强大的隔离能力。我们需要将提供服务的进程组分离到容器中。为了实现这个目标,Kubernetes 设计了一个Pod 对象,将每个服务进程封装到对应的Pod 中,使其成为一个运行在Pod 内部的容器。为了建立Services和Pod之间的关联管理,Kubernetes给每个Pod打上标签。例如,运行MySQL的Pod标记为name=mysql,运行PHP的Pod标记为name=php,然后标记对应的Service。定义一个标签选择器Label Selector,可以更好的解决Services和Pod之间的关联问题。
从集群管理的角度来看,Kubernetes 将集群中的机器分为Master 和Worker 节点组,Master 节点运行一组与集群管理、 kube-apiserver 和kube-controller-manager 相关的进程。这些进程提供了资源管理、Pod调度、弹性伸缩、安全控制、系统监控、纠错等集群范围的管理功能,这些功能都是自动完成的。节点作为集群中的工作节点,Kubernetes 在节点上管理的最小执行单元是Pod。节点运行Kubernetes kubelet 和kube-proxy 服务进程。这些服务进程负责创建、启动、监视、重新启动和销毁Pod 以及实现软件模式负载均衡器。
Kubernetes集群解决了传统IT系统中的两大问题:扩展和服务升级。只需为与需要扩展的服务关联的Pod 创建复制控制器(RC),即可轻松解决服务扩展和后续升级等问题。在RC 定义文件中包含三个重要信息:
目标Pod 定义。目标Pod 应运行的副本数(replicas)。创建RC后,Kubernetes通过定义的标签排除对应的Pod实例。监控RC并实时监控其状态和数量。如果实例数量小于定义的副本数量,则根据RC中定义的Pod模板创建新的Pod并调度新的Pod。连接到适当的节点并开始运行,直到Pod 实例数量达到预定目标。这个过程是完全自动化的。
建筑资料采集地址:895244712
Kubernetes 优势:
– 容器编排
– 轻的
– 开源
弹性拉伸
– 负荷分配
•Kubernetes核心概念
1. 大师
k8s集群的管理节点负责管理集群并提供对集群资源数据的访问。 etcd存储服务(可选),运行Api Server进程、Controller Manager服务进程、Scheduler服务进程,并关联worker节点。 Kubernetes API Server 为HTTP REST 接口提供主要服务流程,是所有Kubernetes 资源的增删改查等操作的单一入口点。这也是集群控制的入口流程。 Kubernetes Controller Manager 是Kubernetes 所有资源对象的自动化控制中心,也是负责资源调度(Pod 调度)的进程。
2. 节点
节点是在Kubernetes 集群架构中运行Pod 的服务节点(也称为代理或Minion)。节点是Kubernetes 集群操作的单位,用于托管分配的pod 的操作,是pod 运行的主机。与主管理节点关联,包含名称、IP、系统资源信息。运行dockereninge 服务、守护进程kunelet 和负载均衡器kube-proxy。
每个节点运行一组主要进程: kubelet:负责创建、启动和关闭pod 容器。 kube-proxy:实现Kubernetes Service 通信和负载均衡机制的关键组件。 Docker Engine,负责创建和管理本地容器。默认情况下,这也是kubelet 首选的节点管理方法。进程定期向master 报告自己的情报,例如操作系统、Docker 版本、CPU 和内存以及正在运行的pod。这样可以让master了解各个节点的资源使用情况,提供高效、均衡的资源调度策略。
3.吊舱
节点一个节点上运行的多个相关容器的组合。 Pod 中的容器在同一主机上运行,使用相同的网络命名空间、IP 地址和端口,并且可以通过localhost 进行通信。 Pod 是创建、调度和管理Kurbernetes 的原子单元,提供比容器更高层次的抽象,使部署和管理更加灵活。一个Pod 可以包含一个容器或多个相关容器。
Pod 实际上有两种类型:常规Pod 和静态Pod,后者不驻留在Kubernetes 的etcd 存储中,而是存储在特定节点上的特定文件中。当一个普通的pod 创建后,它会被放置在etcd 存储中,由Kubernetes master 调度到特定的节点进行绑定,然后pod 被kubelet 进程实例化到关联的Docker 集合中。对应节点上的容器ice启动。默认情况下,当pod 中的容器死亡时,Kubernetes 会自动检测到并重新启动pod(如果pod 所在的节点宕机,则启动所有pod)。它将被重新安排到另一个节点。
建筑资料采集地址:895244712
4. 复制控制器
复制控制器用于管理Pod副本并确保集群中存在指定数量的Pod副本。如果集群中的副本数量大于指定数量,超过指定数量的容器将被停止。否则,将启动少于指定数量的容器,以便数量不会发生变化。复制控制器是实现弹性伸缩、动态扩展、滚动升级的核心。
5.服务
服务定义了pod 的逻辑集合以及访问该集合的策略,并且是真实服务的抽象。服务提供统一的服务访问入口、服务代理和发现机制,将多个Pod关联到相同的标签。用户不需要知道后台Pod 如何运行。
从外部系统访问服务时出现问题
首先,您需要了解Kubernetes 中的三个IP。
Node IP:节点节点的IP地址
Pod IP:Pod IP 地址
集群IP:服务的IP地址
首先,节点IP是你的Kubernetes集群中节点的物理网卡IP地址。属于该网络的所有服务器都可以通过该网络直接通信。这也表明,Kubernetes集群外部的节点访问Kubernetes集群内部的节点或者TCP/IP服务时,必须通过节点IP进行通信。
接下来,Pod IP 是每个Pod 的IP 地址,通常根据docker0 网桥的IP 地址段分配。
最后,虽然集群IP是虚拟IP,但它类似于假IP网络,原因如下:
集群IP仅作用于Kubernetes服务对象,由Kubernetes管理和分配。集群IP没有“实体网络对象”来响应。集群IP必须形成特定的服务端口。单独的集群IP没有通信基础设施,属于封闭的空间,例如Kubernetes集群。在Kubernetes 集群内,节点IP 网络、Pod IP 网络和集群IP 网络之间的通信使用Kubernetes 自己设计的特殊编程路由规则。
6. 标签
Kubernetes 中的所有API 对象都是通过标签来标识的。标签本质上是一组键值对,其中键和值由用户指定。标签可以附加到各种资源对象,例如节点、pod、服务和RC。一个资源对象可以定义任意数量的标签,同一个标签也可以添加到任意数量的资源对象上。标签是复制控制器和服务工作的基础。两者通过标签与节点上运行的pod关联起来。
通过将一个或多个不同的标签与给定的资源对象捆绑在一起,可以实现多维度的资源组管理能力,实现灵活便捷的资源分配、调度、配置等管理任务。
常用的标签有:
13.作业控制器
管理和维护作业,为Jods 创建一次性任务Pod,并确保作业完成指定数量的任务。
14.Pod 自动缩放控制器
它实现Pod的自动伸缩,定期检索监控数据,进行策略匹配,并在满足条件时执行Pod伸缩操作。
Kubernetes Node运行节点来运行和管理业务容器,包括以下组件:
1.库贝雷特
Kubelet负责管理和控制容器,接收来自Kubernetes API服务器的Pod创建请求,启动和停止容器,监控容器执行状态,并向Kubernetes API服务器报告。
2.Kubernetes代理
Kubernetes Proxy,负责为Pod创建代理服务,从Kubernetes API Server中检索所有服务信息,根据服务信息创建代理服务,实现服务到Pod的请求的路由转发,从而实现Kubernetes级别的。虚拟服务。传输网络。
3. 码头工人
容器服务必须运行在节点上
原文转载于此:https://blog.csdn.net/weixin_43277643/article/details/83382532
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83539.html