无法将日志发送到 Graylog kubernetes
Can't send log into Graylog kubernetes
如何在ingress上暴露节点端口?
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
这是我的服务在有一些节点端口的地方的样子。
Graylog Web 界面在端口 80 上公开。
但我无法在 URL 上发送日志。我的 graylog weburl 是 https://logs.example.com
在 https cert-manager 上 运行 在 kubernertes ingress 上。
我无法在 URl 上发送 Glef UDP 日志。我是否缺少从入口打开端口或 UDP 过滤器的东西?
这是我的入口:
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
服务:
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: {}
UDP 服务通常不会像 TCP HTTP(S) 服务那样通过 Ingress Controller 公开。我不确定是否有任何入口控制器甚至支持 UDP,当然不支持 3 个协议组合在一个入口定义中。
如果集群托管在云服务上,大多数支持 Service with type LoadBalancer
将外部连接映射到集群中。
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
s 将在每个节点的外部 IP 上可用。
A nodePort
对于 http 端口不是严格要求的,因为 nginx 入口控制器会在它自己的服务的其他地方为您处理。
apiVersion: v1
kind: Service
metadata:
name: logs-graylog
spec:
selector:
graylog: "true"
ports:
- name: http
port: 80
protocol: TCP
targetPort: 9000
可以从入口定义中删除 80 以外的端口。
如何在ingress上暴露节点端口?
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
这是我的服务在有一些节点端口的地方的样子。 Graylog Web 界面在端口 80 上公开。
但我无法在 URL 上发送日志。我的 graylog weburl 是 https://logs.example.com
在 https cert-manager 上 运行 在 kubernertes ingress 上。
我无法在 URl 上发送 Glef UDP 日志。我是否缺少从入口打开端口或 UDP 过滤器的东西?
这是我的入口:
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
服务:
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: {}
UDP 服务通常不会像 TCP HTTP(S) 服务那样通过 Ingress Controller 公开。我不确定是否有任何入口控制器甚至支持 UDP,当然不支持 3 个协议组合在一个入口定义中。
如果集群托管在云服务上,大多数支持 Service with type LoadBalancer
将外部连接映射到集群中。
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
s 将在每个节点的外部 IP 上可用。
A nodePort
对于 http 端口不是严格要求的,因为 nginx 入口控制器会在它自己的服务的其他地方为您处理。
apiVersion: v1
kind: Service
metadata:
name: logs-graylog
spec:
selector:
graylog: "true"
ports:
- name: http
port: 80
protocol: TCP
targetPort: 9000
可以从入口定义中删除 80 以外的端口。