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类型

  1. 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  
  1. 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      
  1. 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  
  1. 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  
posted @   秋水秋色  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2019-08-23 thymeleaf常用模板方法收集
点击右上角即可分享
微信分享提示