在Kubernetes中,可以使用Service和Ingress来实现负载均衡。AKS负载均衡器将流量分发到多个Pod,而不是仅发送到一个Pod。如果你想要将流量发送到单个Pod,可以通过以下两种方式来实现:
使用Headless Service:
clusterIP
设置为None
,这将使Service成为一个Headless Service,它将不会分配一个虚拟IP。以下是一个使用Headless Service的示例:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
clusterIP: None
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
使用Ingress:
nginx.ingress.kubernetes.io/upstream-hash-by
注解来控制流量的分发方式。以下是一个使用Ingress的示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/upstream-hash-by: "$binary_remote_addr"
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
请注意,这两种方法都涉及到将流量发送到单个Pod,但这并不意味着Pod将是单点故障。Kubernetes会自动管理Pod的复制和故障恢复,以确保应用的高可用性。