网站首页 > 技术文章 正文
有状态的服务比如数据库,无状态的服务比如网页。
kubernetes也叫k8s,是在k和s之间有8个英文字母,ubernete这8个字母。它是一个可移植、可扩展的开源平台,它是基于谷歌的Borg。它是基于容器技术的分布式架构方案。
kubernetes是可插拔的,可以选择不同的容器运行时,比如docker或者containerd。从kubernetes v1.24版本开始移除了内置的docker运行时,它出了一个运行时的接口。
kubernetes的作用:
①:服务发现和负载均衡LoadBalance。可以利用dns域名或者service的IP地址地址去暴露容器。
②:kubernetes支持部署和回滚。它可以通过配置文件的描述,去控制容器的状态,并且支持指定版本的回滚。
③:kubernetes支持弹性伸缩。可以通过指标去配置一个自动伸缩的机制和策略,来应对突发流量。
④:kubernetes支持容器的配额管理。为每个容器指定所需的CPU、内存和磁盘等资源。使用request和limit做资源的软性限制和硬性限制。
⑤:kubernetes支持故障的发现和自我修复。它可以检查不符合运行状态检查的容器,并且可以进行计划重启或者强制重启容器。
⑥:kubernetes支持密钥和配置管理。kubernetes提供secret和configmap来管理密钥信息和配置信息。登录私有注册中心的账户名和密码可以通过secret去管理,不同的版本之间的配置可以通过配置管理去实现。
⑦:kubernetes支持多种数据卷类型。数据卷也就是volume,支持集中式和分布式存储。
kubernetes不支持的内容:
①:不能去限制应用程序的类型。如果应用程序能够在容器中运行,它就可以在kubernetes中运行。
②:不能部署源码,也不能构建应用。
③:不提供应用级别的服务作为内置服务。
~~~~我是华丽的分隔线~~~
kubernetes的组件:
kubernetes分成master控制节点和work node工作负载节点。
kubernetes master节点,也就是控制平面,它是集群的管理角色。kubernetes master节点上的组件:
①:kube-apiserver:负责公开kubernetes API,负责接收请求的工作,对kubernetes集群的任何操作,都需要通过kube-apiserver去调用和实现。
②:etcd:etcd是一个高可用的键值对数据库,用来存储kubernetes集群的所有数据。
③:kube-scheduler:kube-scheduler是一个调度器,调度pod到节点上去运行。调度新创建的和未指定运行节点的pod到节点上。master节点只做管理,不做pod的运行节点。
④:kube-controller-manager:kube-controller-manager负责运行控制器进程。
控制器包括:
节点控制器,节点出现故障的时候负责通知。
任务控制器,创建pod来执行任务,任务包括job和cronjob。
端点控制器,填充端点对象,加入service或者pod。查看service或者pod的详情,每个pod都是一个服务端点endpoint。
副本控制器:指定需要创建pod的副本数,确保pod的实际副本数与预期副本数保持一致。
服务账户与令牌控制器:kubernetes的隔离机制是基于命名空间namespace的,默认命名空间是default,不同的应用部署在不同的命名空间。服务账户和命名控制器会为命名空间创建对应的的默认账户和API的访问凭据,命名空间必须有一个默认的账户。
~~~
Worker node上的组件:
①:kubelet:在kubernetes集群的每个节点上运行,保证容器运行在pod中,docker的最小调度单元是容器,kubernetes的最小调度单位是pod,一个pod可以运行多个容器,kubelet确保容器运行在pod当中。kubelet配合kubernetes master节点管理worker node节点,向kubernetes master节点报告worker node节点的信息。当worker node节点加入kubernetes 集群时,kubelet会报告运行在worker node节点中的容器。kubelet会通过心跳定期向kubernetes master报告worker node节点的运行状态,如果超时,kubernetes master就会判断worker node节点失灵,并且调度worked node节点上的pod到其他worker node节点上去运行。
②:kube-proxy:kube-proxy是kubernetes 集群中每个节点上运行的网络代理,是实现kubernetes service概念的一部分。每一个service都是一个微服务,它离不开kube-proxy。kube-proxy维护节点上的网络规则,这些网络规则允许从集群内部或者外部的网络与pod进行通信。我们需要访问pod,必须需要kube-proxy进行工作。如果没有kube-proxy,我们要访问我们的pod是做不到的。
③:容器运行时:一般是docker或者containerd,或者是符合kubernetes容器运行时接口规范的容器运行时,例如:docker?cri-dockerd。
鼓励的话语:不屈不挠的精神,是战无不胜的法宝!
猜你喜欢
- 2024-09-23 长文解析|九类交互状态的自查与设计
- 2024-09-23 如何使用Axure做一份高质量的EMS能源管理系统原型?
- 2024-09-23 计算机机箱的结构通常包括以下几个部分: ? 外壳
- 2024-09-23 标准化的响应结构对于C#项目至关重要
- 2024-09-23 产品架构设计之产品实体设计一,二
- 2024-09-23 PostgreSQL技术内幕3:PG逻辑存储层级和物理存储结构
- 2024-09-23 一文彻底搞明白状态模式(什么是状态模式)
- 2024-09-23 09 打造无状态的存储实现随时切库的写入服务
- 2024-09-23 众合科技获得发明专利授权:“基于状态机的冗余架构设备资源管理方法”
- 2024-09-23 mysql索引数据结构(mysql中索引的数据结构)
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 571℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 512℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 485℃启用MySQL查询缓存(mysql8.0查询缓存)
- 468℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 447℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 445℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)