K8S之Service
对于K8S整个集群来说,Pod地址是可变的。一个Pod因某些原因退出了,而其设置了副本数replicas大于1那么该Pod就会在集群的任意节点重新启动。重新启动后的Pod的IP与原IP地址不同,这样就不能根据Pod的IP来进行调度。于是K8S引入了Service概念,它为Pod提供了一个入口,主要通过Labels标签来选择后端Pod,不论Pod地址如何变更,只要Pod的Labels标签没变,那么就可以通过service来调度
三种模式
user space、 iptables、 ipvs
Service类型
- Cluster IP 通过集群内部IP暴露服务,只能通过集群内部访问,默认类型
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
nginx-service
spec:
type: ClusterIP
selector: ##定义标签选择器,代理后端nginx-service的pod
name: nginx-service
ports:
- port: 8080
- LoadBalance 使用云提供商的负载均衡器,可以向外部暴露服务。外部的负载均衡器可以路由到NodePort服务和Cluster IP服务
apiVersion: v1
kind: service
metadata:
name: xx-service
spec:
selector:
app: APP
ports:
- protocol: TCP
port: 80
targetPort: 9378
clusterIP: xx.xx.xx.xx
loadBalancerIP: x.x.x.x
type: LoadBalancer
status:
loadBalance:
ingress:
- ip: a.a.a.a
- NodePort node的基本的port,service可以通过NodeIP:NodePort访问service服务,NodePort会路由到ClusterIP 服务,这个ClusterIP 会通过请求自动创建
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
nginx-service
spec:
type: NodePort
selector: ##定义标签选择器,代理后端nginx-service的pod
name: nginx-service
ports:
- port: 8080
- ExternalName 通过返回CNAME和它的值,可以将服务映射到externalName字段的内容,没有任何类型代理被创建,用于访问集群内其他没有labels的Pod,也可以访问其他NameSpace里的service
apiVersion: v1
kind: Service
metadata:
name: xx-service
namespace: prod
spec:
type: ExternalName
externalName: xx.xx.xx.xx.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2019-08-23 thymeleaf常用模板方法收集