Kubernetes - 实战:Service

在 Kubernetes 集群中,Service 是一种抽象,它定义了一组 Pod 的逻辑集合,并为这些 Pod 提供了一个统一的访问入口点。Service 主要功能包括服务发现、负载均衡和对外部访问的支持。下面是 Kubernetes 中 Service 的实战操作步骤:

创建 Service

1. 部署应用

首先,你需要有一个正在运行的 Deployment 或 StatefulSet,其中包含一组具有相同标签(Label)的 Pod。例如,创建一个运行 Nginx 的 Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.10
        ports:
        - containerPort: 80
2. 创建 Service

接下来,创建一个 Service 来代理和暴露这个 Deployment 的服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: ClusterIP # 可以根据需要选择其他类型,如 NodePort、LoadBalancer 或 ExternalName
  • selector 字段用来关联这个 Service 与那些具有 app: nginx 标签的 Pod。
  • ports 字段定义了 Service 提供的端口映射,这里的 port 是 Service 的端口,targetPort 是 Pod 上监听的端口。
3. 应用 Service 配置

应用上述 Service 配置到 Kubernetes 集群:

kubectl apply -f service-definition.yaml

不同类型的 Service

  • ClusterIP(默认):为 Service 分配一个仅在集群内部可见的虚拟 IP 地址。
  • NodePort:在每个节点上开放一个端口,外部可以通过任何节点的 IP 和 NodePort 访问 Service。
  • LoadBalancer:在云服务商支持的情况下,创建一个外部负载均衡器,将流量转发到 NodePort。
  • ExternalName:返回一个 CNAME 记录,指向一个外部服务的 DNS 名称。

验证 Service

  • 查看 Service 是否创建成功以及其详细信息:
kubectl get services
kubectl describe service nginx-service
  • 若创建的是 NodePort 或 LoadBalancer 类型的 Service,可以尝试从外部访问服务(如果是 ClusterIP 类型,则只能在集群内部访问)。

使用 Service

集群内部的其他 Pod 可以通过 Service 的名称和端口来访问这些 Pod,Kubernetes 会自动完成负载均衡。

高级功能

  • Session Affinity:可以通过设置 sessionAffinityClientIP 来实现会话保持。
  • Health Checks:可以通过 readinessProbe 和 livenessProbe 来确保只有健康的 Pod 被包含在 Service 的负载均衡池中。
  • Endpoints:Kubernetes 会自动维护一个 Service 对应的所有 Pod IP 的 Endpoint 资源。

通过 Kubernetes Service,可以轻松实现服务发现、负载均衡以及网络流量的管理,这对于大规模分布式应用来说至关重要。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值