【云原生】容器编排工具Kubernetes

这篇具有很好参考价值的文章主要介绍了【云原生】容器编排工具Kubernetes。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【云原生】容器编排工具Kubernetes,kubernetes,java,容器,云原生,linux,运维

目录

一、 K8S介绍

官网地址:

1.1docker编排与k8s编排相比

1.2特性

1.3功能

二、K8S重要组件

2.1核心组件

(1)Kube-apiserver

(2)Kube-controller-manager

(3)Kube-scheduler

(4)Node

①kubelet

②kube-proxy

③docker

(5)etcd

2.2Kubernetes工作原理

三、Pod

3.1 Pod控制器

(1)Deployment

(2)ReplicaSet

(3)StatefulSet

(4)DaemonSe

(5)Job 和 CronJob

四、五大标签选择器

4.1Label(标签)

4.2Service

(1)三个流量调度模式

4.3Ingress

4.4Name

(1)资源

4.5Namespace(命名空间选择器)


一、 K8S介绍

Kubernetes 发布于 2014年6月, 源于希腊语,意为 “舵手” 或 “领航员”,由于 kubernetes从k 到s中间有8个字母,所以简称k8s。

Google 在十年前就已经将容器化作为基础架构,borg 就是 Google 内部的大型集群管理系统,borg 系统并不开源。在docker 大规模容器化后,Google 为了迅速占领 docker 容器化管理, Google 基于 borg 的设计理念使用 Go 语言开发新的组件系统 Kubernetes,并且开源给了CNCF。

官网地址:

k8s官网地址:Kubernetes Documentation | Kubernetes

中文版:https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/

1.1docker编排与k8s编排相比

  • 单机使用,无法有效集群
  • 随着容器数量的上升,管理成本攀升
  • 没有有效的容灾、自愈机制
  • 没有预设编排模版,无法实现快速、大规模容器调度
  • 没有统一的配置管理中心工具
  • 没有容器生命周期的管理工具
  • 没有图形化运维管理工具

1.2特性

 弹性伸缩  以最小的成本运行服务

 自我修复 
 自动发布(默认回滚发布模式)
 集中化配置管理和密钥管理(密钥是加密的)
 存储编排,支持外挂存储并对外挂存储资源进行编排
 任务批量处理运行
 提供一次性任务,定时任务;满足批量数据处理和分析的场景。

1.3功能

以集群的方式运行、管理跨机器的容器
解决docker跨机器容器之间的通讯问题
K8S的自我修复机制使得容器集群总在运行在用户期望的状态

二、K8S重要组件

2.1核心组件

(1)Kube-apiserver

(2)Kube-controller-manager

负责管理各种控制器,监控集群状态并自动执行相应操作。

(3)Kube-scheduler

根据资源需求和调度策略,将 Pod 调度到合适的节点上运行。

预选策略(predicate)

优选策略(priorities)

(4)Node

①kubelet

运行在每个节点上,负责管理容器和 Pod 生命周期,并与 API Server 通信。

②kube-proxy

负责为 Pod 提供网络代理和负载均衡功能。

③docker

容器引擎,运行容器,负责本机容器的创建删除

(5)etcd

分布式键值存储系统,用于存储集群的配置数据和状态。

这些核心组件共同协作,实现了 k8s 的主要功能,如容器编排、自动扩展、服务发现和负载均衡等。此外,还有其他辅助性的组件如 DNS 服务(CoreDNS)、日志收集(Fluentd)、监控(Prometheus)等,它们可以根据具体需求来选择是否部署。

2.2Kubernetes工作原理

【云原生】容器编排工具Kubernetes,kubernetes,java,容器,云原生,linux,运维

用户通过kubectl工具发送请求通过认证给kube apiserver来创建pod请求,apiserver会将相关信息写入etcd当中,随后apiserver会找kube controller-manager创建相应pod,controller-manager会通过apiserver会在etcd读取数据寻找相应pod信息,之后apiserver找到scheduler去调度pod,关于pod调到哪里还是通过apiserver读取etcd里的数据获得相关node节点信息,并找到最适合运行pod的节点,最后scheduler通过算法调度出预选策略优选策略,算出应该把pod调度到哪个node节点上运行,之后scheduler通过apiserver找到对应node节点上的kubelet组件,通过这个组件创建并维护pod,相关容器则是通过docker创建。然后这些pod通过kube proxy关联起来成为集群,kube proxy使用service资源使用统一IP地址暴露出去,外部用户就可以通过这个ip地址轮巡到pod里面所运行的业务了。kubelet会监事这个node上面啊运行了多少资源,以及pod相关的状态和信息,发送给apiserver,apiserver会将信息写入etcd并保存起来。pod的维护由controller-manager来做,当pod的数量不满足预设的数量时,它就会再去创建到相应的预设数量来保证pod的总量。

三、Pod

一个Pid可以放多个容器,一个Pid中的容器可以共享资源,不同Pid中的容器不能相互访问(默认情况)。

【云原生】容器编排工具Kubernetes,kubernetes,java,容器,云原生,linux,运维

3.1 Pod控制器

(1)Deployment

建立在 ReplicaSet 之上,提供了更高级别的应用程序部署功能。可以方便地进行滚动更新、版本回滚等操作。

(2)ReplicaSet

用于管理 Pod 的副本数量,确保指定数量的 Pod 始终处于运行状态。支持滚动更新应用程序。

【云原生】容器编排工具Kubernetes,kubernetes,java,容器,云原生,linux,运维

(3)StatefulSet

用于管理有状态的应用程序,每个 Pod 都有唯一标识和稳定的网络标识。适用于需要持久化存储和有序部署的应用程序。

(4)DaemonSe

确保每个节点上都运行一个 Pod 的控制器。适用于在每个节点上运行系统级别的守护进程。

(5)Job 和 CronJob

用于批处理任务或定时任务的控制器。执行完任务后会自动停止 Pod。

这些控制器根据用户定义的规则和策略,自动管理 Pod 的生命周期,确保集群中的应用程序正常运行和扩展。通过这些控制器,可以实现灵活的应用程序管理和自动化操作。

四、五大标签选择器

4.1Label(标签)

Label Selector 基于标签对资源进行选择和过滤。标签是键值对的形式,可以附加在各种 Kubernetes 资源上,如 Pod、Service、Deployment 等。通过 Label Selector,可以根据标签的匹配规则来选择特定的资源。

4.2Service

Service 是 Kubernetes 资源,用于暴露应用程序内部的 Pod。它定义了一组逻辑上相关的 Pod,并为它们创建了一个稳定的网络终结点(Endpoint)。通过 Service,可以为应用程序提供一个统一的入口,使得客户端能够访问后端 Pod 的服务。Service 可以是 ClusterIP、NodePort、LoadBalancer 或 ExternalName 类型,用于不同的网络访问方式。

(1)三个流量调度模式

userspace(废弃)

ipvs(推荐,性能最好)

通过ip地址直接转发

IP tables(濒临废弃)(默认)

从上到下转发

4.3Ingress

Ingress 是一种 Kubernetes 资源,用于将外部流量引导到集群内部的服务。它充当了流量入口的角色,通过定义规则和路由来决定如何将请求转发到后端的 Service 中的 Pod。Ingress 可以实现负载均衡、HTTPS/TLS 加密、URL 路由等功能,提供了更高级别的流量控制和管理。

4.4Name

Name 是 Kubernetes 资源的一个属性,用于标识该资源的名称。每个资源都必须具有唯一的名称。例如,Pod、Deployment、Service 等所有资源都需要指定一个名称以便在集群中进行引用和操作。

(1)资源

    api     版本
    kind       类别
    metadata     元数据信息
    spec清单
    status    状态

4.5Namespace(命名空间选择器)

Namespace Selector 用于选择特定的命名空间(Namespace)。命名空间是 Kubernetes 中用于组织和隔离资源的一种机制,通过命名空间选择器可以选择所需的命名空间中的资源。

【云原生】容器编排工具Kubernetes,kubernetes,java,容器,云原生,linux,运维文章来源地址https://www.toymoban.com/news/detail-700070.html

到了这里,关于【云原生】容器编排工具Kubernetes的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes VS Docker Swarm:选择适合自己的容器编排工具

    容器编排工具是一种自动化部署和管理容器的工具。 利用容器编排工具可以方便地解决容器化应用程序的部署、扩展和高可用性等问题。 Kubernetes 和 Docker Swarm 是目前最流行的两个容器编排工具,因此选用它们来进行比较。 1.1 Kubernetes 的来源和发展背景 Kubernetes 源于 Google 的

    2024年02月06日
    浏览(72)
  • 45了解容器编排工具 Kubernetes 的基本概念和应用,包括 Pod、Service

    Kubernetes 是一种用于自动部署、扩展和管理容器化应用程序的开源容器编排工具。它可以轻松地管理和编排应用程序容器,确保它们在大规模的云环境中高效、可靠地运行。本教程将介绍 Kubernetes 的基本概念和应用,包括 Pod 和 Service。 Pod 是 Kubernetes 中最小的可部署对象,是

    2024年02月08日
    浏览(41)
  • 探索云原生容器编排技术:如Kubernetes如何为大数据处理和AI模型的自动化部署带来便利

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云原生 ✨文章内容: 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 Kubernetes是一个强大的容器编排和自动化部署工具,它为大数据处理和

    2024年02月10日
    浏览(56)
  • 【容器编排】初识 Kubernetes

    目录 1.简介 2.为什么需要 k8s 3.k8s 能做什么? 4.k8s 不是什么? 1.简介 摘取官网: 概述 | Kubernetes         Kubernetes 这个名字源于希腊语,意为 舵手 或 飞行员 。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模

    2024年02月14日
    浏览(58)
  • 容器编排的未来:探索基于Kubernetes的微服务编排解决方案

    作者:禅与计算机程序设计艺术 当今的云计算环境下,容器技术正在成为主流,越来越多的公司选择基于容器技术实现应用部署及运行。容器编排技术也逐渐被普遍采用。通过容器编排工具可以将复杂的分布式系统架构部署、管理及扩展起来,从而提供一个高可用、易于维护

    2024年02月14日
    浏览(35)
  • Docker和Kubernetes:构建现代应用容器编排系统

    作者:禅与计算机程序设计艺术 Docker是一个开源的应用容器引擎,可以轻松打包、部署及运行应用程序。Kubernetes(简称K8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用的容器集群管理系统。通过对Docker和Kubernetes的结合,能够更高效地自动化地部署和管理容

    2024年02月07日
    浏览(41)
  • 【容器化应用程序设计和开发】2.2 容器编排和Kubernetes调度

    往期回顾: 第一章:【云原生概念和技术】 第二章:2.1 容器化基础知识和Docker容器 第二章:2.2 Dockerfile 的编写和最佳实践 容器编排是指自动化部署、管理和运行容器化应用程序的过程。Kubernetes 是一个流行的容器编排平台,它提供了一种自动化的方式来创建、部署和管理容

    2024年02月03日
    浏览(41)
  • Kubernetes(k8s)容器编排Pod介绍和使用

    Pod是kubernetes中你可以创建和部署的最小也是最简的单位,一个Pod代表着集群中运行的一个进程。 Pod有两个必须知道的特点 通过yaml文件或者json描述Pod和其内容器的运行环境和期望状态,例如一个最简单的运行nginx应用的pod,定义如下 3.1.1 参数描述 下面简要分析一下上面的

    2024年02月08日
    浏览(78)
  • 【基于容器的部署、扩展和管理】3.1 容器编排系统和Kubernetes集群的构建

    往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 基于容器的部署、扩展和管理是一种现代软件开发和部署的方式,它提供了快速、可重复、可移植的开发和部署流程,同时也简化了应用程序的扩展和管理。 在基于容器的部署中,应用程序

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包