kubernetes kibana运算符故障和nginx入口超时

zfycwa2u  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(308)

我刚刚开始在azurelinux虚拟机上实现kubernetes集群。我对这一切都很陌生。群集运行在一个小型虚拟机(2核,16gb)上。我使用他们的在线教程设置eck堆栈,并使用nginx入口控制器公开它。
一天的大部分时间,一切都很顺利。我可以访问kibana Jmeter 板,运行弹性查询,nginx正在工作。但是大约每天都会发生一次这样的事情,导致与kibana服务匹配的kibana端点没有任何ip地址。因此,服务无法正确路由到容器。当这种情况发生时,kibana pod的状态为running,但表示0/1正在运行。它从不触发任何重新启动,因此,kibana Jmeter 板变得不可访问。我试着通过关闭docker容器,强制杀死pod来复制它,但是不能可靠地复制它。
查看kibana pod上的日志,由于超时,有很多错误。nginx日志说它找不到服务的端点。看来这可能是源头。有人遇到过这个吗?有人知道一个可靠的方法来防止这种情况吗?
这可能是一个单独的问题,但它导致的另一个问题是完全阻止所有nginx入口。在日志中看不到任何新的请求,并且在出现关于找不到端点的消息后,日志将完全停止。结果,所有进入的url通常都会超时,整个集群在外部变得不可用。这可以通过删除nginx控制器pod来修复,但是pod不会自动重启。有人能解释为什么这样的问题会完全阻塞nginx吗?为什么nginx吊舱检测不到这一点并重新启动?
编辑:
nginx日志的结尾是:

W1126 16:20:31.517113       6 controller.go:950] Service "default/gwam-kb-http" does not have any active Endpoint.
W1126 16:20:34.848942       6 controller.go:950] Service "default/gwam-kb-http" does not have any active Endpoint.
W1126 16:21:52.555873       6 controller.go:950] Service "default/gwam-kb-http" does not have any active Endpoint.

任何进一步的请求都会超时,并且不会出现在日志中。
我没有kibana pod的日志,但它们只是kibana服务的一致超时 default/gwam-kb-http (与上面nginx日志相同)。这导致准备就绪探测器失败,并显示 0/1 Running ,但没有触发吊舱重启。
一切正常时kibana结束

Name:         gwam-kb-http
Namespace:    default
Labels:       common.k8s.elastic.co/type=kibana
              kibana.k8s.elastic.co/name=gwam
Annotations:  endpoints.kubernetes.io/last-change-trigger-time: 2020-11-26T16:27:20Z
Subsets:
  Addresses:          10.244.0.6
  NotReadyAddresses:  <none>
  Ports:
    Name   Port  Protocol
    ----   ----  --------
    https  5601  TCP

Events:  <none>

当我遇到这个问题时, Addresses 是空的,pod ip处于 NotReadyAddresses 我使用的是eck安装教程中非常基本的yaml:
弹性(这里没有问题)

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: gwam
spec:
  version: 7.10.0
  nodeSets:
  - name: default
    count: 3
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 2Gi
        storageClassName: elasticsearch

Kibana:

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: gwam
spec:
  version: 7.10.0
  count: 1
  elasticsearchRef:
    name: gwam

kibana服务入口:

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: nginx-ingress-secure-backend-no-rewrite
  annotations: 
    kubernetes.io/ingress.class: nginx
    nginx.org/proxy-connect-timeout: "30s"
    nginx.org/proxy-read-timeout: "20s"
    nginx.org/proxy-send-timeout: "60s"
    nginx.org/client-max-body-size: "4m"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  tls: 
  - hosts:
    - <internal company site>
    secretName: gwam-tls-secret
  rules:
    - host: <internal company site>
      http:
        paths:
          - path: /
            backend:
              serviceName: gwam-kb-http
              servicePort: 5601

更多环境细节:
kubernetes版本:1.19.3
操作系统:ubuntu 18.04.5 lts(gnu/linux 5.4.0-1031-azure x86\U 64)
编辑2:
我好像遇到了网络错误。我的pod都不能为kubernetes.default做dnslookup。所有的网络pod都在运行,但是在向coredns添加日志之后,我看到了以下内容: [ERROR] plugin/errors: 2 1699910358767628111.9001703618875455268. HINFO: read udp 10.244.0.69:35222->10.234.44.20:53: i/o timeout 我用法兰绒做我的网络。考虑尝试重新设置和切换到印花布和增加nf\u conntrack\u max作为一些答案建议。

rqcrx0a6

rqcrx0a61#

最后我犯了一个很简单的错误。我以为这是一个pod或dns问题,但只是一个一般的网络问题。我的ip转发已关闭。我打开了它:

sysctl -w net.ipv4.ip_forward=1

并补充道 net.ipv4.ip_forward=1/etc/sysctl.conf

相关问题