kubectl-sql est un plugin kubectl qui utilise un langage de type SQL pour interroger le gestionnaire de cluster Kubernetes
Utilisation du gestionnaire de plugins Krew pour installer :
kubectl krew install sql
kubectl sql --help
Utilisation de Fedora Copr :
dnf copr enable yaacov/kubesql
dnf install kubectl-sql
De la source :
git clone [email protected]:yaacov/kubectl-sql.git
cd kubectl-sql
make
kubectl-sql vous permet de sélectionner des ressources Kubernetes en fonction de la valeur d'un ou plusieurs champs de ressources, en utilisant un langage de requête de type SQL, lisible par l'homme et facile à utiliser. Il est également possible de retrouver des ressources connectées à l'aide de la commande join
.
Plus d'exemples de Kubectl-SQL
# Get all pods from current namespace scope, that has a name starting with "virt-" and
# IP that ends with ".84"
kubectl-sql get pods where " name ~= '^virt-' and status.podIP ~= '[.]84$' "
AMESPACE NAME PHASE hostIP CREATION_TIME(RFC3339)
default virt-launcher-test-bdw2p-lcrwx Running 192.168.126.56 2020-02-12T14:14:01+02:00
...
# Get all persistant volume clames that are less then 20Gi, and output as json.
kubectl-sql -o json get pvc where " spec.resources.requests.storage < 20Gi "
...
# Display non running pods by nodes for all namespaces.
kubectl-sql join nodes,pods on
" nodes.status.addresses.1.address = pods.status.hostIP and not pods.phase ~= 'Running' " -A
...
# Filter replica sets with less ready-replicas then replicas"
kubectl-sql --all-namespaces get rs where " status.readyReplicas < status.replicas "
--indicateur de sortie | Format d'impression |
---|---|
tableau | Tableau |
nom | Noms seulement |
yaml | YAML |
json | JSON |
jq
est un processeur JSON en ligne de commande léger et flexible. Il est possible de diriger la sortie de la commande kubectl vers la commande jq
pour créer des recherches compliquées ( toturial jq illustré )
https://stedolan.github.io/jq/manual/#select(boolean_expression)
Les sélecteurs de champs vous permettent de sélectionner des ressources Kubernetes en fonction de la valeur d'un ou plusieurs champs de ressources. Voici quelques exemples de requêtes de sélecteur de champ.
https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/