我们最近开始在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