【K8S系列】Kubernetes Service 基础知识 详细先容

打印 上一主题 下一主题

主题 636|帖子 636|积分 1908


   在 Kubernetes 中,Service 是一种抽象的资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口,办理了 Pod 可能频繁变化的题目。本文将详细先容 Kubernetes Service 的类型、功能、使用场景、DNS 和负载平衡等方面。
  1. Service 的类型

Kubernetes 提供了几种不同类型的 Service,以满意不同的网络访问需求:
1.1 ClusterIP



  • 描述:默认类型,仅在集群内部可访问,提供一个内部 IP 地址。
  • 使用场景:适用于集群内部服务之间的通信。
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: my-service
  5. spec:
  6.   type: ClusterIP
  7.   selector:
  8.     app: my-app
  9.   ports:
  10.     - port: 80
  11.       targetPort: 8080
复制代码
1.2 NodePort



  • 描述:在每个节点的指定端口上公开服务,允许外部流量通过节点的 IP 地址访问。
  • 使用场景:适用于开发和测试环境,或当没有负载平衡器时。
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: my-service
  5. spec:
  6.   type: NodePort
  7.   selector:
  8.     app: my-app
  9.   ports:
  10.     - port: 80
  11.       targetPort: 8080
  12.       nodePort: 30007
复制代码
1.3 LoadBalancer



  • 描述:在支持负载平衡的云环境中创建一个外部负载平衡器,将流量分发到对应的 Pod。
  • 使用场景:适用于生产环境,提供高可用性和易于访问的外部服务。
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: my-service
  5. spec:
  6.   type: LoadBalancer
  7.   selector:
  8.     app: my-app
  9.   ports:
  10.     - port: 80
  11.       targetPort: 8080
复制代码
1.4 ExternalName



  • 描述:将服务映射到外部 DNS 名称,不会创建署理。
  • 使用场景:适用于需要访问外部服务的场景。
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: my-external-service
  5. spec:
  6.   type: ExternalName
  7.   externalName: example.com
复制代码
2. Service 的功能

2.1 负载平衡

Service 提供内置的负载平衡功能,可以大概自动将流量分发到后端的 Pod。Kubernetes 使用 iptables 或 IPVS 来实现流量的均匀分配。
2.2 服务发现

Service 为 Pod 提供了一个稳定的访问方式,Pod 的 IP 地址可能会变化,但 Service 的 IP 地址和 DNS 名称保持不变。其他 Pod 可以通过 Service 名称访问:
  1. curl http://my-service
复制代码
2.3 端口映射

Service 允许将外部流量的端口映射到 Pod 内部的端口。比方,将 Service 的 80 端口映射到 Pod 的 8080 端口。
3. Service 的使用场景

3.1 微服务架构

在微服务架构中,各个服务之间需要相互通信。通过使用 Service,可以确保每个服务都有一个稳定的访问入口。
3.2 负载平衡

在处理高流量应用时,Service 可以将请求均匀分配到多个 Pod,以提高应用的可用性和响应速度。
3.3 外部访问

使用 NodePort 或 LoadBalancer 类型的 Service,可以将应用暴露给外部用户,方便访问。
4. DNS 和 Service

Kubernetes 内置了 DNS 服务,为每个 Service 提供了一个 DNS 名称。默认环境下,Service 的 DNS 名称格式为 <service-name>.<namespace>.svc.cluster.local。
4.1 示例

假设有一个名为 my-service 的 Service 在 default 定名空间中,其 DNS 名称为:
  1. my-service.default.svc.cluster.local
复制代码
其他 Pod 可以通过这个 DNS 名称访问该 Service。
5. 选择器和标签

Service 使用标签选择器来确定哪些 Pod 包含在服务后端。选择器可以精确匹配(如即是)或使用更复杂的逻辑(如 in、notin)。
示例

  1. spec:
  2.   selector:
  3.     app: my-app
复制代码
这种方式将会选择所有带有 app=my-app 标签的 Pod。
6. 访问控制

Kubernetes 提供了网络策略(Network Policies)来控制不同 Pod 之间的通信。通过定义网络策略,可以限制哪些 Pod 可以访问特定的 Service。
示例

  1. apiVersion: networking.k8s.io/v1
  2. kind: NetworkPolicy
  3. metadata:
  4.   name: allow-only-my-app
  5. spec:
  6.   podSelector:
  7.     matchLabels:
  8.       app: my-app
  9.   ingress:
  10.   - from:
  11.     - podSelector:
  12.         matchLabels:
  13.           role: frontend
复制代码
7. Service 的康健检查

Kubernetes 支持通过 liveness 和 readiness 探针来检查 Pod 的康健状态。Service 仅将流量发送到康健的 Pod。
示例

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: my-app
  5. spec:
  6.   template:
  7.     spec:
  8.       containers:
  9.       - name: my-container
  10.         image: my-image
  11.         livenessProbe:
  12.           httpGet:
  13.             path: /healthz
  14.             port: 8080
  15.           initialDelaySeconds: 5
  16.           periodSeconds: 10
  17.         readinessProbe:
  18.           httpGet:
  19.             path: /ready
  20.             port: 8080
  21.           initialDelaySeconds: 5
  22.           periodSeconds: 10
复制代码
8. 监控和日志

使用 Service 时,监控其性能和流量至关紧张。可以联合工具如 Prometheus、Grafana 等举行监控。
示例监控指标



  • 请求速率
  • 错误率
  • 响应时间
9. 性能优化

为提高 Service 的性能,可以思量以下几点:


  • 使用得当的 Service 类型:根据需求选择 ClusterIP、NodePort 或 LoadBalancer。
  • 公道配置端口映射:避免不必要的端口转发。
  • 使用网络策略:限制流量以提高安全性和性能。
10. 结论

Kubernetes Service 是集群中至关紧张的组件,为 Pod 提供了稳定的访问方式和负载平衡本事。通过公道配置和使用 Service,可以有效管理和优化微服务架构,确保应用的高可用性和可扩展性。相识 Service 的工作原理和使用场景,有助于更好地构建和维护 Kubernetes 集群。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表