kubernetes 连接在部署期间被拒绝

标签 kubernetes google-cloud-platform

我正在尝试使用 kubernetes 实现零停机部署,但在我的测试期间,服务负载平衡不佳。

我的 kubernetes list 是:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: myapp
        version: "0.2"
    spec:
      containers:
      - name: myapp-container
        image: gcr.io/google-samples/hello-app:1.0
        imagePullPolicy: Always
        ports:
          - containerPort: 8080
            protocol: TCP
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5
          successThreshold: 1

---

apiVersion: v1
kind: Service
metadata:
  name: myapp-lb
  labels:
    app: myapp
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: myapp

如果我使用外部 IP 循环服务,假设:

$ kubectl get services
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
kubernetes   ClusterIP      10.35.240.1    <none>           443/TCP        1h
myapp-lb     LoadBalancer   10.35.252.91   35.205.100.174   80:30549/TCP   22m

使用 bash 脚本:

while True
    do
        curl 35.205.100.174 
        sleep 0.2s
    done

我在部署期间收到一些连接被拒绝:

curl: (7) Failed to connect to 35.205.100.174 port 80: Connection refused

应用默认为helloapp由 Google Cloud Platform 提供并在 8080 上运行。

集群信息:

  • Kubernetes 版本:1.8.8
  • 谷歌云平台
  • 机器类型:g1-small

最佳答案

看起来您的请求转到了一个未启动的 pod。我通过添加一些参数避免了这种情况:

  • Liveness probe 以确保应用程序已经启动

  • maxUnavalible: 1 一个一个部署pods

我仍然有一些错误,但它们是可以接受的,因为它们很少发生。在部署过程中,可能会出现一次或两次错误,因此随着负载的增加,错误数量可以忽略不计。我的意思是在部署期间每 2000 个请求出现一两个错误。

关于kubernetes 连接在部署期间被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50307476/

相关文章:

kubernetes - Cloud Composer 实例节点和自动缩放

kubernetes - Kubernetes NetworkPolicies是否会阻止NodePort流量?

google-cloud-platform - GCP OS 登录创建 user_domain 帐户

google-cloud-platform - Google Compute Engine VM 上的暂存磁盘可见性

python-3.x - GCP - 获取有关存储桶的完整信息

postgresql - 如何将 grafana 与 Google Cloud SQL 集成

kubernetes - io.k8s.api.core.v1.ContainerPort.containerPort的Kubernetes ValidationError无效类型:得到 “string”,期望的 “integer”;

kubernetes - 在Kubernetes中使用Heapster的Web API

laravel - 谷歌应用引擎(GAE)错误: chown: cannot access '/app/public' : No such file or directory

kubernetes - Kubernetes 地理分布式集群的最佳实践是什么?