Links For Fast Navigation
Тестовый пример
Можно использовать для тестов
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:stable
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: dev.example.com
http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80
Мониторинга
Установка
Для мониторинга kubernetes
используется связка prometheus+grafana+alertmanager
. Для это есть оператор stable/prometheus-operator.
Прежде, чем ставить сам оператор, надо создать свой values.yaml
. commonLabels
используется для назначения лейбла всем ресурсам, которые будут задеплоены. В последующем, этот лейбл надо будет использовать в ServiceMonitor
, PrometheusRule
, чтобы оператор мог их найти и прочесть.
---
nameOverride: "prometheus"
commonLabels:
monitoring: prometheus
alertmanager:
enabled: true
ingress:
enabled: true
labels: {}
hosts:
- alertmanager.example.com
path: /
tls: []
alertmanagerSpec:
storage:
volumeClaimTemplate:
spec:
storageClassName: local-disks
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 4Gi
grafana:
enabled: true
defaultDashboardsEnabled: true
adminPassword: myadmin
persistence:
type: statefulset
enabled: true
accessModes:
- ReadWriteOnce
size: 9Gi
finalizers:
- kubernetes.io/pvc-protection
ingress:
enabled: true
labels: {}
hosts:
- grafana.example.com
path: /
tls: []
prometheus:
enabled: true
ingress:
enabled: true
annotations: {}
labels: {}
hosts:
- prometheus.example.com
path: /
tls: []
prometheusSpec:
replicas: 1
serviceMonitorSelector:
matchLabels:
monitoring: prometheus
ruleSelector:
matchLabels:
monitoring: prometheus
podMonitorSelector:
matchLabels:
monitoring: prometheus
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: local-disks
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 9Gi
Теперь установим оператор в неймспейс monitoring
:
$ kubectl create ns monitoring
$ helm upgrade -i mon stable/prometheus-operator --namespace monitoring -f values.yaml
How to monitor etcd with ssl
Сначала создаем секрет для прометеуса:
D="$(mktemp -d)"
cp /etc/kubernetes/pki/etcd/{ca.crt,healthcheck-client.{crt,key}} $D
kubectl create ns metrics
kubectl -n metrics create secret generic etcd-client --from-file="$D"
rm -fr "$D"
Затем, в values.yml
в разделе prometheus
добавляемЖ
secrets:
- etcd-certificates
Kube-proxy target
Для того, чтобы прометеус мог собирать метрики с kube-proxy
необходимо перебайндить адрес для них. По умолчанию, kube-proxy настроен на 127.0.0.1
. Чтобы это изменить, необходимо изменить его конфиг файл, который находится в ConfigMap kube-proxy
:
$ kubectl -n kube-system edit cm kube-proxy
...
metricsBindAddress: 0.0.0.0:10249
...