我做了很多搜索,似乎找不到任何能解决这个问题的人。
我的kubernetes群集上有间歇性的111个连接拒绝错误。似乎我的请求中有90%成功,另外10%失败。如果您“刷新”页面,以前失败的请求将会成功。我有两个不同的库伯内特斯群集,它们具有相同的完全设置,都显示了错误。
这看起来和我的经历非常接近。我确实在一个新集群上安装了我的安装程序,但同样的问题依然存在:Kubernetes ClusterIP间歇性502连接被拒绝
安装程序
集群设置
Kubernetes nginx入口控制器,为进入集群的网络流量提供服务:https://kubernetes.github.io/ingress-nginx/deploy/#gce-gke
从那里我有2入口定义的路由流量基于引用URL。
进入
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: potr-tms-ingress-{{ .Values.environment }}
namespace: {{ .Values.environment }}
labels:
app: potr-tms-{{ .Values.environment }}
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
# this line below doesn't seem to have an effect
# nginx.ingress.kubernetes.io/service-upstream: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "100M"
cert-manager.io/cluster-issuer: "letsencrypt-{{ .Values.environment }}"
spec:
rules:
- host: {{ .Values.ingress_host }}
http:
paths:
- path: /
backend:
serviceName: potr-tms-service-{{ .Values.environment }}
servicePort: 8000
tls:
- hosts:
- {{ .Values.ingress_host }}
- www.{{ .Values.ingress_host }}
secretName: potr-tms-{{ .Values.environment }}-tls
这些入口路由到我为prod和stage定义的两个服务:
服务
apiVersion: v1
kind: Service
metadata:
name: potr-tms-service-{{ .Values.environment }}
namespace: {{ .Values.environment }}
labels:
app: potr-tms-{{ .Values.environment }}
spec:
type: ClusterIP
ports:
- name: potr-tms-service-{{ .Values.environment }}
port: 8000
protocol: TCP
targetPort: 8000
selector:
app: potr-tms-{{ .Values.environment }}
这两项服务是我为prod和stage提供的部署路线:
部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: potr-tms-deployment-{{ .Values.environment }}
namespace: {{ .Values.environment }}
labels:
app: potr-tms-{{ .Values.environment }}
spec:
replicas: {{ .Values.deployment_replicas }}
selector:
matchLabels:
app: potr-tms-{{ .Values.environment }}
strategy:
type: RollingUpdate
template:
metadata:
annotations:
rollme: {{ randAlphaNum 5 | quote }}
labels:
app: potr-tms-{{ .Values.environment }}
spec:
containers:
- command: ["gunicorn", "--bind", ":8000", "config.wsgi"]
# - command: ["python", "manage.py", "runserver", "0.0.0.0:8000"]
envFrom:
- secretRef:
name: potr-tms-secrets-{{ .Values.environment }}
image: gcr.io/potrtms/potr-tms-{{ .Values.environment }}:latest
name: potr-tms-{{ .Values.environment }}
ports:
- containerPort: 8000
resources:
requests:
cpu: 200m
memory: 512Mi
restartPolicy: Always
serviceAccountName: "potr-tms-service-account-{{ .Values.environment }}"
status: {}
这似乎很清楚,如果我的部署吊舱出现故障或显示错误,它们将“不可用”,服务将无法将它们路由到吊舱。为了尝试并调试它,我增加了部署资源和副本数。不过,该应用的网络流量非常低,大约有10个用户。
我试过的
使现代化
提高豆荚数量似乎有点帮助。
有些请求仍然失败。
我无法找出这些连接错误发生的原因,但我确实找到了一种解决用户问题的方法。
在入口配置中添加注释
nginx。进入。库伯内特斯。io/proxy下一个上行尝试:“10”
我把它设置为10只是为了确保它重试,因为我很有信心我们的服务是有效的。你可能会逃脱2或3。
这是我的全部入口。亚马尔
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: potr-tms-ingress-{{ .Values.environment }}
namespace: {{ .Values.environment }}
labels:
app: potr-tms-{{ .Values.environment }}
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
# nginx.ingress.kubernetes.io/service-upstream: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "100M"
nginx.ingress.kubernetes.io/client-body-buffer-size: "100m"
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "1024m"
nginx.ingress.kubernetes.io/proxy-next-upstream-tries: "10"
cert-manager.io/cluster-issuer: "letsencrypt-{{ .Values.environment }}"
spec:
rules:
- host: {{ .Values.ingress_host }}
http:
paths:
- path: /
backend:
serviceName: potr-tms-service-{{ .Values.environment }}
servicePort: 8000
tls:
- hosts:
- {{ .Values.ingress_host }}
- www.{{ .Values.ingress_host }}
secretName: potr-tms-{{ .Values.environment }}-tls
你找到解决办法了吗?我在minikube上看到了非常相似的设置。
在我的例子中,我相信我也看到nginx控制器在502之后重新启动。502是间歇性的,通常第一次访问失败,然后重新加载工作。
到目前为止,我发现最好的办法是增加Nginx timeout参数,但我还没有尝试过。仍在努力寻找所有选项。
我一直在尝试建立库伯内特斯星系团。 我在数字海洋上有两个UbuntuDrople,我用它们来做这件事。 我现在试图为我的docker凭据创建一个秘密,以便我可以在节点上拉私有映像,但是当我运行此命令(或任何其他kubectl命令,例如kubectl获取节点)时,我得到这个错误:到服务器的连接localhost:8080被拒绝-您指定正确的主机或端口吗? 然而,这一切都是因为kubectl本身显示了
问题内容: 当我发表评论时,不要保存,崩溃(错误:[Errno 111]连接被拒绝),为什么? views.py models.py 管理员 问题答案: 为了进行调试,你可以使用以下命令设置本地smtpserver: 并相应地调整你的邮件设置:
我是Kubernetes平台的新手,尝试启用部署在Kubernetes平台上的tomcat web app的HTTPS安全连接。我对舱单感到困惑。与部署、服务和入口控制器相关的yml。 那么,我是否也必须在部署(在端口:-containerPort:8080)服务(如端口:-端口:80 targetPort:8080协议:TCP名称:http)和入口(在后端:serviceName:tomcat
我只是在本地mac上使用mini kube设置kubernetes。 创建了一个类型为NodePort的服务,并且能够使用url
问题内容: 我有一台运行Ubuntu 12.04 LTS和MongoDB实例(服务正在运行并且可以在本地连接)的Linode服务器,我无法从外部来源连接到该服务器。 我已经将这两个规则添加到我的IP表中,其中 是我要连接FROM的服务器(如本 MongoDB参考中所述): 而且我在IP表中看到了一条规则,该规则允许27017与 之间的连接,但是当我尝试使用以下命令从 连接到我的mongo数据库时:
问题内容: 我正在尝试将Redis用作我的使用Docker Compose的Django项目的Celery的代理。我无法弄清楚我到底做错了什么,但是尽管控制台日志消息告诉我Redis正在运行并接受连接(实际上,当我这样做时,我可以看到容器正在运行),但我仍然会收到有关拒绝连接的错误消息。我什至做到了 看到回应是。 这是my中的Celery设置: 这是my中的Redis容器设置: 我还记得将容器与我