(九)Kubernetes系列之Service

Kubernetes K8S之Service服务详解与示例 K8S之Service概述与代理说明,并详解所有的service服务类型与示例 阅读详情

使用Deployment创建的Pod会动态创建和销毁。每个Pod的IP地址是动态生成的。当pod异常停止,deployment控制器自动产生新Pod时会重新生成新的IP地址。这样其他服务就无法正确找到pod了,k8s通过定义service一般使用标签选择器选择pod,对pod进行在逻辑上分组,对整个分组定义访问策略,这一组pod可以被service访问。调用者只需要使用service发布的服务,不需要关注pod的地址是否发生变。

0.创建测试deployment为后续创建service提供pod

0.1创建deployment模板

vi nginxdeployment-sercice.yml

内容如下:

4cb3b40b413e33b36b0a289b3688a589.png

0.2.创建Deployment

kubectl apply -f nginxdeployment-sercice.yml

c0f0083a5082a98a1cf3167be4775870.png

0.3查看pod

kubectl get pods -o wide

bca3f8ef4c8a44a67219246563a71676.png

1.Service对外提供服务

1.1.ClusterIP

默认的服务,为service分配一个集群内部可以访问的固定虚拟IP(ClusterIP),仅可集群内的机器和集群中的pod可以使用。

1.1.1创建模板

vi nginxsercice1.yml

内容如下;

045f03c29e0c1b3b1b91be6c81f47f3a.png

1.1.2创建service

kubectl create -f nginxsercice1.yml

d2caceb69d4bbe283b2c52dc6195f674.png

1.1.3查看service

kubectl get svc

2318678b53620a0707219d638cf9c15d.png

kubectl describe svc nginxservice1

6a0876628ae99b6f248016ed83b89d1c.png

1.1.4使用ClusterIP+端口访问

6f13ad09c6d513909119d92430ceabf9.png

1.2.NodePort

基于ClusterIP生成的ClusterIP,把这个IP地址及端口映射到master和各个node上,集群外的机器可以使用master或node的ip+端口访问服务

1.2.1创建模板

vi nginxsercice-nodeport.yml

内容如下:

1d0e989f8f75eda76f244d0ceb5ff3fd.png

注意:nodeport的取值范围为30000~32767

1.2.2创建service

kubectl create -f nginxsercice-nodeport.yml

d6fba384b1c574ddfc63a22fa3331ba0.png

1.2.3  使用集群外集群访问

282bb5a0e9ea27804b2da67e3f2668f4.png

1.3.LoadBalancer

使用外部均衡器访问,基于ClusterIP方式和NodePort方式,使用外部负载均衡器,由负载均衡器映射到各个node的端口上

1.31.创建模板文件

vi nginxsercice-loadbalancer.yml

内容如下:

aaec6e38780d4d1023e547ad0b96b981.png

status:

loadBalancer:

igress:

- ip :云服务商提供的LoadBalancer的IP

注意:

1.如果集群没有在公有云的IaaS平台运行则会一直处于Pending状态

2.如果在私有集群中,可以尝试使用MetalLB解决上述问题

1.4.headless service

只可在集群的内部Pod中访问,使用DNS提供稳定的网络ID来进行访问,不分配ClusterIP也不使用kube-proxy进行反向代理和负载均衡

1.4.1.创建模板文件

vi nginxsercice-headlessservice.yml

内容如下:

abaa36b3c1d2cd38b8dca7f4fed914ce.png

1.4.2创建service

kubectl apply -f nginxsercice-headlessservice.yml

345432f5143e6c002b94077fa004c795.png

1.4.3查看service

kubectl get service

9c006fc073f10b5e9288ba9074a3d0a7.png

注意:集群内外的机器不能直接访问headlessservice服务,只能由Pod访问,而且需要通过DNS方式。访问形式为[ServiceName].[Namespace].svc.[ClusterDomain]

2.将外部服务定义为Service

2.1 ExternalName

把外部的服务通过指定的规则映射到k8s集群中为集群内部提供服务

2.1.1.创建模板文件

vi nginxsercice-externalname.yml

内容如下:

5429c75e945823e1a538553027ed02da.png

2.1.2创建service

18ad92abd2362ce9b1aa0836845372c9.png

2.1.3查看service

kubectl get service

81843f712591a4e27797bfdcc7b39c44.png

进入pod容器内部

kubectl exec -ti nginxdeployment-service-746777b75f-tgbr6 -- /bin/sh

查询DNS信息

nslookup nginxsercice-externalname.svc.cluster.local

【Kubernetes 系列】Kubernetes 创建K8s集群项目_minikube index 对于支持负载均衡器的云服务平台而言,平台将提供一个外部 IP 来访问该服务。在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问。如果你用 kubectl expose 暴露了其它的端口,客户端将不能访问其它端口。在这里,我们可以在仪表板上创建 Kubernetes 资源,例如 Deployment 和 Service。这里的 --type=LoadBalancer 参数表明你希望将你的 Service 暴露到集群外部。这里会输出集群的所有事件。 阅读详情

相关推荐

Kubernetes(k8s)之Service服务

Kubernetes Service 是集群内部服务发现和负载均衡的核心机制。它通过标签选择器将一组 Pod 抽象为服务,为前端应用提供稳定的访问入口。kube-proxy 是实现 Service 的关键组件,支持三种代理模式:userspace(已淘汰)、iptables(默认)和更高性能的 IPVS 模式。Service 支持多种类型:ClusterIP(集群内访问)、NodePort(节点端口暴露)、LoadBalancer(外部负载均衡)和 ExternalName(引入外部服务)。

m0_60889254的博客 1410

k8s系列(九:实例)1、创建一个后端tomcat pod 配置service 2、部署Ingress Controller 3、定义Ingress

背景 外部到调度器的协议是https7层,由一个pod比如nginx直接调度到另一个pod,用一个pod反代至真正服务的pod,那这个pod需要service接入外部流量,这个service定义成nodeport,那么这个pod就成为https会话卸载器,调度器到内部的pod是http4层 Ingress Controller 在集群中挑出三个节点打上污点、用Daem...

xopqaaa的博客 945

【Kubernetes】以LOL的视角打开K8s

LOL和K8s都上手之后,其实我觉得相比较起来,LOL的上手难度要高多了,这么多个英雄,每个英雄有不同的机制和技能,这些可比K8s的内容多多了,所以如果大家LOL都能上手的话,上手K8s肯定不会是问题的!

ThisIsClark 2073

k8s创建service

k8s创建service 在之前已经创建了一个有两个nginx副本数的deployment,如下所示: [root@k8s-node1 mytestyaml]# kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 2/2 2 2 45m [root@k8s-node1 mytestyaml]# kubectl get

Liu_G的博客 5094

【云原生K8S】Kubernetes之Service

K8S的Service配置(ClusterIP、NodePort)

m0_71518373的博客 1953

【k8s系列十二】k8s 之 Service的类型

svc有4中方式, 什么时候使用什么方式呢?看下面的图:当一个需求来了, 要判断倒是是那种场景是内部请求还是外部请求?如果是内部请求, 例如nginx想要请求tomcat, 使用clusterIP如果是外部请求, 需要判断是谁访问谁?是我想访问外部的mysql么?如果是, 我就要考虑是否要相对静态的ip给到内部, 如果需要使用ExternalName。

BASK2311的博客 3083

【Kubernetes 系列】一文学会Kubernetes Service安全的暴露应用

在上一节中,我们学习到了pod 的生命周期,当一个工作 Node 挂掉后, 在 Node 上运行的 Pod 也会消亡。 ReplicaSet 会自动地通过创建新的 Pod 驱动集群回到目标状态,以保证应用程序正常运行。Kubernetes 中的服务(Service)是一种抽象概念,它定义了 Pod 的逻辑集和访问 Pod 的协议。Service 使从属 Pod 之间的松耦合成为可能。 和其他 Kubernetes 对象一样, Service 用 (更推荐) 或者 来定义 Service 下的一组 Pod

半身风雪 3785

kubernetes》》k8s》》Service dig

Kubernetes 中的 Service 是用于暴露应用服务的核心抽象,为 Pod 提供稳定的访问入口、负载均衡和服务发现机制。Service在Kubernetes中代表了一组Pod的逻辑集合,通过创建一个Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并将请求负载分发到后端的各个容器应用上。

Kaizen的博客 832

【Kubernetes 系列】Kubernetes 创建K8s集群项目

如果这里报错: /etc/kubernetes: mkdir /etc/kubernetes: permission denied原因:$KUBECONFIG 变量被占用了解决:重置$KUBECONFIG 变量强制使用root 身份执行:运行之后,会为我们打开一个Web 浏览器界面在这里,我们可以在仪表板上创建 Kubernetes 资源,例如 Deployment 和 Service。输出结果:输出结果:这里会输出集群的所有事件kubectl 输出当前的所有配置 这里的 --type=LoadBalanc

半身风雪 2296

【K8S系列】第六讲:Kubernetes的网络模型

iptables规则监视发往服务虚拟的流量IP,并从一组可用的Pod中随机选择一个Pod IP地址,并且iptables规则将数据包的目标IP地址从服务的虚拟IP更改为所选Pod的IP。第三个网络是Pod的网络, K8s中一个Pod由多个容器组成,但是一个pod只有一个IP地址,Pod中所有的容器共享同一个IP。为了解决Pod IP地址不是持久性的,可能会进行更改,k8s采用service对pod进行抽象,集群节点所在的网络,这个网络就是你的主机所在的网络,通常情况下是你的网络基础设施提供。

颜淡慕潇 9111

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8739

【云原生】详解Kubernetes、详解k8s,什么是k8s,k8s有什么用;k8s集群是什么、有什么用?

Kubernetes 是Google开源的分布式容器管理平台,是为了更方便的在服务器中管理我们的容器化应用。Kubernetes 简称 K8S,为什么会有这个称号?因为K和S是 Kubernetes 首字母和尾字母,而K和S中间有八个字母,所以简称 K8S,加上 Kubernetes比较绕口,所以一般使用简称 K8S。Kubernetes 即是一款容器编排工具,也是一个全新的基于容器技术的分布式架构方案,在基于Docker的基础上,可以提供从 一系列服务,提高了容器集群管理的便捷性。大家可以先看一下,下面一

点赞的都能无bug通过! 3977

云原生(二十) | Kubernetes篇】深入了解Kubernetes(k8s)Service

Service 创建完成后,会对应一组EndPoint。可以kubectl get ep 进行查看 type有四种,每种对应不同服务发现机制 Servvice可以利用Pod的就绪探针机制,只负载就绪了的Pod。自动剔除没有就绪的Pod 原理:kube-proxy 在负责这个事情 手动指定的ClusterIP必须在合法范围内 None会创建出没有ClusterIP的headless service(无头服务),Pod需要用服务的域名访问

Lansonli(蓝深李)的博客 1603

【K8S系列】Kubernetes Service 基础知识 详细介绍

在 Kubernetes 中,Service 是一种抽象的资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口,解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。

颜淡慕潇 1万+

【K8S系列】Kubernetes 中 Service 无法访问及解决方案【已解决】

在 Kubernetes 使用过程中,Service 是实现 Pod 之间以及 Pod 与外部之间通信的重要组件。然而,用户在访问 Service 时,可能会遇到无法访问的问题。以下是对 Service 无法访问问题的详细分析、常见原因及其解决方案。

颜淡慕潇 1万+

【K8S系列】Kubernetes 中 Service 无法访问问题及解决方案【已解决】

在 Kubernetes 使用过程中,Service 是实现 Pod 之间以及 Pod 与外部之间通信的重要组件。然而,用户在访问 Service 时,可能会遇到无法访问的问题。以下是对 Service 无法访问问题的详细分析、常见原因及其解决方案。

颜淡慕潇 1万+

【k8s系列】Kubernetes Service 深度解析:从基础到实战

在当今的云原生世界中,Kubernetes 已经成为容器编排和管理的事实标准。它提供了一种强大的方式来部署、扩展和管理容器化应用。然而,随着应用规模的扩大和复杂性的增加,如何有效地暴露和管理这些应用的网络服务成为了一个关键问题。Kubernetes Service 正是解决这一问题的利器。本文将分享一些笔者在这块的知识点学习过程,便于感兴趣的小伙伴可以快速理解Kubernetes组件的基础应用。

Young_深情不及里子的博客 1916

【K8S系列】Kubernetes 中 Service IP 分配 问题及解决方案【已解决】

在 Kubernetes 中,LoadBalancer 类型的 Service 允许用户轻松地将应用暴露给外部流量。它自动创建一个云负载均衡器并分配一个外部 IP 地址。然而,在某些情况下,LoadBalancer 类型的 Service 可能未能成功分配 IP 地址,导致外部无法访问。本文将详细分析该问题及其解决方案。

颜淡慕潇 2万+
上一篇: 8.驾校预约管理系统
下一篇: (十)Kubernetes系列之Ingress
调试大师
博客等级 码龄3年 2340粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

调试大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值