如何解决在 Azure Kubernetes 服务中使用 DaemonSet 时,Azure LoadBalancer 丢失了一些请求
我的 Azure 内部负载均衡器存在一些问题,它指向我在 Kubernetes 服务中运行的 Pod 的 DaemonSet。
集群有 3 个节点。
我在使用 DaemonSet 进行一些 jmeter 测试(无压力测试)时观察到一些请求丢失,响应状态为 502。(大约 3% 的错误)这不是来自我的 Pod 的错误,而是来自我假设的 LoadBalancer,因为我的 Pod 上没有针对这些请求的日志。
但是,当我使用带有一个实例的 Deployment 进行相同的测试时,没有错误或 0.01% 之类的错误。 所以这不是因为 Pod 负载,因为单实例 Pod 的负载大于 3 个实例。
我的 DaemonSet/服务配置:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: 'app-backend'
spec:
selector:
matchLabels:
app: 'app-backend'
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
template:
metadata:
labels:
app: 'app-backend'
spec:
containers:
- name: 'app-backend'
image: 'some-image'
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: 'app-backend'
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
loadBalancerIP: 10.128.249.60
ports:
- port: 80
targetPort: 8080
selector:
app: 'app-backend'
获取服务 kubernetes 命令:
kubectl get services -n some-namespace
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
app-backend LoadBalancer 10.0.80.229 10.128.249.60 80:30084/TCP 97m
获取端点 kubernetes 命令:
kubectl get endpoints -n in2data
NAME ENDPOINTS AGE
app-backend 10.244.0.31:8080,10.244.1.26:8080,10.244.2.25:8080 104m
服务似乎正确地指向所有 Pod,所以问题是为什么在部署 DaemonSet 时会出现错误,而在单实例部署时却没有错误。
这些结果是可重复的,所以这不是一些网络问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。