欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > k8s从入门到放弃之Service负载均衡

k8s从入门到放弃之Service负载均衡

2025/9/23 10:00:48 来源:https://blog.csdn.net/weixin_67608572/article/details/148534798  浏览:    关键词:k8s从入门到放弃之Service负载均衡

k8s从入门到放弃之Service负载均衡

在 Kubernetes (K8s) 中,Service 是一种抽象,它定义了一组逻辑上的 Pod 和访问它们的策略。Service 的主要目的是提供一种可靠的方式来访问一组具有相同标签(Label)的 Pod,即使这些 Pod 可能会在集群中被动态地创建或销毁。

Service的核心功能

  • 服务发现:通过 DNS 或者环境变量的方式,让其他应用可以找到并访问到这个 Service。
  • 负载均衡:将到达 Service 的请求分发给后端的多个 Pod 实例。
  • 稳定的 IP 地址和 DNS 名称:为一组 Pod 提供一个固定的 IP 地址和 DNS 名称,即使后端的 Pod 发生了变化,如重启、扩展等操作。
  • 流量代理:通过 kube-proxy 组件实现对流量的转发,支持多种代理模式,包括 userspace、iptables 和 IPVS。

Service的类型

  • ClusterIP:默认类型,通过集群内部 IP 暴露服务,只能从集群内部访问。
  • NodePort:通过每个节点的 IP 和静态端口暴露服务,允许外部流量通过节点 IP 和 NodePort 访问服务。
  • LoadBalancer:通常用于云环境中,自动创建一个外部负载均衡器,并分配一个外部 IP 来暴露服务。

ClusterIP案例

资源文档kubectl explain Service.spec

apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-nginx
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:1.20.0readinessProbe:tcpSocket:port: 80resources:limits:cpu: "100m"ports:- containerPort: 80
---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:type: ClusterIPselector:app: webports:- protocol: TCPport: 80targetPort: 80

NodePort案例

资源文档kubectl explain Service.spec

apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-nginx
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:1.20.0readinessProbe:tcpSocket:port: 80resources:limits:cpu: "100m"ports:- containerPort: 80---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:type: NodePortselector:app: webports:- protocol: TCPport: 80targetPort: 80

查看集群外部访问地址

[root@master /]# kubectl get svc 
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        20d
nginx-svc    NodePort    10.107.140.239   <none>        80:32017/TCP   2m16s

LoadBalancer案例

资源文档 kubectl explain Service.spec

apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-nginx
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:1.20.0readinessProbe:tcpSocket:port: 80resources:limits:cpu: "100m"ports:- containerPort: 80---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:type: LoadBalancerselector:app: webports:- protocol: TCPport: 80targetPort: 80

查看集群外部访问地址

[root@master /]# kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>         443/TCP        20d
nginx-svc    LoadBalancer   10.101.116.99   10.244.2.240   80:30143/TCP   2m40s

Service 是 Kubernetes 中非常重要的概念之一,它使得应用程序可以在分布式系统中进行有效的通信和协作。通过合理配置 Service,可以确保应用即使在高动态性的容器化环境中也能保持良好的可用性和可访问性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词