Kubernetes 中的服务用于将 Pod 分组为单个端点。由于 Pod 可以重新创建,因此它们可以附加到服务以获得稳定的 IP 地址。
可以使用 yaml 文件定义服务。下面的示例为 yaml 文件的 Kubernetes 服务。yaml文件中指定的“targetport”就是容器运行所在的端口值。
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8085
Kubernetes 中使用了不同的服务类型。这些服务的不同之处在于它们如何在内部或外部公开 Pod 以及它们如何处理流量。
集群IP
这是使用内部 ClusterIP 公开 Pod 的默认服务。在 ClusterIP 中,服务不可用于集群的外部访问,而是用于集群中不同 Pod 或微服务之间的内部通信。
指定的 TargetPort 值是容器暴露的端口值,指定的端口值是集群 ip 服务暴露的值,内部 Pod 可以使用该端口值相互通信。指定用于创建集群 IP 服务的示例 yaml 如下所示:
apiVersion: v1
kind: Service
metadata:
name: clusterip-demo-service
spec:
selector:
app: myapp
type: ClusterIp
ports:
- protocol: TCP
port: 80
targetPort: 8085
在上面的配置中,运行在Pod中的容器暴露在8085端口,ClusterIP服务端口运行在80,任何内部服务都可以连接到这个80端口来访问这个Pod。
节点端口
该服务对外暴露并允许外部流量通过节点端口连接到 Kubernetes Pod,节点端口是节点端开放的端口。可以使用
下面给出了 NodePort 的示例 yaml 配置:
apiVersion: v1
kind: Service
metadata:
name: nodeport-demo-service
spec:
selector:
app: myapp
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 8085
nodePort: 30070
NodePort 值是在 Node 端暴露的端口,外部流量可以连接到该端口。TargetPort 值是运行在 Pod 中的容器暴露的端口。端口值是集群内部服务可以连接的端口。
根据上述配置,在 Pod 中运行的容器暴露在端口 8085 上,该端口与 nodeport 和端口值映射。外部流量可以通过
NodePort 服务的局限性在于,当节点发生变化或端口号发生变化时,客户端必须更改为新的端口或 IP 地址。
负载均衡器
在云中运行时,此服务将动态创建外部负载均衡器,如云负载均衡器。这使用网络负载均衡器(第 4 层负载均衡器)。这会为额外的负载平衡器组件产生额外的成本。此服务的优点是可以利用外部负载平衡器功能。
示例 yaml 配置如下:
apiVersion: v1
kind: Service
metadata:
name: loadbalancer-demo-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8085
type: LoadBalancer
Ingress: 此服务允许根据定义的规则(如基于路径的路由)路由 HTTP(S) 流量。这可以与一个或多个服务对象相关联,其中这些服务进一步与 Pod 相关联。入口控制器创建 HTTP(S) 负载均衡器第 7 层负载均衡器,这些负载均衡器使用入口对象中的定义自动配置。
Ingress 的示例 yaml 配置如下所示:
apiVersion: v1
kind: Ingress
metadata:
name: Ingress-demo-service
spec:
rules:
- http:
paths:
- path: /customer
backend:
service:
name: customerservice
port:
number: 8080
- path: /product
backend:
service:
name: productservice
port:
number: 8085
在上面的配置中,ingress 配置了到 /customer 路径的 http(s) 请求被发送到运行在 8080 端口的客户服务,对 /product 路径的 http(s) 请求被发送到运行在端口 8085 的产品服务。
页面更新:2024-05-19
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号