77 lines
4 KiB
Bash
Executable file
77 lines
4 KiB
Bash
Executable file
#!/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 '```' |