当前位置: 代码网 > it编程>编程语言>Java > 最新【云原生 从零开始学Kubernetes】一、kubernetes到底是个啥,2024年最新面试大数据开发开发十大问题

最新【云原生 从零开始学Kubernetes】一、kubernetes到底是个啥,2024年最新面试大数据开发开发十大问题

2024年07月28日 Java 我要评论
是一个开源的,基于go语言开发, 容器集群管理系统/容器编排平台。容器内服务可能由于进程堵塞无法处理请求,可以设置监控检查策略保证可用性当所部署的Node节点有问题时,会对容器进行重新部署和重新调度,并且当容未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务处理请求可以设置监控检查策略保证可用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

kubernetes的出世

在这里插入图片描述

kubernetes,简称k8s,因为k和s之间有八个字母,所以被称作k8s。是一个开源的,基于go语言开发, 容器集群管理系统/容器编排平台。主要用于自动化部署、扩展和管理容器应用, 提供了资源调度、部署管理、服务发现、扩容缩容、监控等一整套功能,kubernetes目标是让部署容器化应用简单高效

传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署。

kubernetes 是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过kubernetes 能够进行应用的自动化部署和扩缩容。在kubernetes 中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。

kubernetes 积累了作为google 生产环境运行工作负载15 年的经验,并吸收了来自于社区的最佳想法和实践。

  • k8s是谷歌在2014年发布的容器化集群管理系统
  • 使用k8s进行容器化应用部署
  • 使用k8s利于应用扩展
  • k8s目标实施让部署容器化应用更加简洁和高效

k8s功能

1、数据卷

pod中容器间共享数据, 可以使用数据卷,pod是k8s部署的最小单元。

2、应用程序健康检查

容器内服务可能由于进程堵塞无法处理请求,可以设置监控检查策略保证可用性当所部署的node节点有问题时,会对容器进行重新部署和重新调度,并且当容未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务处理请求可以设置监控检查策略保证可用。

3、复制应用程序实例

控制器维护着pod副本数量,保证一个pod或一组同类的pod数量始终可用

4、弹性伸缩

通过命令,用户ui 界面或基于cpu 等资源使用情况,对应用容器进行规模扩大或规模剪裁

5、服务发现

使用环境变量或dns服务插件保证容器中程序发现pod入口访问地址,用户不需使用额外的服务发现机制,就能够基于kubernetes 自身能力实现服务发现和负载均衡

6、负载均衡

一组pod副本分配一个私有的集群ip地址,负载均衡转发请求到后端容器。在集群内部其他pod可通过这个clusterip访问应用

7、滚动更新

更新服务不中断、一次更新一个pod,而不是同时删除整个服务,并且可以根据应用的变化对应用容器运行的应用,进行一次性或批量式更新。

8、服务编排

通过文件描述部署服务, 使得应用程序部署变得更高效,自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。存储系统可以来自于本地目录、网络存储(nfs、gluster、ceph 等)、公共云存储服务

9、资源监控

node节点组件集成cadvisor资源收集工具,可通过heapster汇总整个集群节点资源数据,然后存储到influxdb时序数据库,再由grafana展示。

10、提供认证和授权

支持角色访问控制(rbac)认证授权等策略,在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。

kubernetes架构

一、master组件

1、kube-apiserver

kubernetes api, 集群的统一入口,各组件协调者, 以http api接口服务所有对象的管理及监听操作都交给apiserver处理后再提交给etcd存储

2、kube-controller-manager

处理集群中常规后台任务,一个资源对应一个控制器, 而controllermanager就是负责管理这些控制器的

3、kube-scheduler

根据调度算法为新建的pod选择node节点

二、node组件

1、kubelet

kubelet是master在node节点上的agent, 管理本机运行容器的生命周期. 比如创建容器、pod挂载数据卷、下载secret, 获取容器和节点状态等工作。kublet将每个pod转换成一组容器

2、kube-proxy

在node节点实现pod网络代理, 维护网络规则和四层负载均衡工作

3、docker engine

运行容器

三、etcd

分布式键值存储系统. 用于保存集群状态信息;比如pod, service等对象信息

完整架构图如下:
在这里插入图片描述

k8s核心概念

1、pod

pod是最小部署单元

一个pod可以放一个容器、也可以放多个容器

通常一个pod对应一个容器

2、deployment

定义一组pod副本数目,版本等
通过控制器【controller】维持pod数目【自动回复失败的pod】
通过控制器以指定的策略控制版本【滚动升级、回滚等】

3、service

service一个应用服务抽象, 定义了pod逻辑集合和访问这个pod集合的策略
service代理pod集合对外表现是为一个访问入口, 分配一个集群ip地址, 来自这个ip的请求将负载均衡转发后端pod中的容器
service通过lable selector选择一组pod提供服务

4、volume

卷,实现持久存储、数据共享
声明在pod容器中可访问的文件目录
可以被挂载到pod中一个或多个容器指定路径下
支持多种后端存储抽象【本地存储、分布式存储、云存储】

5、namespace

命名空间将对象逻辑上分配到不同的namespace,可以是不同的项目、用户等区分管理,并设定控制策略,从而实现多租户。
命名空间也称为虚拟集群
一个集群内部的逻辑隔离机制【鉴权、资源】
每个资源都属于一个namespace
同一个namespace所有资源不能重复
不同namespace可以资源名重复

6、label

标签用于区分对象(pod, service等), 键值对存在;
每个对象可以有多个标签, 通过标签关联对象

7、controller
replicaset

简称rs
确保任何给定时间指定的pod副本数量

statefulset

statefulset适合持久性的应用程序, 有唯一的网络标识符(ip), 持久存储、有序的部署、扩展、删除和滚动更新

daemonset

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

5111085929)]
[外链图片转存中…(img-xqh1peqy-1715111085929)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com