深入理解K8s中的应用服务:访问、集群与配置

在Kubernetes(k8s)集群中,ClusterIP地址仅限于集群内部访问。为了让集群外的应用能够访问我们的服务,K8s提供了两种解决方案:NodePort和Ingress。

▣ Service外网访问问题

Kubernetes集群中,每个服务的ClusterIP地址仅在集群内部有效。若要实现外部访问,我们可以通过NodePort提供一个物理节点端口 。这个方法允许外部流量通过物理节点的IP地址和指定的端口号来访问集群内的服务。然而,端口数量有限 ,在大集群中,尤其是有10个node的集群内,这并不是一个高效的方法。为了更高效地解决多个服务的共享对外端口问题,K8s引入了Ingress。

▣ 使用Ingress实现流量转发

Ingress通过对流量进行路径分发和反向代理,简化了外部访问的配置。它允许将不同域下的请求引导至各自的Service。在以下示例中,当访问first.bar.com/bar时,流量会被路由到service1;而访问second.foo.com/foo时,流量则会被路由到service2。这样的设计实现了流量分发和负载均衡。

尽管Ingress实现了流量分发和负载均衡,它仍然依赖于在物理网络上的稳定负载均衡器。这种结构在复杂环境中可能增加了工作量和出错的几率,但总体上,它提供了一种更为高效和灵活的解决方案。

02有状态应用集群

在Kubernetes中,有状态集群需要特殊的解决方案,因为每个节点必须拥有固定的身份,并确保pod的启动和停止顺序以及数据的安全性。

▣ StatefulSet的角色与优势

StatefulSet用于管理有状态集群 ,为每个集群成员提供了稳定且唯一的网络标识,使得它们能够轻松发现并与其他成员通信。StatefulSet还确保了pod的起停顺序 是受控的,且前n-1个pod在操作第n个pod时已处于运行且准备就绪状态。此外,StatefulSet利用持久化存储(通过pv或pvc实现)来存储pod的状态数据。这种设计在删除pod时,相关存储卷不会被删除,从而保证了数据的安全性。

03批处理应用的实现

对于需要短暂运行一个或多个进程来处理一组数据的批处理应用,Kubernetes提供了Job资源对象

▣ Job资源对象介绍

Job用于批处理应用 ,通过对Pod的短暂运行实现任务处理。一个使用Job计算圆周率的示例展示了其简单性和实用性。在这种机制下,completions和parallelism参数被用来控制任务总数和并行数。当所有任务完成后,相应的Job即会终止。值得注意的是,Job生成的Pod副本不会自动重启,这是因为它们的restartPolicy被设置为Never。

04配置管理的挑战

在应用建模过程中,配置管理是另一个重要问题。为了解决这一问题,Kubernetes引入了ConfigMap和Secret功能。

▣ ConfigMap的用途与使用

ConfigMap用于应用配置管理,类似于一个"配置中心",允许用户将应用的配置信息以键值对的形式存储。ConfigMap可挂载到pod中供应用内部使用,支持配置更新和管理。用户不仅可以将配置文件的内容保存在ConfigMap中,还可以将其定义为特殊的volume进行挂载。当pod被调度到某个具体的node上时,ConfigMap中的配置文件会自动还原到本地的目录下,并映射到pod内指定的配置目录。

▣ Secret的安全管理

Secret用于管理敏感信息,在pod中安全地引用和处理相关的敏感配置。它能够保护诸如数据库用户名和密码、应用数字证书及token等关键敏感配置。通过创建一个Secret对象,用户可以在pod中轻松引用这些敏感信息,从而实现对机密数据的保护。

相关推荐
狗凯之家源码网1 天前
基于PHP的多语言跨境电商B2B2C商城系统技术解析
开发语言·php
万里侯1 天前
Kubernetes Operator模式:自动化运维的高级实践
微服务·容器·k8s
JAVA学习通1 天前
《大营销平台系统设计实现》 - 营销服务 第8节:抽奖规则树模型结构设计
运维·决策树·docker·容器·责任链模式
imuliuliang1 天前
Laravel 1.x:框架传奇的起点
php·laravel
楷哥爱开发1 天前
演唱会自动化抢票如何提高成功率?票务住宅IP与配置指南
服务器·前端·php
imuliuliang1 天前
Laravel 2.x:PHP框架的早期革新之路
开发语言·php·laravel
跨境数据猎手1 天前
跨境商城反向海淘系统开发全流程逻辑(下)
开发语言·php
liux35281 天前
K8s 排坑 02:Pod 一直 CrashLoopBackOff 怎么办?
云原生·容器·kubernetes
shinelord明2 天前
【云计算】k8sclient API 镜像操作 Java 类封装
java·kubernetes·云计算
liux35282 天前
K8s 排坑 01:Pod 一直 Pending 怎么办?
云原生·容器·kubernetes