mirror of https://github.com/grafana/loki
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
5.1 KiB
198 lines
5.1 KiB
|
3 years ago
|
---
|
||
|
2 years ago
|
title: Install on Istio
|
||
|
|
menuTitle:
|
||
|
|
description: Installation instructions for Istio service mesh
|
||
|
|
aliases:
|
||
|
|
- ../../installation/istio/
|
||
|
|
weight: 600
|
||
|
|
keywords:
|
||
|
3 years ago
|
---
|
||
|
2 years ago
|
# Install on Istio
|
||
|
3 years ago
|
|
||
|
3 years ago
|
When installing Loki on Istio service mesh you must complete some additional steps. Without these steps, the ingester, querier, etc. might start, but you will see logs like the following:
|
||
|
3 years ago
|
|
||
|
|
```
|
||
|
|
loki level=debug ts=2021-11-24T11:33:37.352544925Z caller=broadcast.go:48 msg="Invalidating forwarded broadcast" key=collectors/distributor version=123 oldVersion=122 content=[loki-distributor-59c4896444-t9t6g[] oldContent=[loki-distributor-59c4896444-t9t6g[]
|
||
|
|
```
|
||
|
|
|
||
|
|
This means that the pod is failing to join the ring.
|
||
|
|
|
||
|
|
If you try to add `loki` to `Grafana` data sources, you will see logs like (`empty ring`)
|
||
|
|
|
||
|
|
```
|
||
|
|
loki level=warn ts=2021-11-24T08:02:42.08262122Z caller=logging.go:72 traceID=3fc821042d8ada1a orgID=fake msg="GET /loki/api/v1/labels?end=1637740962079859431&start=1637740361925000000 (500) 97.4µs Response: \"empty ring\\n\" ws: false; X-Scope-Orgid: fake; uber-trace-id: 3fc821042d8ada1a:1feed8872deea75c:1180f95a8235bb6c:0; "
|
||
|
|
```
|
||
|
|
|
||
|
3 years ago
|
When you enable istio-injection on the namespace where Loki is running, you need to also modify the configuration for the Loki services. Given that Istio will not allow a pod to resolve another mod using an IP address, you must also modify the `memberlist` service.
|
||
|
3 years ago
|
|
||
|
3 years ago
|
## Required changes
|
||
|
3 years ago
|
|
||
|
3 years ago
|
### Query frontend service
|
||
|
|
|
||
|
|
Make the following modifications to the file for Loki's Query Frontend service.
|
||
|
3 years ago
|
|
||
|
|
1. Change the name of `grpc` port to `grpclb`. This is used by the grpc load balancing strategy which relies on SRV records. Otherwise the `querier` will not be able to reach the `query-frontend`. See https://github.com/grafana/loki/blob/0116aa61c86fa983ddcbbd5e30a2141d2e89081a/production/ksonnet/loki/common.libsonnet#L19
|
||
|
|
and
|
||
|
|
https://grpc.github.io/grpc/core/md_doc_load-balancing.html
|
||
|
|
3. Set the `appProtocol` of `grpclb` to `tcp`
|
||
|
|
4. Set `publishNotReadyAddresses` to `true`
|
||
|
|
|
||
|
|
```
|
||
|
|
apiVersion: v1
|
||
|
|
kind: Service
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: loki-query-frontend
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-query-frontend
|
||
|
|
spec:
|
||
|
|
ports:
|
||
|
|
- appProtocol: http
|
||
|
|
name: http
|
||
|
|
port: 3100
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: http
|
||
|
|
- appProtocol: tcp
|
||
|
|
name: grpclb
|
||
|
|
port: 9095
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: grpc
|
||
|
|
publishNotReadyAddresses: true
|
||
|
|
selector:
|
||
|
|
app: loki-query-frontend
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-query-frontend
|
||
|
|
type: ClusterIP
|
||
|
|
```
|
||
|
|
|
||
|
|
### Querier service
|
||
|
|
|
||
|
3 years ago
|
Make the following modifications to the file for Loki's Querier service.
|
||
|
|
|
||
|
3 years ago
|
Set the `appProtocol` of the `grpc` service to `tcp`
|
||
|
|
|
||
|
|
```
|
||
|
|
apiVersion: v1
|
||
|
|
kind: Service
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: loki-querier
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-querier
|
||
|
|
name: loki-querier
|
||
|
|
namespace: observability
|
||
|
|
spec:
|
||
|
|
ports:
|
||
|
|
- appProtocol: http
|
||
|
|
name: http
|
||
|
|
port: 3100
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: http
|
||
|
|
- appProtocol: tcp
|
||
|
|
name: grpc
|
||
|
|
port: 9095
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: grpc
|
||
|
|
selector:
|
||
|
|
app: loki-querier
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-querier
|
||
|
|
type: ClusterIP
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
3 years ago
|
### Ingester service and Ingester headless service
|
||
|
|
|
||
|
|
Make the following modifications to the file for Loki's Query Ingester and Ingester Headless service.
|
||
|
3 years ago
|
|
||
|
|
Set the `appProtocol` of the `grpc` port to `tcp`
|
||
|
|
|
||
|
|
```
|
||
|
|
apiVersion: v1
|
||
|
|
kind: Service
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: loki-ingester-(headless)
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-ingester
|
||
|
|
name: loki-ingester-headless
|
||
|
|
spec:
|
||
|
|
clusterIP: None (if headless)
|
||
|
|
ports:
|
||
|
|
- name: http
|
||
|
|
port: 3100
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: http
|
||
|
|
- appProtocol: tcp
|
||
|
|
name: grpc
|
||
|
|
port: 9095
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: grpc
|
||
|
|
selector:
|
||
|
|
app: loki-ingester
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-ingester
|
||
|
|
type: ClusterIP
|
||
|
|
```
|
||
|
|
|
||
|
3 years ago
|
### Distributor service
|
||
|
|
|
||
|
|
Make the following modifications to the file for Loki's Distributor service.
|
||
|
3 years ago
|
|
||
|
|
Set the `appProtocol` of the `grpc` port to `tcp`
|
||
|
|
|
||
|
|
```
|
||
|
|
apiVersion: v1
|
||
|
|
kind: Service
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app: loki-distributor
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-distributor
|
||
|
|
spec:
|
||
|
|
ports:
|
||
|
|
- name: http
|
||
|
|
port: 3100
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: http
|
||
|
|
- name: grpc
|
||
|
|
port: 9095
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: grpc
|
||
|
|
appProtocol: tcp
|
||
|
|
selector:
|
||
|
|
app: loki-distributor
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/name: loki-distributor
|
||
|
|
sessionAffinity: None
|
||
|
|
type: ClusterIP
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
3 years ago
|
### Memberlist service
|
||
|
|
|
||
|
|
Make the following modifications to the file for the Memberlist service.
|
||
|
3 years ago
|
|
||
|
|
Set the `appProtocol` of the `http` port to `tcp`
|
||
|
|
|
||
|
|
```
|
||
|
|
apiVersion: v1
|
||
|
|
kind: Service
|
||
|
|
metadata:
|
||
|
|
labels:
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
name: loki-memberlist
|
||
|
|
namespace: observability
|
||
|
|
spec:
|
||
|
|
clusterIP: None
|
||
|
|
ports:
|
||
|
|
- name: http
|
||
|
|
port: 7946
|
||
|
|
protocol: TCP
|
||
|
|
targetPort: 7946
|
||
|
|
appProtocol: tcp
|
||
|
|
selector:
|
||
|
|
app.kubernetes.io/instance: observability
|
||
|
|
app.kubernetes.io/part-of: memberlist
|
||
|
|
```
|