首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将日志发送到Graylog kubernetes

无法将日志发送到Graylog kubernetes
EN

Stack Overflow用户
提问于 2019-08-19 18:26:49
回答 1查看 831关注 0票数 0

如何在入口暴露节点端口?

代码语言:javascript
复制
NAME                         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                                       AGE
logs-graylog                 NodePort    10.20.8.187   <none>        80:31300/TCP,12201:31301/UDP,1514:31302/TCP   5d3h
logs-graylog-elasticsearch   ClusterIP   None          <none>        9200/TCP,9300/TCP                             5d3h
logs-graylog-master          ClusterIP   None          <none>        9000/TCP                                      5d3h
logs-graylog-slave           ClusterIP   None          <none>        9000/TCP                                      5d3h
logs-mongodb-replicaset      ClusterIP   None          <none>        27017/TCP                                     5d3h

这就是我的服务在有一些节点端口的地方的样子。端口80上暴露了Graylog web接口。

但是我不能在URL上发送日志。我的灰度日志网页是https://logs.example.com

它在https证书上运行-管理器在kubernertes入口上。

我无法在URl上发送Glef UDP日志。我是否遗漏了从入口或UDP筛选器打开端口的内容?

这是我的入口:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: logs-graylog-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: graylog
    nginx.ingress.kubernetes.io/ssl-redirect: "true"

spec:
  tls:
  - hosts:
    - logs.example.io
    secretName: graylog
  rules:
  - host: logs.example.io
    http:
      paths:
      - backend:
          serviceName: logs-graylog
          servicePort: 80
      - backend:
          serviceName: logs-graylog
          servicePort: 12201
      - backend:
          serviceName: logs-graylog
          servicePort: 31301

服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:

  labels:
    app: graylog
    chart: graylog-0.1.0
    component: graylog-service
    heritage: Tiller
    name: graylog
    release: logs
  name: logs-graylog

spec:
  clusterIP: 10.20.8.187
  externalTrafficPolicy: Cluster
  ports:
  - name: http
    nodePort: 31300
    port: 80
    protocol: TCP
    targetPort: 9000
  - name: udp-input
    nodePort: 31301
    port: 12201
    protocol: UDP
    targetPort: 12201
  - name: tcp-input
    nodePort: 31302
    port: 1514
    protocol: TCP
    targetPort: 1514
  selector:
    graylog: "true"
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-20 12:12:50

UDP服务通常不像TCP HTTP(S)服务那样通过入口控制器公开。我不确定是否有入口控制器支持UDP,当然不是在一个入口定义中结合了3个协议。

如果集群托管在云服务上,大多数都支持Service with type LoadBalancer来将外部连接映射到集群中。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: logs-direct-graylog
spec:
  selector:
    graylog: "true"
  ports:
  - name: udp-input
    port: 12201
    protocol: UDP
    targetPort: 12201
  - name: tcp-input
    port: 1514
    protocol: TCP
    targetPort: 1514
  type: LoadBalancer

如果您的环境中没有LoadBalancer类型的服务,您可以使用NodePort服务。您定义的nodePort将在每个节点的外部IP上可用。

nodePort对于http端口并不是严格要求的,因为nginx Ingress会在它自己的服务中的其他地方为您处理这个问题。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: logs-graylog
spec:
  selector:
    graylog: "true"
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 9000

可以从入口定义中删除80以外的端口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57554890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档