k8s service对象初识
service 四种类型
clusterIp
NodePort
LoadBalancer
ExternalName是别名
service是实现负载均衡的一个对象通过kube-proxy创建ipvs 或者是iptables创建的规则
apiVersion: v1
kind: Service
metadata:name: my-nginx
spec:selector:app: nginxtype: NodePortports:- protocol: TCPport: 80
svc = service
svc 与 pod 看着是label相同而关联的,其实是通过endpoint进行关联的,endpoint controller 会监听pod对象以及svc对象,如果创建了svc对象且包含了selector,那么ep controller对象会创建一个同名的endpoint对象,按照selector去寻找是否有同样label的pod,看pod是否就绪,pod不就绪在notreadaddress ,就绪了addresses里,一个service对应多个pod,多对多的关系,关系由endpoint这个中间表来维护svc与pod关系,selector找到的所有的podip存放在address中的,ready的是存在address中,Notready的存在notreadaddress
不就绪的pod不接受流量。
endpoint 对象
apiVersion: v1
kind: Endpoints
metadata:annotations:endpoints.kubernetes.io/last-change-trigger-time: "2022-10-13T09:40:26Z"creationTimestamp: "2022-10-13T08:23:29Z"name: my-nginxnamespace: defaultresourceVersion: "14270"uid: 42940e41-d988-4637-b1e8-cf730baf8cd2
subsets:
- addresses:- ip: 172.22.189.199nodeName: izwz9b6ehvw4yhz5f1wa4uztargetRef:kind: Podname: nginx-deployment-66b6c48dd5-5f6rrnamespace: defaultresourceVersion: "14227"uid: 32336232-7012-461e-8537-167cfdbfd6e4- ip: 172.22.189.200nodeName: izwz9b6ehvw4yhz5f1wa4uztargetRef:kind: Podname: nginx-deployment-66b6c48dd5-pjtkdnamespace: defaultresourceVersion: "14268"uid: 2fdd93aa-2c88-49fb-8581-8d80dde47a75ports:- port: 80protocol: TCP
但是放某个service后的pod数很多的时候这个ep会特别的庞大,当pod变化会引起ep变化,然后会将变化推送到比如5000个节点上,所以出现了serviceSlice,将service进行切片,降低带宽压力
clusterIP是一个虚ip+port,通过负载均衡到podIP+targertport
root@iZwz9b6ehvw4yhz5f1wa4uZ:~/101/module8/service# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h11m
service Topology就近访问
k8s提供通用标签标记所处的物理位置,解决就近访问,增加访问速度
service Topology key
apiVersion: v1
kind: Service
metadata:name: nodelocal
spec:ports:- port: 80protocol: TCPname: httpselector:app: nginxtopologyKeys:- "kubernetes.io/hostname #定义客户与服务端在一台机器上
就近访问由近到远的配置
apiVersion: v1
kind: Service
metadata:name: prefer-nodelocal
spec:ports:- port: 80protocol: TCPname: httpselector:app: nginxtopologyKeys:- "kubernetes.io/hostname" #找本机有没有对应ep- "topology.kubernetes.io/zone"#没有到zone里找- "topology.kubernetes.io/region"#到region中找- "*"#更大区域
kube-proxy是运行在每台机器上运行的服务,它监听apiserver和ep和svc,通过iptables实现负载均衡(仅支持TCP UDP)
kube-proxy可运行在物理机上以daemonset 或者shistatic pod运行
kube-proxy支持 iptables 与 ipvs v1.8新增ipvs模式,采用增量式更新,并保证service更新期间不断开。
k8s service对象初识相关推荐
- k8s service服务发现详解:ipvs代理模式、服务类型
目录 k8s服务发现Service 理解 Service的实现模型 userspace代理模式 iptables代理模式 ipvs代理模式 Service定义 Service配置清单重要字段 创建Cl ...
- k8s - Service ExternalName
类型ExternalName 类型为 ExternalName 的服务将服务映射到 DNS 名称,而不是典型的选择器,例如 my-service 或者 cassandra. 您可以使用 spec.ex ...
- k8s三 | 使用YAML文件创建k8s资源对象
参考资料:从Docker到Kubernetes进阶-阳明 目录标题 一.YAML基础 1. Maps 2. Lists 二.使用Yaml创建k8s资源对象 1. 使用Yaml创建创建Pod 2. 使用 ...
- CoreDNS与k8s资源对象详解-Day03
1. K8s DNS 官网地址:https://github.com/coredns/coredns https://coredns.io/ https://coredns.io/plugins 1. ...
- Kubernetes Service 对象的使用
我们前面的课程中学习了Pod的基本用法,我们也了解到Pod的生命是有限的,死亡过后不会复活了.我们后面学习到的RC和Deployment可以用来动态的创建和销毁Pod.尽管每个Pod都有自己的IP地址 ...
- 使用kubectl port-forward暴露minikube k8s service端口
kubectl port-forward暴露minikube k8s service端口 第一种方式 minikube service hello-minikube 第二种方式: kubectl po ...
- android 获取服务对象,android 如何取得正在运行的service对象
在写有关推送的代码,用的长连接的方式. 具体逻辑:登录时 启service,service中启一个线程,线程中构建一个CommunicateManegr对象,此对象里面有一个BlockingDeque ...
- Kubernetes系列之理解K8s Service的几种模式
原文地址:Kubernetes系列之理解K8s Service的几种模式 今天给大家介绍下k8s的service的几种访问模式. 概述 我们知道pod的ip不是固定的,是根据所在宿主机的docker0 ...
- k8s object对象(pod controller)介绍
参考https://www.imooc.com/learn/978 Name UID 1 集群中所有对象都通过name和UID明确标识 2 API中的对象访问的路径: /api/{version}/n ...
最新文章
- python中的模块如何学习_在python中学习队列模块(如何运行它)
- 远程连接MySQL慢的原因及解决
- Tomcat问题 无法启动
- 上传头像,layui上传图片
- [LeetCode]--160. Intersection of Two Linked Lists
- 【星球知识卡片】图像风格化与翻译都有哪些核心技术,如何对其长期深入学习...
- 【写实与风格化】技术概述
- HTML+CSS+JS实现 ❤️3D万花筒图片相册展示特效❤️
- 计算机考试忘记备注班级了,2012年计算机二级Access第二十五套上机试题及答案详解...
- java 常量池技术
- 波动方程的行波解(一)| 一维波动方程的通解和初值问题的达朗贝尔(d' Alembert)公式 | 偏微分方程(九)
- 台式计算机突然连接不到网络,电脑突然网络感叹号导致不能上网的解决方法
- 周浩正:写给编辑人的信 关于“编辑”
- 北大国际医院:基于互联网医疗的移动诊疗方案分析与设计
- C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)
- 青春励志感悟人生语录
- 《Python 黑帽子》学习笔记 - 命令行选项和参数处理 - Day 4
- 风讯 4.0之前所有版本通杀拿SHELL 0day
- 超好用的Scihub文献下载工具又双叒叕更新了
- iOS 自动打包工具 ipa server,当然使用蒲公英分发平台更好