Kubernetes中的Service用法及如何通过endpoint关联容器外服务

本文阐述了Kubernetes中Service的多种发布类型及其用途,包括ClusterIP、NodePort、LoadBalancer和ExternalName,并介绍了如何使用HeadlessService直接访问PodIP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Service的概念

        Service能够为应用提供一个统一的访问地址(入口地址),并且,Service也提供了负载均衡功能,从而将客户端的请求分发到后端的各个容器中。

Service的两个主要作用:

  • 通过标签Label与Pod关联,实现与Pod的通信
  • 提供不同的访问策略,以实现访问Pod请求的负载均衡

这里以NodePort规则访问来进行说明

1、用户访问192.168.190.200:30014

2、k8s集群根据用户访问的30014端口号找到对应的service

3、service根据同名的endpoints中绑定的Pod IP地址进行负载均衡,转发给其中一个pod

4、根据pod IP 和端口号请求指定服务

二、Service资源的四种类型

2.1 ClusterIP

        ClusterIP是Service默认的发布类型。它将在集群内部分配一个可以访问的虚拟IP地址,通过IP地址暴露服务。因此,这类型的Service只能实现同一个集群内部之间的相互访问

示例:

[root@master clusterIp]# cat service-clusterip.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: deploy-clusterip
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: ngin
---
apiVersion: v1
kind: Service
metadata:
  name: service-clusterip
spec:
  ports:
  - name: http
    port: 1234
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx


[root@master clusterIp]# kubectl apply -f service-clusterip.yaml 
 

 访问:[root@master clusterIp]# curl 10.11.71.44:1234

2.2 NodePort

        把Service的type字段设置为NodePort时,Kubernetes将在每个节点上随机分配一个端口作为外部用户的访问入口(该端口号的默认范围是30000-32767,也是可以修改的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值