Henry
发布于 2025-03-09 / 8 阅读
0
0

Kubernetes - Service

背景简介

Kubernetes中的Service是一种抽象,定义了访问Pod的逻辑方式,实现Pod间通信和负载均衡。通过标签选择器识别Pod组,Service分配一个稳定的IP和端口,使Pod对外提供服务,确保应用的高可用性。

环境信息

  1. Kubernetes 已安装 【Kubernetes - 安装

详细步骤

第一步: 查看需配置 Service 的 Pod 信息

  • 罗列 Pod
$ kubectl get pod -n chat-robot
NAME                 READY   STATUS    RESTARTS   AGE
chat-robot-redis-0   1/1     Running   0          15h
  • 查看 Pod 详情
$ kubectl describe pod chat-robot-redis-0 -n chat-robot

Name:             chat-robot-redis-0
Namespace:        chat-robot
Priority:         0
Service Account:  default
Node:             k8s-main-worker-1/192.168.122.112
Start Time:       Wed, 05 Mar 2025 18:32:34 +0800
Labels:           app=chat-robot-redis
                  apps.kubernetes.io/pod-index=0
                  controller-revision-hash=chat-robot-redis-6f6998f87c
                  statefulset.kubernetes.io/pod-name=chat-robot-redis-0
                  
                  ******

第二步: 配置 Service,由于测试需要因此选择 NodePort 类型。

  • Service 类型
    • ClusterIP: 这是默认的Service类型。它仅在集群内部提供一个IP地址,使得Pod可以在集群内部通信。ClusterIP服务对于集群外部是不可见的,因此它不适用于外部访问。
    • NodePort: NodePort服务在集群的每个节点上开放一个端口,并将该端口上的流量路由到相应的Service。
      通过:可以从集群外部访问服务。NodePort通常用于开发或测试环境,但在生产环境中可能会因为端口数量限制而不够灵活。
    • LoadBalancer: LoadBalancer服务在云环境中自动创建一个外部负载均衡器(如果支持的话),并将流量路由到Service。它通常用于生产环境,提供从外部网络到集群内部服务的稳定访问。用户可以通过负载均衡器的IP地址访问服务,而无需知道集群内部的具体节点。
apiVersion: v1
kind: Service
metadata:
  name: chat-robot-redis-svc
  namespace: chat-robot
  labels:
    app: chat-robot-redis
spec:
  type: NodePort
  ports:
    - port: 6379  # Redis默认端口
      nodePort: 31925  # 可选,如果不指定,Kubernetes会随机选择一个可用端口
  selector:
    app: chat-robot-redis

解析:

  • apiVersion 和 kind 指定了API版本和资源类型。
  • metadata 包含了Service的名称、命名空间和标签。
  • spec.type 设置为 NodePort,表示Service将通过集群中每个节点的IP和指定端口暴露。
  • spec.ports 定义了内部Pod端口和对外暴露的NodePort。
  • spec.selector 用于选择具有特定标签的Pod,这里选择了名为chat-robot-redis的Pod。

创建 Service

$ kubectl get pod,svc -n chat-robot
NAME                     READY   STATUS    RESTARTS   AGE
pod/chat-robot-redis-0   1/1     Running   0          16h

NAME                           TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/chat-robot-redis-svc   NodePort   10.100.187.49   <none>        6379:31925/TCP   12s

以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言讨论。



评论