我们最近开始在AWS EKS集群上进行Kubernetes部署,并经历了奇怪的行为。具体来说,我们执行了以下步骤:
kubectl create namespace mynamespace
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: mynamespace
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myimage:latest
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: mynamespace
spec:
selector:
app: myapp
type: ClusterIP
ports:
- name: http
port: 80
targetPort: 8080
curl http:///health
在研究之后,我们发现问题出在Kubernetes服务代理中。具体来说,我们发现“kube-proxy”服务偶尔会遇到网络问题,导致会话在请求之间被保留,最终导致请求失败。在我们的情况下,我们在同一节点上发现了多个kube-proxy的实例,并且它们的日志表明这些问题。
解决问题的方法是重新启动kube-proxy服务,并确保它们之间没有任何冲突。以下是解决方案的示例:
kubectl get pods -n kube-system | grep