程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

k8s基础知识之服务(有状态和无状态)

balukai 2025-03-20 12:20:42 文章精选 3 ℃

有状态的服务比如数据库,无状态的服务比如网页。

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容器运行时接口规范的容器运行时,例如:dockercri-dockerd。

鼓励的话语:不屈不挠的精神,是战无不胜的法宝!

最近发表
标签列表