EP14.3 - Use Zabbix to monitor Kubernetes (k8s)
ฝัง
- เผยแพร่เมื่อ 8 ต.ค. 2024
- 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
---
[minikube doc](minikube.sigs....)
curl -LO storage.google...
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube start
install docker
---
sudo apt install docker.io -y
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
---
[kubeproxy dos](kubernetes.io/...)
echo "minikube kubectl -- proxy --address='192.168.122.211' --accept-hosts='^*$' &" > kubeproxy.sh
bash -x kubeproxy.sh
#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
---
```
cat > unhealthy-pod.yaml <<EOF
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
```
kubectl apply -f unhealthy-pod.yaml
install helm
---
[helm doc](helm.sh/docs/i...)
curl -fsSL -o get_helm.sh raw.githubuser... | sh -x
chmod 700 get_helm.sh
./get_helm.sh
install zabbix kubernetes-helm
---
www.zabbix.com...
cd ~
git clone git.zabbix.com...
cd kubernetes-helm
helm show values . > $HOME/zabbix_values.yaml
find: - name: ZBX_SERVER_HOST
update: value: "127.0.0.1" to 192.168.122.243
kubectl get namespaces
kubectl create namespace monitoring
helm install zabbix . --dependency-update -f $HOME/zabbix_values.yaml -n monitoring
kubectl get all -n monitoring
kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d
```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
macro: {$KUBE.API.URL}={minikube-ip}:8443 to 192.168.122.211:8001
host: k8s-state
template: Kubernetes cluster state by HTTP
macro: {$KUBE.API.URL} to 192.168.122.211:8001
{$KUBE.API.TOKEN}
update {$KUBE.API.SERVER.URL} for
API servers discovery: API minikube
to 192.168.122.211:8001