k8s service (二)

K8s  service (二)

Endpoint

Endpointkubernetes中的一个资源对象,存储在etcd中,用来记录一个service对应的所有pod访问地址,它是根据service匹配文件中selector描述产生的。

一个Service由一组Pod组成,这些Pod通过Endpoints暴露出来,Endpoints是实现是服务的端点集合。换句话说,servicepod之间的联系是通过endpoints实现的。

[root@master ~]# kubectl get endpoints -n dev -o wide

NAME                          ENDPOINTS                                                                  AGE

service-clusterip   10.244.1.39:80,10.244.1.40:80,10.244.2.33:80               50m

HeadLiness类型的Service (几乎不会用于生产)

在某些场景中,开发人员可能不想使用Service提供的负载均衡功能,而希望自己来控制负载均衡策略,针对这个中情况,kubernetes提供了HeadLiness Service,这类Service不会分配ClusterIP,如果想要访问service,只能通过service的域名进行查询。

创建service-headliness.yaml

apiVersion: v1

kind: Service

metadata:

  name: service-headliness 

  namespace: dev

spec:

  selector:

    app: nginx-pod

  clusterIP: None                       #将clusterIP设置为None,即可创建headliness Service

  type: ClusterIP 

  ports: 

  - port: 80

targetPort: 80

# 创建service[root@master ~]# kubectl create -f service-headliness.yaml

service/service-headliness created

# 获取service,发现CLUSTER-IP未分配

[root@master ~]# kubectl get svc service-headliness -n dev -o wide

NAME                          TYPE             CLUSTER-IP   EXTERNAL-IP        PORT(S)       AGE        SELECTOR

service-headliness ClusterIP None             <none>                80/TCP   11s         app=nginx-pod

# 查看service详情

[root@master ~]# kubectl describe svc service-headliness -n dev -o -wide

Name:                                       service-headliness

Namespace:                              dev

Labels:                                       <none>

Annotations:                       <none>

Selector:                             app=nginx-pod

Type:                                         ClusterIP

IP:                                             None

Port:                                          <unset> 80/TCP

TargetPort:                                80/TCP

Endpoints:                                 10.244.1.39:80,10.244.1.40:80,10.244.2.33:80

Session Affinity:                  None

Events:                                      <none>

# 查看域名的解析情况

[root@master ~]# kubectl exec -it pc-deployment-66cb59b984-8p84h -n dev /bin/sh/

# cat /etc/resolv.confnameserver

10.96.0.10

search dev.svc.cluster.local svc.cluster.local cluster.local

# 如果本机没有dig,需要安装dig工具

[root@master ~]#  yum -y install bind-utils

[root@master ~]# dig @10.96.0.10 service-headlilness.dev.svc.cluster.local

service-headliness.dev.svc.cluster.local. 30 IN A 10.244.1.40

service-headliness.dev.svc.cluster.local. 30 IN A 10.244.1.39

service-headliness.dev.svc.cluster.local. 30 IN A 10.244.2.33

Nodeport 类型的service

在之前的样例中,创建的Service的ip地址只有集群内部才可以访问,如果希望将Service暴露给集群外部使用,那么就要使用到另外一种类型Service,称为NodePort类型。NodePort的工作原理其实就是将service的端口映射到Node的一个端口上,然后就可以通过NodeIp:NodePort来访问service了。

创建service-nodeport.yaml

apiVersion: v1

kind: Service

metadata:

  name: service-nodeport 

  namespace: dev

spec:

  selector:

    app: nginx-pod 

  type: NodePort         # Service类型 

  ports: 

  - port: 80   

    nodePort: 30002          # 指定绑定的node的端口(默认取值范围是:30000-32767),#如果不指定,会默认分配   

    targetPort: 80

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

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

相关文章

SpringBoot 调用外部接口

SpringBoot 调用外部接口 一、第一种方式(HttpClient等) 使用插件方式&#xff0c;比如自带的HttpClient&#xff0c;或者OkHttp&#xff0c;甚至是原生的HttpURLConnection 等等&#xff0c;这里以HttpClient为例。 1、封装工具类 简单封装的get请求 /*** 发送get请求:带请求…

为什么要使用依赖注入?直接new对象不香吗?为什么要把简单的问题复杂化?

作者&#xff1a;newki 为什么要使用依赖注入&#xff1f;直接new对象不香吗&#xff1f;为什么要把简单的问题复杂化&#xff1f; 你是不是在炫技,是不是像装13&#xff1f; 这还真不是&#xff0c;如果说我使用的Dagger2&#xff0c;还真是炫技&#xff0c;NB啊。Dagger的坑…

docker搭建es+kibana

docker搭建eskibana 0 安装docker 如果是mac或者windows&#xff0c;可以直接安装Docker Desktop更加便捷。 前提条件&#xff1a; Docker可以运行在Windows、Mac、CentOS、Ubuntu等操作系统上 Docker支持以下的CentOS版本&#xff1a; CentOS 7 (64-bit)CentOS 6.5 (64-bit…

前端需要理解的浏览器知识

1 浏览器架构 浏览器是多进程多线程的应用程序&#xff0c;多进程可以避免相互影响和减少连环崩溃的几率&#xff1a; 浏览器&#xff08;主&#xff09;进程&#xff1a;主要负责界⾯显示、⽤户交互、⼦进程管理、存储等功能。内部会启动多个线程分别处理不同的任务。⽹络进…

在线设计APP ui的网站,分享这7款

在数字时代&#xff0c;用户界面&#xff08;UI&#xff09;设计变得非常重要&#xff0c;因为良好的UI设计可以改善用户体验&#xff0c;增强产品吸引力。随着科学技术的发展&#xff0c;越来越多的应用在线设计网站出现&#xff0c;为设计师和团队提供了一种新的创作方式。本…

论文笔记: One Fits All:Power General Time Series Analysis by Pretrained LM

1 intro 时间序列领域预训练模型/foundation 模型的研究还不是很多 主要挑战是缺乏大量的数据来训练用于时间序列分析的基础模型——>论文利用预训练的语言模型进行通用的时间序列分析 为各种时间序列任务提供了一个统一的框架 论文还调查了为什么从语言领域预训练的Transf…

什么是软件压力测试?软件压力测试工具和流程有哪些?

软件压力测试 一、含义&#xff1a;软件压力测试是一种测试应用程序性能的方法&#xff0c;通过模拟大量用户并发访问&#xff0c;测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题&#xff0c;如内存泄漏、线程锁、资源泄漏等&#xff0c;…

开源软件的崛起:历史与未来

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

go学习之go的语法知识

文章目录 1.go语言开发注意事项2.golang常用的转义字符(escape char)3.golang开发常用的问题小结与提示&#xff1a; 4.go语言注释类型&#xff08;1&#xff09;.注释类型1&#xff09;行注释2&#xff09;块注释(多行注释) &#xff08;2&#xff09;使用细节&#xff1a;1&a…

2023国赛数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…

Qt跨平台无边框窗口探索记录

一、前言 实现的效果为&#xff1a;通过黑色矩形框预操作&#xff0c;鼠标释放时更新窗口。效果图如下&#xff1a; 1.功能 1.1 已实现功能 8个方向的缩放标题栏拖动标题栏双击最大化/正常窗口窗口最小尺寸预操作框颜色与背景色互补多屏幕默认标题栏 1.2 待开发功能 拖动到…

(学习笔记-调度算法)内存页面置换算法

在了解内存页面置换算法前&#xff0c;我们得先了解 缺页异常&#xff08;缺页中断&#xff09;。 当 CPU 访问的页面不在物理内存中时&#xff0c;便会产生一个缺页中断&#xff0c;请求操作系统将缺页调入到物理内存。那它与一般的中断主要区别在于: 缺页中断在指令执行 [期…