热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kubernetes的基础概念及特点

本篇内容介绍了“kubernetes的基础概念及特点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下

本篇内容介绍了“kubernetes的基础概念及特点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

kubernetes(简称k8s)是一种用于在一组主机上运行和协同容器化应用程序的管理平台,皆在提供高可用、高扩展性和可预测性的方式来管理容器应用的生命周期。通过k8s,用户可以定义程序运行方式、部署升级策略、动态伸缩容,使得用户以一种更灵活可靠的方式来管理应用程序。

关于k8s,是一种对应用服务的打包、部署、监控等一整套生命周期的自动化管理平台,目前各大公司已在生产环境部署使用,同时k8s社区比较活跃,在未来一段时间内会越来越流行,可以说是以后服务部署的事实标准,对于Java开发者来说,你可以不直接使用它,但是不能不了解它。

总结来看,k8s特点如下:

  • 自动装箱:基于容器,结合调度策略将多种应用部署到同一节点上,提高资源利用率;

  • 自我修复:支持故障转移/重启,具有健康检查机制;

  • 水平扩展:通过命令手动执行扩容,可基于CPU等资源负载率来动态实现伸缩容;

  • 服务发现/负载均衡:通过KubeDNS(或CoreDNS)为系统内置了服务发现功能,为每个service配置DNS名称,service通过iptables或ipvs内建了负载均衡机制;

  • 自动部署:自动发布和回滚,支持灰度、增量发布等;

  • 配置管理:ConfigMap实现了配置数据与Docker镜像解耦,为开发部署提供了良好的灵活性;

  • 批处理:除了管理服务型应用之外,Kubernetes还支持批处理作业及CI(持续集成)。

从k8s的角度看,它把各个待管理的资源进行了抽象,比如针对服务器(物理机或者虚拟机)抽象出Node;对于容器不直接管理而是抽象出Pod来管理容器;对于集群内的服务调用,抽象出service来表示同类型的多个Pod,同时提供负载均衡策略等。

对于初学者来说,k8s的一些抽象资源和基本概念可能会造成一头雾水,本文就k8s的基础概念和组件进行简单分析,让初学者更快了解k8s概念,话不多说,let‘s go~

 

k8s基础概念

k8s使用共享网络将多个物理机(或者虚拟机)汇集到一个集群中,该集群是配置k8s所有组件、功能和工作负载的物理平台。集群中一台服务器会作为master负责管理整个集群(为了master高可用一般会将master部署成多节点)。

Master是集群的网关和中枢,负责诸如为用户和客户端暴露API、跟踪其他服务器的健康状态、以最优方式调度工作负载,以及编排其他组件之间的通信等任务,它是用户/客户端与集群之间的核心联络点,并负责Kubernetes系统的大多数集中式管控逻辑。单个Master节点即可完成其所有的功能,但出于冗余及负载均衡等目的,生产环境中通常需要协同部署多个此类主机。Node是Kubernetes集群的工作节点,负责接收来自Master的工作指令并根据指令相应地创建或销毁Pod对象,以及调整网络规则以合理地路由和转发流量等。理论上讲,Node可以是任何形式的计算设备,不过Master会统一将其抽象为Node对象进行管理。

 

几种资源抽象

  • Pod:k8s管理的最小调度单元,k8s不直接来管理容器,使用一个抽象的资源对象来封装一个或者多个容器,这个抽象即为Pod。同一Pod中的容器共享网络名称空间和存储资源,这些容器可经由本地回环接口lo直接通信,同时对于Mount、User及PID等资源也进行了隔离;

  • 标签资源和标签选择器:标签(Label)是将资源进行分类的标识符,k8s的Pod资源选择大都是基于标签来的,一个对象可以拥有多个标签,一个标签也可以附加于多个对象(通常是同一类对象)之上。标签选择器(Selector)全称为“Label Selector”,它是一种根据Label来过滤符合条件的资源对象的机制;

  • Controller:Pod控制器,尽管Pod是k8s的最小调度单元,但用户通常并不会直接部署及管理Pod对象,而是要借助于另一类抽象——控制器(Controller)对其进行管理,k8s的控制器包括ReplicationController、ReplicaSet、Deployment、StatefulSet、Job等,每种controller都有对应的功能(比如Deployment是最常见的无状态应用的控制器,它支持应用的扩缩容、滚动更新等操作,为容器化应用赋予了极具弹性的功能);

  • Service:Service是建立在一组Pod对象之上的资源抽象,它通过标签选择器选定一组Pod对象,并为这组Pod对象定义一个统一的固定访问入口(通常是一个IP地址);

  • 存储卷:一般是独立于容器文件系统之外的存储空间,常用于扩展容器的存储空间并为它提供持久存储能力,大体上可分为临时卷、本地卷和网络卷;

  • Name和Namespace:名称是网络资源的唯一标识符,通常在一个命名空间内,名称标识是唯一的,名称空间通常用于实现租户或项目的资源隔离,从而形成逻辑分组;

  • Ingress:k8s中将Pod进行了网络隔离,如果需要开放一些Pod供外部使用,则需要一个配置一个流量进入k8s集群内的通道,除了Service外,Ingress也是实现策略之一。

 

k8s组件

一个典型的k8s集群由master节点、多个工作节点和ETCD组成,其中ETCD作为集群状态存储。master节点负责整个集群的管理工作,为集群提供管理API,并负责编排和监控各工作节点,各工作节点已Pod形式管理运行容器。master主要由apiserver、controller-manager和scheduler三个组件组成,同时负责与ETCD教育存储集群状态数据,而每个工作节点主要包含kubelet、kube-proxy及容器引擎(最常见的是Docker)等组件。各个组件整体如下图:

kubernetes的基础概念及特点

 
master节点

master包含组件如下:

  • API server:对外提供restful api,k8s集群的网关;

  • Controller:Pod控制器,k8s通过控制器来管理Pod资源,控制器包括ReplicationController、ReplicaSet、Deployment、StatefulSet、Job等,每种controller都有对应的功能(比如Deployment是最常见的无状态应用的控制器,它支持应用的扩缩容、滚动更新等操作,为容器化应用赋予了极具弹性的功能);

  • Scheduler:K8s调度器,K8s管理成千上万容器资源,api server接收到请求之后就由Scheduler按照对应调度策略进行在不同Node间的请求调度操作;

  • ETCD:k8s集群状态都是存储在etcd中(通过API Server共享给集群的各组件及客户端),通过etcd的watch机制来进行k8s各组件的协同操作,一般etcd通过集群部署方式保证高可用。

 
node节点

node节点接受master的管理,负责管理各个Pod资源:

  • kubelet:kubelet是node的守护进程,node接受master的管控,Kubelet会向api server注册当前node,定期向master会报node资源占用情况;

  • 容器运行环境:node会提供一个容器运行环境,负责下载并运行容器,k8s目前支持的容器运行环境包括Docker、RKT、cri-o和Fraki等;

  • kube-proxy:每个node都需要一个kube-proxy进程,比如对service按需生成iptables或ipvs规则,控制流量访问。

 
核心组件

k8s除了etcd、master、node这几个组件之外,还有一些核心组件,如下:

  • DNS服务:目前k8s使用的是coreDNS,之前使用的是KubeDNS;

  • Kubernetes Dashboard:k8s的管理web UI;

  • Heapster:容器和节点的性能监控与分析系统,它收集并解析多种指标数据,如资源利用率、生命周期事件等。新版本的Kubernetes中,其功能会逐渐由Prometheus结合其他组件所取代。

  • Ingress Controller:Service是一种工作于传统层的负载均衡器,而Ingress是在应用层实现的HTTP(s)负载均衡机制。不过,Ingress资源自身并不能进行“流量穿透”,它仅是一组路由规则的集合,这些规则需要通过Ingress控制器(Ingress Controller)发挥作用。目前,此类的可用项目有Nginx、Traefik、Envoy及HAProxy等。


“kubernetes的基础概念及特点”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程笔记网站,小编将为大家输出更多高质量的实用文章!


推荐阅读
  • 本文|层面_Kubernetes概述
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Kubernetes概述相关的知识,希望对你有一定的参考价值。前言本文搜集大量关于Kuber ... [详细]
  • Kubernetes(k8s)基础简介
    Kubernetes(k8s)基础简介目录一、Kubernetes概述(一)、Kubernetes是什么(二& ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 2019我的金三银四
    先讲一下自己的情况吧,二本学生,17年毕业,目前在一家跨境电商从事Java技术开发工作(不是阿里,没那么厉害),技术栈目前偏向于容器云、持续集成持续交付这一块,也就是SpringBoot、Kuber ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 随着我司的应用都开始容器化,相应的ETL流程也需要迁移到容器中。常规的SQL和shell脚本迁移之后执行基本没有问题,主要的问题在于数据接入使用kettle的场景下,kettle启 ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • k8s进阶之搭建私有镜像仓库
    企业级私有镜像仓 ... [详细]
  • docker+k8s+git+jenkins
    docker+k8s+git+jenkins,Go语言社区,Golang程序员人脉社 ... [详细]
  • Zookeeper 总结与面试题汇总
    Zookeeper总结与面试题汇总,Go语言社区,Golang程序员人脉社 ... [详细]
  • 分布式大型互联网企业架构!
    2019独角兽企业重金招聘Python工程师标准摘要:开发工具1.EclipseIDE:采用Maven项目管理,模块化。2.代码生成: ... [详细]
author-avatar
aiminilee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有