查询 service monitor 时发生内部错误_通过Service访问应用 (1)

c3b21173ce455cc32dd8874607c91415.gif

目录

通过Service访问应用

  • 通过Pod IP访问应用

  • 通过ClusterIP Service在集群内部访问

通过Service访问应用

通过之前的操作,应用部署完成了,我们的Demo网站已经成功启动了,那么如何访问网站呢?

通过Pod IP访问应用

我们可以通过Pod IP来访问之前部署的网站,但是前提是我们需要知道Pod IP。我们可以通过“kubectl get”命令的参数“-o wide”来输出相关的信息,比如Pod IP:

kubectl get pods -lapp=demo -o wide
0af5290b6183c46c600d89b7d897b79e.png

如果网络是通畅的,那么我们可以在任意的节点上访问我们的应用,如:

curl --head http://10.0.2.12
8def318ef6649b9ec023d16ec25b8841.png

我们使用curl以get方式请求demo应用,返回请求头为200,那么表示我们已经成功访问了Demo。如果你还不太相信,我们可以通过安装了UI界面的CentOS节点服务器的浏览器上访问这些Pod IP,如下所示:

8fc5f5fec1a620a2fcdcebec0faed864.png

虽然我们通过Pod IP成功的访问到了应用,但是Pod有生老病死,如果“死”了呢,我们如何访问?Deployment会重建么?我们来试一试:

kubectl delete pods -lapp=demokubectl get pods -lapp=demo -o wide
24174b118b88625d4a480ca0f51243b2.png

很不幸的是,如上图所示,POD IP变掉了。那么意味着POD IP会随着POD的生老病死而发生变化。而且,不仅存在这个问题,如果我们直接使用POD IP,那么多个POD也变得毫无意义。那么我们应该到底如何来访问我们的应用呢?

通过ClusterIP Service在集群内部访问

Kubernetes服务(Service)就是为此而抽象出来的,为了让应用能够稳定的输出,Service应运而生。

Service在Kubernetes中是一个抽象的概念,它定义了一组逻辑上的Pod和一个访问它们的策略(通常称之为微服务)。Service是通过标签选择器来绑定一组Pod 的Endpoints(端点)对象,当Pod的IP发生变化,Endpoints也随之变化。当Service接受到请求时,就能通过EndPoints找到请求转发的目标Pod地址。也就是说,通常情况下,Service定义了集群IP和端口,EndPoints则维护了一组Pod IP和端口。

了解了这些,接下来我们就使用ClusterIP Service来访问刚才的Demo应用。

ClusterIP Service是默认的Service类型,其通过集群的内部IP暴露服务,因此仅能在集群内部访问,常用于数据库等应用。

这里,我们定义一个简单的Service集群IP配置:

apiVersion: v1kind: Service #资源类型metadata: #标准元数据 name: demo-service #服务名称spec: #规范定义 type: ClusterIP #服务类型,不填写此字段则默认为ClusterIP类型,也就是集群IP类型 selector: #标签选择器 app: demo #标签 ports: #端口 - protocol: TCP #协议,能够支持TCP和UDP port: 80 #当前端口 targetPort: 80 #目标端口

接下来,我们来执行Service的创建并且分别查询了Service和Endpoints:

kubectl create -f clusterIPService.yamlkubectl get services demo-service -o widekubectl get endpoints demo-service -o wide
f5f11e7ffdb76277bd477116b737976f.png

如上图所示,我们创建了集群IP为“11.13.47.67”的Service,端口为80(通常情况下,我们将port和targetPort设置为相同的值)。同时我们通过Endpoints列表看到,Endpoints自动绑定了5个Pod IP。接下来我们试试在集群内(节点上)访问:

39d4925f7ab7b0491196d4d061167136.png

注意:如果我们需要在创建时设置Service固定IP该如何去设置呢?可以通过字段“spec.clusterIp”进行设置,值需要符合Service IP段要求。

浏览器非常完美的呈现了Demo。在集群内是可以访问了,如果我们提供对外服务呢?比如我们希望我们的Demo被其他电脑访问,以获得用户的赞赏,老板的好评,那么该如何处理呢?我们下一篇再来分析!

cb19f5e425407c05092535b86f97a044.png

转载是一种动力 分享是一种美德

25e335d57f990dd5e5c8b972cb16c642.gif

如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文档官网:docs.xin-lai.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jdk 8 时区 转换_使用JDK 8将收藏转换为地图

jdk 8 时区 转换我多次遇到这样的情况,希望将多个对象存储在Map中而不是Set或List中,因为将唯一标识信息的Map应用于对象有一些优势 。 Java 8通过流和Collectors.toMap(…)方法使翻译变得比以往更加容易。 使用Map而不是Set的一…

开源备份软件 oracle,oracle备份和恢复

最好把所有表删掉重新导入,表字段改变不会还原出来 ,只会还原数据1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/managerTest filed:\DB_backup\GWAMQA_Oracle\GWAM_Dev_201410311059.dmp fully2 将数据库中system用…

c语言 方程改main的值_C语言编程笔记丨编写第一个C语言程序hello world,我教你哇...

如果用C语言输出:Hello,world!,该如何编写程序?**代码如下:**#include//包含标准库的信息main()//定义名为main的函数,不接受参数值{//main函数的语句都放在花括号中,也表示函数体的…

iPhone 手机/苹果手机如何设置来电铃声?

文章目录方法一、使用 APP 库乐队设置方法二、使用第三方软件「爱思助手」设置方法一、使用 APP 库乐队设置 详见《iPhone 手机设置铃声简易教程》 方法二、使用第三方软件「爱思助手」设置 详见《苹果 iPhone 手机怎么设置铃声》

linux定时创建文件,linux下如何创建定时任务

文/PM回忆录本篇文章不详细讲述cron服务的那种配置文件,只是应用层面的讲解,只求初步的掌握。说到定时任务,不能不介绍下cron:一、cron定时任务是什么在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|gr…

连接堡垒机出现java环境_Java 8:长期支持的堡垒

连接堡垒机出现java环境斯蒂芬科尔本 ( Stephen Colebourne )的文章“ Java 9可以使用六个星期 ”开始,“ Java 9仅仅六个星期就已经过时了。” Colebourne参考了Mark Reinhold博客文章“ Moving Java Forwarding Faster ”,并写道…

assertj断言异常_编写自定义的AssertJ断言

assertj断言异常AssertJ是广泛使用的Hamcrest匹配器的替代匹配库。 实际上,对于我自己的项目,我已经更改为仅使用AssertJ-我只是发现流畅的界面和可扩展性非常吸引人。 您可以编写自定义断言,如下所示: 想象一下一种具有强度和饮…

Unix 发展简史

1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的项目;该项目要建立一套多使用者、多任务、多层次(multi-user、multi-ta…

linux服务器不会中毒,[转载]ubuntu 不会中毒的原因(转)

ubuntu不会中毒的原因不是因为linux用户少,而是其它原因。如下是转载的高手的文章:可能不少人持这样一种观点,认 为 Linux病毒少是因为Linux不像Windows那么普及,其实这种观点很早已经被人批驳过了,一个最有力的论据是…

6-7 使用函数输出水仙花数_「Java」再议printf函数

System.out.printf() 是在JDK1.5版开始引入的方法,即在JDK1.5以后的版本才可以使用此函数,printf 方法有 printf(String format, Object ... args) 和 printf(Locale l, String format, Object ... args) 两种重载方式。其实学过C语言的小伙伴应该会觉得…

Debian GNU/Linux 的发展简史

Debian 是最早的 Linux 发行版之一,由 Ian Murdock(伊恩默多克) 创立。lan Murdock 于1973年4 月28日出生于德国的君斯坦市(Konstanz, Germany)。他是Debian GNU/Linux 发行版的创始人,也是商用Linux发行商Progeny公司的创始人。他…

jdk 细粒度锁_使用JDK 8轻松进行细粒度排序

jdk 细粒度锁Java的8的推出流和有用的静态 / 默认的方法比较接口可以很容易地根据个人的领域两个对象比较“值,而不需要实现一个比较(T,T)在其对象的类方法被比较。 我将使用一个简单的Song类来帮助演示这一点,接下来…

c语言命名规则_C语言的基本数据类型及变量

学习目标了解C语言的基本数据类型了解变量的基本概念了解变量的使用方法了解了变量的命名方法了解格式占位符了解变量的输出了解C语言程序的基本数据类型及概念的使用方法擦在C语言编程中,系统定义了多种数据类型,本节将讲解基本数据类型的分类。基本数据…

linux socket默认超时时间设置,Socket中如何设置连接超时 (转)

Socket中如何设置连接超时 (转)Socket中如何设置连接超时AntGhazi/2001.12.14 主页:antghazi.yeah把CSDN与中文翻了底朝天,也没找到如何设置socket的连接超时的满意方法,问此问题的兄弟已有一大堆,这里偶就讲一下win下如何设置soc…

Linux 常用的软件包管理器/软件包管理工具详解

文章目录RPM 是什么?应用于哪些系统RPM 的前端工具有哪些RPM 包命名规范RPM 安装软件的默认路径RPM 安装原理图RPM 命令详解YUM 是什么?应用于哪些系统YUM 原理说明主要特点YUM 和 RPM 的区别YUM 命令详解DNF 是什么应用于哪些系统DNF 命令详解APT 是什么…

java world_Java World中的GraphQL简介

java world许多人认为GraphQL仅适用于前端和JavaScript,它在Java等后端技术中不占优势,但事实确实如此。 还经常将GraphQL与REST进行比较,但是这种比较是否合理? 首先,让我开始回答其中最重要的问题。 什么是GraphQL…

快速排序 动图_Java十大排序算法最强总结

看到一篇很不错的文章,不多说,看吧排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而ab,排序之后a仍然在b的前面;不稳定:如果a原本在b的前…

linux安装2870无线网卡,ubuntu15.04安装usb无线网卡

一般这种无线网卡都是联fake芯片,我使用的ralin(你懂的k)的usb无线1150 M。你去找lei凌官网找不到,只能去找芯片类型的制造者,所以只能去联Fake官网查询下载对应型号。1、我是这样子查看型号的,找到通过驱动软件检测并已经安装成功…

Linux 应用程序的源码包如何安装?

文章目录configuremakemake install关于文件 configure 的简单介绍其它命令简介C 语言开发的应用程序的源码包常以 .tar.gz 为扩展名,并且这些源码包通常使用 GNU 的 AUTOCONF 和 AUTOMAKE 生成编译配置文件,我们拿到这样的软件包后,执行下面…

exec su-exec_WildFly Kubernetes exec探针

exec su-exec活动性和就绪性探针会告诉Kubernetes,某个Pod是否正在运行并准备进行一些工作。 企业应用程序可以通过HTTP探测应用程序的状态。 如果没有暴露HTTP端点,Kubernetes也可以通过执行命令进行探测。 WildFly附带了有用的jboss-cli.sh 。 此CLI检…