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 --"' &gt&gt ~/.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='^*$' &" &gt 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 &gt unhealthy-pod.yaml &lt&ltEOF
    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 . &gt $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

ความคิดเห็น •