千家信息网

怎么使用Kubernetes服务暴露app

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"怎么使用Kubernetes服务暴露app"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2026年11月03日怎么使用Kubernetes服务暴露app

本篇内容介绍了"怎么使用Kubernetes服务暴露app"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Kubernetes服务概述

Kubernetes Pods 是会挂掉的。 Pods 实际上是有生命周期的。 当一个工作节点死亡时,运行在该节点上的 Pods也会丢失。 ReplicaSet能通过创建新的pod来动态地将集群恢复到所需状态,以保持应用程序运行。 另一个例子是,考虑一个带有3个副本的图像处理后端。 这些副本是可以交换的; 前端系统不应该关心后端副本,甚至不应该关心Pod丢失和重新创建。 也就是说,Kubernetes集群中的每个Pod都有一个惟一的IP地址,甚至是同一个节点上的Pod,因此需要一种自动协调Pod之间更改的方法,以便您的应用程序继续运行。

Kubernetes中的服务是一个抽象概念,它定义了一组逻辑Pods和访问它们的策略。 服务支持独立的Pods之间的松散耦合。 服务是使用YAML (preferred) 或JSON定义的,就像所有Kubernetes对象一样。 服务所针对的pod集合通常由标签选择器决定。

虽然每个Pod都有一个惟一的IP地址,但是如果没有服务,这些IP不会暴露在集群之外。 服务允许应用程序接收流量。 通过在ServiceSpec中指定类型,可以以不同的方式公开服务:

ClusterIP(默认) -- 在集群中的内部IP上暴露服务。 这种类型使得服务只能从集群内部访问。

NodePort -- 使用NAT在集群中每个选定节点的相同端口上暴露服务。 使用 : 让服务可以从集群外部访问。 Superset of ClusterIP.

LoadBalancer -- 在当前云中创建一个外部负载均衡器(如果支持),并向服务分配一个固定的外部IP。 Superset of NodePort.

ExternalName -- 通过返回带有名称的CNAME记录,使用任意名称(由规范中的externalName指定)暴露服务。 不使用代理。 这种类型需要v1.7或更高的 kube-dns

关于不同类型的服务的更多信息可以在使用源IP教程中找到。 也请看 Connecting Applications with Services.

另外,请注意,有些服务用例没有在 spec 中定义 selector 。 没有 selector 的服务被创建时也不会创建相应的端点对象。 这允许用户手动将服务映射到特定的端点。 没有选择器的另一种可能是您严格使用type: ExternalName。

服务和标签

服务在一组 Pods 之间路由流量。 服务是一种抽象,它允许pod死亡并且在Kubernetes中存在多复本而不会影响应用程序。 依赖于 Pods (如应用程序中的前端和后端组件)之间的发现和路由是由Kubernetes服务处理。 服务使用标签和选择器匹配一组pod,选择器是允许对Kubernetes中的对象进行逻辑操作的分组原语。 标签是附加到对象上的 key/value对,可以以任何方式使用:

  • 为开发、测试和生产指定对象

  • 嵌入版本标记

  • 使用标记对对象进行分类

标签可以在创建时或以后附加到对象上。 它们可以随时被修改。 可以使用下面的环境练习服务暴露。

  1. kubectl get 命令可以查看现有的Pods: kubectl get pods

  2. kubectl get services命令可以查现有的服务: kubectl get services 命令结果可以看到有一个名为kubernetes的服务,它是在minikube启动集群时默认创建的。

  3. 要创建一个新服务并将其公开给外部流量,我们将使用带有NodePort参数的expose命令 (minikube还不支持LoadBalancer选项): kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080 ,接着再运行kubectl get services查看服务。 我们现在有一个正在运行的服务叫做kubernetes-bootcamp。 在这里,我们看到服务接收到一个惟一的集群ip、一个内部端口和一个外部ip ( 节点的IP )。

  4. 为了查明外部打开了哪个端口(通过NodePort选项),我们将运行describe service命令 : kubectl describe services/kubernetes-bootcamp

  5. 创建一个名为 NODE_PORT的环境变量,该变量具有指定的节点端口的值 : export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}');echo "NODE_PORT=$NODE_PORT"

  6. 现在,我们可以使用curl、节点的IP和外部公开的端口测试应用程序是否在集群外部公开 curl $(minikube ip):$NODE_PORT

"怎么使用Kubernetes服务暴露app"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

服务 集群 对象 节点 应用程序 程序 应用 运行 命令 标签 端口 之间 类型 选择 副本 更多 流量 支持 不同 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 港股互联网科技股 科技服务与互联网 小马过河互联网科技 上海万想互联网科技 长亮科技互联网金融 互联网公司会议桌创意科技软装饰 海南科技产业互联网平台 互联网科技实习生岗位职责 福建科技产业互联网发展 互联网保险科技创业 想开互联网科技公司怎么样 中和天地互联网科技有限公司 广州百诚互联网科技有限公司官网 张召忠谈中国互联网科技 富国互联网科技002692 广州智享互联网科技 科技和互联网行业的特点 10位科技互联网大佬 平安好医生打造互联网科技医疗 科技互联网专业务虚会材料 互联网扶贫科技 碳银互联网科技 壕鑫互联网络科技 互联网科技小额贷款 深圳前海聚择互联网科技有限公司 宜昌元轩互联网科技有限公司 注册互联网科技公司经营范围大全 阿里互联网科技企业 深圳互联网科技园地址 伍佰万互联网科技是干嘛的
0