单页导航网站,wordpress修订版本 插件,如何做公司网站运营,长春app定制k8s从入门到放弃之Service负载均衡
在 Kubernetes (K8s) 中#xff0c;Service 是一种抽象#xff0c;它定义了一组逻辑上的 Pod 和访问它们的策略。Service 的主要目的是提供一种可靠的方式来访问一组具有相同标签#xff08;Label#xff09;的 Pod#xff0c;即使这些…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: 100mports:- containerPort: 80
---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:type: ClusterIPselector:app: webports:- protocol: TCPport: 80targetPort: 80NodePort案例
资源文档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: 100mports:- containerPort: 80---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:type: NodePortselector:app: webports:- protocol: TCPport: 80targetPort: 80查看集群外部访问地址
[rootmaster /]# 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 2m16sLoadBalancer案例
资源文档 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: 100mports:- containerPort: 80---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:type: LoadBalancerselector:app: webports:- protocol: TCPport: 80targetPort: 80查看集群外部访问地址
[rootmaster /]# 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 2m40sService 是 Kubernetes 中非常重要的概念之一它使得应用程序可以在分布式系统中进行有效的通信和协作。通过合理配置 Service可以确保应用即使在高动态性的容器化环境中也能保持良好的可用性和可访问性。