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

k8s之Headless浅谈

Headless Services 简介

有时不需要或不想要负载均衡,以及单独的 Service IP。 遇到这种情况,可以通过指定 Cluster IP(spec.clusterIP)的值为 “None” 来创建 Headless Service。

您可以使用 headless Service 与其他服务发现机制进行接口,而不必与 Kubernetes 的实现捆绑在一起。

对这 headless Service 并不会分配 Cluster IP,kube-proxy 不会处理它们,而且平台也不会为它们进行负载均衡和路由。 DNS 如何实现自动配置,依赖于 Service 是否定义了 selector。

Lable Secector:

  • 配置 Selector:对定义了 selector 的 Headless Service,Endpoint 控制器在 API 中创建了 Endpoints 记录,并且修改 DNS 配置返回 A 记录(地址),通过这个地址直接到达 Service 的后端 Pod上。见下图:

  • 不配置 Selector:对没有定义 selector 的 Headless Service,Endpoint 控制器不会创建 Endpoints 记录。

Service(iptables 代理模式)简介

这种模式,kube-proxy 会监视 Kubernetes 控制节点对 Service 对象和 Endpoints 对象的添加和移除。 对每个 Service,它会安装 iptables 规则,从而捕获到达该 ServiceclusterIP 和端口的请求,进而将请求重定向到 Service 任意一组 backend pod 中。 对于每个 Endpoints 对象,它也会安装 iptables 规则,这个规则会选择一个 backend pod 组合。

默认的策略是,kube-proxy 在 iptables 模式下随机选择一个 backend pod

下面是一个简图:

Headless Services 创建

$ vim headless_service.yaml
$ kubectl apply -f headless_service.yaml

headless_service.yaml 配置如下

apiVersion: v1
kind: Service
metadata:name: nginx-testlabels:app: nginx_test
spec:ports:- port: 80name: nginx-web# clusterIP 设置为 NoneclusterIP: Noneselector:app: nginx_test---apiVersion: apps/v1beta1
kind: StatefulSet
metadata:name: nginx-web
spec:serviceName: "nginx-test"replicas: 2template:metadata:labels:app: nginx_testspec:containers:- name: nginx-testimage: nginx:1.11ports:- containerPort: 80name: nginx-web

Headless Services 验证

# 查看 statefulsets nginx-web
$ kubectl get statefulsets nginx-webNAME        READY   AGE
nginx-web   2/2     93m# 查看 pods 
$ kubectl get pods -o wide | grep nginx-webnginx-web-0                         1/1     Running   0          96m    192.168.40.103   it-zabbix   <none>           <none>
nginx-web-1                         1/1     Running   0          96m    192.168.40.96    it-zabbix   <none>           <none># 显示 nginx-test Headless Services 详细信息
$ kubectl describe svc nginx-testName:              nginx-test
Namespace:         default
Labels:            app=nginx_test
Annotations:       kubectl.kubernetes.io/last-applied-configuration:{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"nginx_test"},"name":"nginx-test","namespace":"default"},...
Selector:          app=nginx_test
Type:              ClusterIP
IP:                None
Port:              nginx-web  80/TCP
TargetPort:        80/TCP
Endpoints:         192.168.40.103:80,192.168.40.96:80
Session Affinity:  None
Events:            <none># 测试 service 域名是否解析出两个 pod ip
$ nslookup nginx-test.default.svc.cluster.local 192.168.16.2Server:		192.168.16.2
Address:	192.168.16.2#53Name:	nginx-test.default.svc.cluster.local
Address: 192.168.40.103
Name:	nginx-test.default.svc.cluster.local
Address: 192.168.40.96# 测试 pod 域名是否解析出对应的 pod ip
$ nslookup nginx-web-0.nginx-test.default.svc.cluster.local 192.168.16.2Server:		192.168.16.2
Address:	192.168.16.2#53Name:	nginx-web-0.nginx-test.default.svc.cluster.local
Address: 192.168.40.103$ nslookup nginx-web-1.nginx-test.default.svc.cluster.local 192.168.16.2Server:		192.168.16.2
Address:	192.168.16.2#53Name:	nginx-web-1.nginx-test.default.svc.cluster.local
Address: 192.168.40.96

Headless Services 应用场景

  • 第一种:自主选择权,有时候 client 想自己来决定使用哪个Real Server,可以通过查询DNS来获取 Real Server 的信息。
  • 第二种:Headless Service 的对应的每一个 Endpoints,即每一个Pod,都会有对应的DNS域名,这样Pod之间就可以互相访问

🔥运维干货分享

  • 我的站点:www.byteooo.cn

  • 软考高级系统架构设计师备考学习资料

  • 软考中级数据库系统工程师学习资料

  • 软考高级网络规划设计师备考学习资料

  • 软考高级系统规划与管理师

  • 软考中级系统集成项目管理师

  • Kubernetes CKA认证学习资料分享

  • AI大模型学习资料合集

  • 免费文档翻译工具(支持word、pdf、ppt、excel)

  • PuTTY中文版安装包

  • MobaXterm中文版安装包

  • pinginfoview网络诊断工具中文版

  • Xshell、Xsftp、Xmanager中文版安装包

  • Typora简单易用的Markdown编辑器

  • Window进程监控工具,能自动重启进程和卡死检测

  • Spring 源码学习资料分享

  • 毕业设计高质量毕业答辩 PPT 模板分享

  • IT行业工程师面试简历模板分享

http://www.dtcms.com/a/609845.html

相关文章:

  • 安卓Telephony中的 phoneId、subId、simSlotIndex含义对比
  • dw做的网站怎么传到网络上去哪里有做ppt模板下载网站
  • 快速建站费用wordpress 注册简码
  • 从出厂到交付:能源设备运输如何实现全程风险可视化?
  • Kubernetes环境部署Redis集群
  • 公司门禁使用操作说明书
  • Wireshark网络数据包分析工具完整教程与实战案例
  • 以往届优秀展商为镜,探2026航空发动机与燃气轮机展——新奥能源
  • 先买空间再写网站广州番禺伤人案
  • 人工智能之数据分析 numpy:第二章 简介与安装
  • 地图可视化实践录:使用Turf.js简化路线
  • 从零开始搭建Linux Web服务器
  • 南通网站建设制作html网页设计表格代码范文
  • Chrome 插件框架 Plasmo 基本使用示例
  • 一小时学做网站杭州高端网站设计
  • LinuxC语言文件i/o笔记(第十八天)
  • 上海网站设计哪家强常州做上市公司律所
  • Word进阶
  • MySQL: 基准测试全流程指南:原理、工具(mysqlslap/sysbench)与实战演示
  • 青岛建站公司流程建筑行业公司
  • 贵州省网站备案虚拟主机管理系统
  • Hexo 个人博客从搭建到上线全流程(含踩坑指南)
  • CNN详解:卷积神经网络是如何识别图像的?
  • [高可用/负载均衡] Ribbon LoadBalancer: 开源的客户端式负载均衡框架
  • 深入理解 Python 的 `with` 语句及其与迭代器的交互
  • R脚本-环境数据处理:利用R批量对环境数据眼膜提取转ASC
  • 可做影视网站的服务器手机浏览wordpress
  • 网站做跳转微信打开源码之家
  • 集美区网站建设校园网站建设管理工作制度
  • MySQL 常用 SQL 语句大全