zarya/state/05_k8s.sh

77 lines
4 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -uo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
TALOSCONFIG="${REPO_ROOT}/talos/clusterconfig/talosconfig"
KUBECONFIG_PATH="${HOME}/.kube/config"
echo "## 5. Kubernetes Платформа & Нагрузки"
echo "### Участники кластера Talos (OS-level):"
echo '```text'
timeout 5s talosctl --talosconfig="${TALOSCONFIG}" -n 10.0.20.10 -e 10.0.20.10 get members 2>&1 || echo "Talos API недоступен"
echo '```'
echo "### Ноды кластера K8s:"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get nodes -o wide 2>&1 || echo "K8s API недоступен"
echo '```'
echo "### Топологические лейблы нод (Proxmox-CSI topology):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get nodes -L topology.kubernetes.io/zone,topology.kubernetes.io/region 2>&1 || echo "Не удалось получить лейблы нод"
echo '```'
echo "### Статус ExternalSecrets (Синхронизация из Vault):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get clustersecretstores,externalsecrets -A 2>&1 || echo "Не удалось получить ExternalSecrets"
echo '```'
echo "### Сетевой ingress, сертификаты TLS и L2 Fast-Path VIP:"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get certificates,ingresses -A 2>&1 || echo "Не удалось получить Ingress/TLS"
echo ''
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n kube-system get ciliuml2announcementpolicies,ciliumloadbalancerippools 2>&1 || echo "Не удалось получить Cilium L2"
echo ''
timeout 3s curl -k -s -o /dev/null -w "Traefik VIP (10.0.30.200:443) HTTP Status: %{http_code}\n" https://10.0.30.200 2>&1 || echo "Traefik VIP недоступен"
echo '```'
echo "### Диски и тома (PVC / PV):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get pvc,pv -A 2>&1 || echo "Не удалось получить PVC"
echo '```'
echo "### Статус DaemonSet Proxmox-CSI Node:"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n kube-system get daemonset proxmox-csi-plugin-node 2>&1 || echo "Не удалось получить DaemonSet CSI"
echo '```'
echo "### Статус пространства мониторинга (VictoriaMetrics & Grafana):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n monitoring get statefulsets,pods,pvc 2>&1 || echo "Не удалось получить мониторинг"
echo '```'
echo "### Логи ошибок Proxmox CSI Plugin (последние строки):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n kube-system logs -l app.kubernetes.io/name=proxmox-csi-plugin --tail=15 --prefix=true 2>&1 || echo "Нет логов CSI"
echo '```'
echo "### Синхронизация GitOps (FluxCD):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get gitrepositories,kustomizations,helmreleases -A 2>&1 || echo "Flux не установлен или недоступен"
echo '```'
echo "### Проблемные поды (Non-Running):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get pods -A --field-selector=status.phase!=Running 2>&1 || echo "Все поды в статусе Running"
echo '```'
echo "### Последние события-предупреждения (Warning Events):"
echo '```text'
timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get events -A --field-selector type=Warning --sort-by='.lastTimestamp' 2>&1 | tail -n 15 || echo "Нет предупреждений"
echo '```'
echo "### Реальный объем данных OpenCloud (/var/lib/opencloud-users):"
echo '```text'
timeout 10s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n storage exec statefulset/opencloud -c opencloud -- du -sh /var/lib/opencloud-users 2>&1 || echo "Не удалось получить размер данных OpenCloud"
echo '```'