EP14.3 - Use Zabbix to monitor Kubernetes (k8s)

preview_player
Показать описание
In this episode
---
- install minikube(v1.34) using docker
- use kubeproxy to expose api
- install helm and zabbix Kubernetes-helm
- add a zabbix host with k8s template

install minikube
---
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube start

install docker
---
sudo usermod -aG docker rui
newgrp docker

start minikube
---
minikube start
minikube status

minikube kubectl -- get pods -A

alias kubectl="minikube kubectl --"
echo 'alias kubectl="minikube kubectl --"' >> ~/.bashrc

kubectl get pods -A

ip info
---
minikube ip
192.168.49.2

$ docker network inspect minikube | grep -i ipv4address
"IPv4Address": "192.168.49.2/24",
$ kubectl cluster-info dump | grep cluster-cidr
"--cluster-cidr=10.244.0.0/16",
$ kubectl cluster-info dump | grep ip-range
"--service-cluster-ip-range=10.96.0.0/12",
"--service-cluster-ip-range=10.96.0.0/12",

$ kubectl describe node minikube | grep -i cidr
PodCIDR: 10.244.0.0/24
PodCIDRs: 10.244.0.0/24

kubeproxy
---
#kubectl proxy --address='192.168.122.211' --port=8001 --accept-hosts='^*$'

Deploy applications
---
kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get services hello-minikube
minikube service hello-minikube

kubectl port-forward --address 192.168.122.211 service/hello-minikube 7080:8080 &

curl 192.168.122.211:7080

create a unhealth pod
---
```
apiVersion: v1
kind: Pod
metadata:
name: unhealthy-pod
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /fail # Intentionally specify a non-existent path to trigger a health check failure.
port: 80
initialDelaySeconds: 5
periodSeconds: 5
EOF
```

install helm
---

install zabbix kubernetes-helm
---
cd ~
cd kubernetes-helm

find: - name: ZBX_SERVER_HOST
update: value: "127.0.0.1" to 192.168.122.243

kubectl get namespaces
kubectl create namespace monitoring

kubectl get all -n monitoring

```token of sa
eyJhbGciOiJSUzI1NiIsImtpZCI6InZCeHpBR1ZIaEZxVWpyUm1ILUR1S3pUTU9NTFdXS0k3RTk2d1NKMnI2WE0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtb25pdG9yaW5nIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InphYmJpeC1zZXJ2aWNlLWFjY291bnQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiemFiYml4LXNlcnZpY2UtYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImExY2Y0ZTBhLTRjNjAtNDlmYi1hMTg3LTcyNTgzMDU0NGY0MyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptb25pdG9yaW5nOnphYmJpeC1zZXJ2aWNlLWFjY291bnQifQ.fPhezdpTaPawXgyRNpInYz7SV4bSRDZdyHQPXBsVFfMmpamkBFWvJ07HwgX0dG0ZWTUMl9gLw8FMtLC1COaX_DfhtTh6Es-_3K0ynvBZZpKo8TZNkkrlrBP1Hperc0swowmqBybW5OBpS17EpL2JaA7wYEl3l-TaQdbs4biIqkxc7ff7O2k4hG7E0oq7XbLHhjoWmXduTAD8vP-T9LI1XtvAfHePirjAa9bWt1dnv69QTRju-csmJnHHFCoGL_19KD2yS0YLftnoe4midtiUElX1Zq07vNH6U_pIhy39tbMMM41TOWWAn4hFxUWJEddKrF4L6fK2WlAyvPLdSk3-dw
```

add host zabbix
---
host: k8s-note
template: Kubernetes nodes by HTTP, Kubernetes cluster state by HTTP

host: k8s-state
template: Kubernetes cluster state by HTTP
{$KUBE.API.TOKEN}

update {$KUBE.API.SERVER.URL} for
API servers discovery: API minikube
Рекомендации по теме