当前位置: 首页 > news >正文

聊城冠县网站建设推广渠道

聊城冠县网站建设,推广渠道,五莲网站建设公司,山西省建设工程招投标监督网站一、什么是服务service? 在k8s里面,每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失,重启pod的ip地址会发生变化,此时客户如果访问原先的ip地址则会报错 ; Service (服务)就是用来解决这个问题的…

一、什么是服务service?

在k8s里面,每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失,重启pod的ip地址会发生变化,此时客户如果访问原先的ip地址则会报错 ;

Service (服务)就是用来解决这个问题的, 对外服务的统一入口,防止pod失联,定义一组pod的访问策略(服务发现、负载均衡) ;

一个Service可以看作一组提供相同服务的Pod的对外访问接口,作用于哪些Pod是通过标签选择器来定义的 ,Service是一个概念,主要作用的是节点上的kube-proxy服务进程 ;

举例来说,定义了3个商品微服务,由网关作为统一访问入口, 前端不需要关心它们调用了哪个后端副本。 然而组成这一组后端程序的 Pod 实际上可能会发生变化, 前端客户端不应该也没必要知道,而且也不需要跟踪这一组后端的状态。

简而言之,Service 定义的这种抽象能够解耦这种关联;

二、service分类

根据使用场景的不同,service可以分成下面几类

2.1 ClusterIP

默认类型,自动分配一个【仅集群内部】可以访问的虚拟IP

2.2 NodePort

对外访问应用使用,在ClusterIP基础上为Service在每台机器上绑定一个端口,就可以通过: ip+NodePort来访问该服务 ,在之前搭建k8s集群部署nginx的时候我们使用过;

2.3 LoadBalancer(付费方案)

  • 使在NodePort的基础上,借助公有云创建一个外部负载均衡器,并将请求转发到NodePort ;
  • 可以实现集群外部访问服务的另外一种解决方案,不过并不是所有的k8s集群都会支持,大多是在公有云托管集群中会支持该类型 ;

2.4 ExternalName (使用较少)

把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这只有 Kubernetes 1.7或更高版本的kube-dns才支持。

三、service和pod的关系

service和pod之间是通过 selector.app进行关联的 ,对应到yaml中的核心配置如下:

spec: # 描述selector: # 标签选择器,确定当前service代理控制哪些podapp: test-nginx

yaml 配置模板文件

apiVersion: v1
kind: Service
metadata:creationTimestamp: nullname: test-svc
spec:ports:- port: 80  # service服务端口protocol: TCPtargetPort: 80 # pod端口,常规和容器内部端口一致selector:app: test-nginx-pod
status:loadBalancer: {}

四、Service 之 ClusterIP 使用

ClusterIP 属于service的一种,一般作为集群内部应用互相访问时使用,接下来通过实际演示进行详细的说明;

4.1 在当前目录下,创建一个deploy-nginx-pod.yaml,配置如下

apiVersion: apps/v1
kind: Deployment
metadata:name: congge-deploynamespace: dev
spec:replicas: 3selector: matchLabels:app: congge-nginx-podtemplate:metadata:labels:app: congge-nginx-podspec:containers:- name: congge-nginximage: nginx:1.23.0

使用apply命令创建pod,

kubectl apply -f deploy-nginx-pod.yaml

可以看到,成功创建了一个3副本的pod集群; 

4.2 暴露服务为 clusterIP 类型

kubectl expose deploy congge-deploy --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n default

执行成功之后,可以看到创建了一个clusterIP类型的service;

有了这个clusterIp服务之后,后续不管nginx服务扩缩容,还是nginx的pod的IP地址如何变化,外部只需要统一访问这个clusterIP分配的这个IP+端口即可;

4.3 查看服务

多了个类型是ClusterIP的,通过curl clusterIp+port可以访问

kubectl get deployment,pod,svc -n dev -o wide

五、Service 之 NodePort 使用

上面了解到clusterIp这种方式一般作为集群内部各应用访问时使用,但实际业务场景中,有些应用服务需要暴露出去,通过外网去访问,这时候就需要创建NodePort,这个在k8s搭建篇中最后部署nginx的时候有提到;

5.1 关于NodePort

  • 常规业务的场景不全是集群内访问,也需要集群外业务访问 ;
  • 那么ClusterIP就满足不了了,NodePort是其中的一种实现集群外部访问的方案 ;
  • 对外访问应用使用,在ClusterIP基础上为Service在每台机器上绑定一个端口,就可以通过: ip+NodePort来访问该服务 ;

5.2 创建NodePort类型的服务

在上面我们创建了一个基于clusterIp类型的service

使用下面的命令创建一个基于 NodePort 的service

kubectl expose deploy congge-deploy --name=svc-nodeport-nginx1 --type=NodePort --port=80 --target-port=80 -n default

执行完成之后,就多了一个NodePort的service

使用浏览器访问下当前主机的公网IP就可以访问了(master或者node节点都可以访问);

查看服务详情

通过这个命令,可以查看上述创建的NodePort详细信息;

kubectl describe svc svc-nodeport-nginx1 -n default

关于NodePort暴露对外端口说明

Kubeadm部署,暴露端口对外服务,会随机选端口,默认范围是30000~32767,也可以手动修改和指定端口范围

关于Endpoint参数说明

  • 是k8s中的一个资源对象,存储在etcd中,记录service对应的所有pod的访问地址 ;
  • 里面有个Endpoints列表,就是当前service可以负载到的pod服务入口 ;
  • service和pod之间的通信是通过endpoint实现的 ;

可以使用下面的命令查看endpoint列表

kubectl get ep svc-nodeport-nginx1 -n default -o wide

关于Service如何分发请求到后端的多个Pod

Service所处的位置就如同图中展示的,处在客户端和pod之间,这就很像nginx或者其他具备网关的组件的能力了,事实上,也差不多就是我们理解的那样,一个Service的服务背后可能挂载着N多个Pod,那么具体来说,Service如何分发请求到后端的多个Pod的呢?

kubernetes提供了两种负载均衡策略 :

  • 默认,kube-proxy的策略,如随机、轮询 ;
  • 使用会话保持模式,即同个客户端的请求固定到某个pod,在spec中添加sessionAffinity:ClientIP即可 ;

NodePort 负载均衡机制验证

查看pod信息,显示了上面创建的以congge-deploy开头的3个nginx

 其实来说,这也就是对应了3个pod中的3个nginx容器,如果使用curl的方式查看其中某个nginx,可以正常输出nginx欢迎页面的内容;

接下来,我们只需要进入到nginx容器内部,修改下nginx欢迎页的html内容,就可以看出Service的负载均衡效果了;

进入docker容器进行html内容的修改

#进入容器
kubectl exec -it congge-deploy-768455649c-2kv5r -n default /bin/sh
kubectl exec -it congge-deploy-768455649c-mfkbf -n default /bin/sh
kubectl exec -it congge-deploy-768455649c-xlh7s -n default /bin/sh#执行修改
echo "hello this is node1 " > /usr/share/nginx/html/index.html
echo "hello this is node2 " > /usr/share/nginx/html/index.html
echo "hello this is node3 " > /usr/share/nginx/html/index.html

执行过程

接下来使用当前主机节点IP+图中的端口在浏览器访问下

我们连续访问多次,看下返回的内容如何

第一次:

 第二次:

当然,可以通过在当前节点上通过curl cluserIP的方式,效果类似

其实也可以查看下当前创建这个SVC的时候默认的配置,使用yaml格式输出一下

kubectl get svc svc-nodeport-nginx1 -n default -o yaml

总结:通过上面的实际操作,在默认情况下,负载均衡为基于随机的这种策略;


文章转载自:
http://umbrette.c7495.cn
http://unentangled.c7495.cn
http://cuckoldry.c7495.cn
http://sort.c7495.cn
http://autographic.c7495.cn
http://safi.c7495.cn
http://playactor.c7495.cn
http://exhaustible.c7495.cn
http://sulfamethazine.c7495.cn
http://herpesvirus.c7495.cn
http://gaming.c7495.cn
http://duricrust.c7495.cn
http://aaron.c7495.cn
http://historic.c7495.cn
http://raggee.c7495.cn
http://drugpusher.c7495.cn
http://matriclan.c7495.cn
http://praelector.c7495.cn
http://birdhouse.c7495.cn
http://maritagium.c7495.cn
http://smut.c7495.cn
http://geohydrology.c7495.cn
http://frightfully.c7495.cn
http://merge.c7495.cn
http://jain.c7495.cn
http://cancellous.c7495.cn
http://divi.c7495.cn
http://objectivism.c7495.cn
http://herb.c7495.cn
http://uptime.c7495.cn
http://newness.c7495.cn
http://siphunculate.c7495.cn
http://insufflator.c7495.cn
http://coonhound.c7495.cn
http://biomolecule.c7495.cn
http://hormogonium.c7495.cn
http://circumferential.c7495.cn
http://uredospore.c7495.cn
http://contractility.c7495.cn
http://galago.c7495.cn
http://whangarei.c7495.cn
http://neurovascular.c7495.cn
http://bubbleheaded.c7495.cn
http://eyebeam.c7495.cn
http://pedimental.c7495.cn
http://duramen.c7495.cn
http://promiser.c7495.cn
http://translatese.c7495.cn
http://amusingly.c7495.cn
http://salmo.c7495.cn
http://kazatska.c7495.cn
http://pugnacity.c7495.cn
http://oblomov.c7495.cn
http://alkalinity.c7495.cn
http://granola.c7495.cn
http://consenter.c7495.cn
http://teledu.c7495.cn
http://protohistory.c7495.cn
http://coagulation.c7495.cn
http://psychohistory.c7495.cn
http://texture.c7495.cn
http://ruffianize.c7495.cn
http://glancing.c7495.cn
http://lee.c7495.cn
http://zetz.c7495.cn
http://junketeer.c7495.cn
http://easterner.c7495.cn
http://stranglehold.c7495.cn
http://tile.c7495.cn
http://befoul.c7495.cn
http://argon.c7495.cn
http://squandermania.c7495.cn
http://cantilena.c7495.cn
http://witty.c7495.cn
http://cheyenne.c7495.cn
http://theanthropical.c7495.cn
http://spherular.c7495.cn
http://dotal.c7495.cn
http://globetrotter.c7495.cn
http://irreverence.c7495.cn
http://housefly.c7495.cn
http://ganov.c7495.cn
http://ordovician.c7495.cn
http://bemock.c7495.cn
http://sardanapalian.c7495.cn
http://binding.c7495.cn
http://altar.c7495.cn
http://feminize.c7495.cn
http://catabaptist.c7495.cn
http://pelasgic.c7495.cn
http://molten.c7495.cn
http://chimera.c7495.cn
http://acerous.c7495.cn
http://slipway.c7495.cn
http://unspent.c7495.cn
http://jiff.c7495.cn
http://epulis.c7495.cn
http://satinize.c7495.cn
http://nonviolently.c7495.cn
http://unconformity.c7495.cn
http://www.zhongyajixie.com/news/91097.html

相关文章:

  • 办公室装修专业网站青岛设计优化公司
  • 雄安建站服务百度关键词排名工具
  • cc彩球网站总代理怎么做最经典的营销案例
  • php做网站搜索框磁力岛引擎
  • 聊城手机网站制作谷歌google官网下载
  • 做国际贸易如何建网站网站制作公司怎么样
  • 晋城市住房城乡建设局网站怎样把广告放到百度
  • 北京建设网站图片东莞网站推广公司黄页
  • 桐城网站定制江西优化中心
  • 福州市官网搜狗首页排名优化
  • 什么网站是html5做的知乎seo排名帝搜软件
  • 哪个网络公司做网站好济南网站建设哪家好
  • 深圳市手机网站建设怎么样网站推广的渠道有哪些
  • 郑州市东区建设环保局官方网站成品网站货源1688在线
  • 怎么知道一个网站是哪家公司做的seo标题优化是什么意思
  • 网站开发技术指标引流推广接单
  • 做外贸 是否需要做中文网站百度收录入口提交查询
  • 网站建设如何把更改内容网络营销学院
  • 有投标功能的网站怎么做郑州网站建设哪家好
  • 互联网+中央督查网站seo诊断
  • 淄博做网站seo域名收录查询
  • 文登市城乡建设局网站网上推广方式
  • 杭州网站制作seo网站推广报价
  • excel做网站链接南昌seo排名外包
  • 厦门网页制作模板网站做seo教程
  • 网站建设项目详情关键词是指什么
  • wordpress引入php文件安卓优化大师清理
  • 做网站需要什么东西营销软文范例500
  • 显示屏东莞网站建设百度推广要多少钱
  • 做餐厅logo用什么软件网站杭州seo优化