Un guide de KUBECTL comme jamais auparavant

Quel genre d'ingénieur es-tu ? Quelqu'un peut-il le deviner rien qu'en regardant son apparence ? C'est probablement impossible à deviner.

Traduit de Le guide de kubectl que je n'ai jamais eu , auteur Jake Page.

Et si quelqu’un pouvait le deviner rien qu’en regardant votre clavier ? C'est probablement un peu plus facile maintenant.

Vous savez que vous avez affaire à un ingénieur Kubernetes lorsque la touche « k » de votre clavier est usée .

Dans le bureau de Glasskube , vous trouverez des clés « k » de rechange partout, juste au cas où vous en auriez besoin.

Bien sûr, je plaisante.

Je ne suis pas sûr de ce qu'un clavier usé dit de son propriétaire. Mais je sais à quel point Kubectl est important pour quiconque souhaite devenir un administrateur Kubernetes compétent .

kubectl est un outil CLI permettant de communiquer avec l'API Kubernetes, qui peut paraître simple au premier abord mais peut vite devenir complexe.

Donc, dans cet article de blog, mon objectif est d'écrire le guide que j'aurais aimé avoir quand je débutais . Concentrez-vous d'abord sur la syntaxe des commandes et les commandes utiles, puis passez à l'écosystème dynamique de plugins et d'outils conçus pour étendre les capacités de kubectl et Kubernetes .

Nous partageons également quelques trucs et astuces, ainsi qu'un aide-mémoire kubectl utile.

commençons.

Clause de non-responsabilité

Ceci n'est pas un article sur Kubernetes. K8s est une technologie extrêmement vaste qui couvre de nombreux concepts, tels que différents types d'objets Kubernetes et leurs interactions. Pour cette discussion, je suppose que vous connaissez ces concepts. Au lieu de cela, je me concentrerai spécifiquement sur kubectl, son utilisation et les outils construits autour de lui.

avant le départ

Si vous soutenez des projets open source qui améliorent la gestion des packages Kubernetes pour tout le monde, pensez à soutenir Glasskube et à nous attribuer une étoile sur GitHub.

Installer

Pour installer kubectl, vous disposez de plusieurs options différentes en fonction de votre système d'exploitation. Voici comment l'installer sur certaines plates-formes courantes :

Linux (Ubuntu/Debian)

sudo apt-get update && sudo apt-get install -y kubectl

MacOS utilisant Homebrew

brew install kubectl

Windows utilisant Chocolatey

choco install kubernetes-cli

Après l'installation, vous pouvez vérifier que kubectl est correctement installé en exécutant la commande suivante :

kubectl version --client

Commande Kubectl :

kubectl est un outil d'interface de ligne de commande (CLI) utilisé pour communiquer avec l'API Kubernetes. Il existe de nombreuses commandes, trop nombreuses pour être mémorisées.

Mais ne vous inquiétez pas, ce n’est pas aussi effrayant que certains voudraient vous l’imaginer.

Nous explorerons les moyens d'accéder rapidement aux références de commandes, aux commandes spécifiques aux objets k8s, aux alias utiles et à l'achèvement des commandes. Mais d’abord, comment la chaîne de commande est-elle construite ?

grammaire

L'anglais et le chinois sont des langues sujet-verbe-objet (SVO).

L'hindi et le coréen sont des langues sujet-objet-verbe (SOV).

Si kubectl était un langage, ce serait un langage **kubectl + verbe + objet/[nom facultatif] + flag(kvof)**

Également similaire à la langue, la meilleure façon d’apprendre et d’assimiler la grammaire est de l’utiliser dans son contexte, plutôt que de mémoriser de longues listes de verbes et d’objets.

Si vous êtes bloqué et souhaitez référencer rapidement des objets Kubernetes existants à partir de n'importe quelle version de Kubernetes, exécutez kubectl api-resources.

Les commandes sont des [objets] de ressources construits en sélectionnant l'action [verbe] à appliquer au Kubernetes souhaité , généralement suivi du nom de la ressource. De plus, vous disposez d'un grand nombre de filtres [drapeaux] qui peuvent être appliqués au Kubernetes. commande. Ces filtres La portée et le résultat finaux seront déterminés.

Examinons un exemple de construction de commande qui utilise le verbe get commun pour récupérer toutes les ressources dans l'espace de noms du système glasskube, avec la sortie au format yaml :

kubectl get all --namespace glasskube-system -o yaml

Si vous rencontrez une ressource Kubernetes dont vous n'avez jamais entendu parler auparavant ou si vous avez besoin d'un rappel, utilisez kubectl expliquer [nom-ressource] pour obtenir une description du terminal et des instructions d'utilisation.

travail impératif

Lorsque vous travaillez dans un environnement Kubernetes, vous avez de nombreuses tâches à accomplir : déployer de nouvelles applications, dépanner les ressources défaillantes, vérifier leur utilisation, etc. Plus tard, nous explorerons comment l'utilisation d'une méthode de travail déclarative est meilleure pour définir et déployer des charges de travail, mais pour tout le reste, nous avons préparé des commandes Kubernetes impératives utiles.

La commande simple pour commencer est la suivante :

# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx

# Delete a pod named "nginx-deployment" in the default namespace
kubectl delete pod nginx-deployment

Pour faire passer les commandes impératives à l'étape suivante, sachez que vous pouvez utiliser l'éditeur TUI pour modifier les ressources :

En exécutant kubectl edit -n [namespace] [resource-name], un éditeur de texte similaire au suivant s'ouvrira. Modifiez et quittez comme vim run ESC + :q!.

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubectl.kubernetes.io/default-container: manager
  creationTimestamp: "2024-04-22T17:07:39Z"
  generateName: glasskube-controller-manager-556ff6fccf-
  labels:
    control-plane: controller-manager
    pod-template-hash: 556ff6fccf
  name: glasskube-controller-manager-556ff6fccf-4qlxz
  namespace: glasskube-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: glasskube-controller-manager-556ff6fccf
    uid: 430e90e9-32f3-45f6-92dc-4bae26ae1654
"/var/folders/2q/wjmbwg1n5vn8v7vlw17nsz0h0000gn/T/kubectl-edit-1306753911.yaml" 209L, 5898B

La plupart des commandes fonctionnent sur tous les types d'objets Kubernetes. Avant d'aborder d'autres commandes spécifiques utiles pour certaines ressources Kubernetes, il convient de comprendre quelques indicateurs utiles qui peuvent être appliqués à de nombreux objets différents.

Drapeaux utiles :

— env:

L'indicateur --env vous permet de spécifier des variables d'environnement pour le conteneur en cours de création.

kubectl run nginx-deployment --image=nginx --env="ENV_VARIABLE=value"

- modèle:

Cet indicateur vous permet de spécifier un modèle Go pour le format de sortie de la commande kubectl. C'est très pratique lorsque vous souhaitez personnaliser la structure de sortie, le filtrage ou la présentation.

kubectl get pods --template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'

— sélecteur de champ:

En utilisant cet indicateur, vous pouvez filtrer les ressources en fonction de champs spécifiques. Par exemple, vous pouvez filtrer les pods en fonction de leur statut ou de leur étiquette.

kubectl get pods --field-selector=status.phase=Running

— field-selector type=[Normal/Avertissement]:

Il s'agit d'une utilisation spécifique de l'indicateur de sélection de champ, où vous pouvez filtrer les événements en fonction de leur type (Normal ou Avertissement).

kubectl events -n [resource-namespace] — for=[resource-kind]/[resource-name]Cette commande obtient les événements liés à une ressource spécifique dans l'espace de noms spécifié. Il surveille en permanence les nouveaux événements liés à une ressource donnée.

kubectl events -n my-namespace --for=deployment/my-deployment

Indicateurs de surveillance de la vieille école ou de la nouvelle école :

-o large étant donné -w :

-o large : il s'agit d'un indicateur "à l'ancienne" qui fournit un format de sortie large, affichant des détails supplémentaires sur la ressource.

-w : Il s'agit d'un indicateur **"nouvelle école"** qui permet une surveillance continue des modifications des ressources, similaire à la commande watch.

Utiliser des modules

Les pods sont la plus petite abstraction de l'écosystème Kubernetes. Ce sont des unités logiques qui hébergent des conteneurs. Les pods consomment des ressources, peuvent exécuter et générer des journaux. Voici quelques commandes pour vous aider à gérer les pods.

# Show resource usage of a pod
kubectl top pod -n [namespace] [pod-name]

# Run a command inside a new pod in the cluster
kubectl run -it ubuntu --image ubuntu --rm -- bash

# Show resource labels as columns
# e.g. kubectl get pods -n [namespace] -L vault-active -L vault-sealed
kubectl get pods -n [namespace] -L vault-active -L vault-sealed

# Execute a command inside a pod
kubectl exec -it [pod-name] -n [namespace] --

# Port forward to a pod
kubectl port-forward [pod-name] [local-port]:[remote-port] -n [namespace]

# Show container logs
kubectl logs -n [namespace] [pod-name]
kubectl logs -n [namespace] /deployment/[deployment-name]  # Use -f flag for continuous streaming

# Run a command inside an existing container
kubectl exec -it -n [namespace] [pod-name] -- [command...]

Utiliser le nœud

Les nœuds sont des instances de base qui fournissent de la puissance de calcul et du stockage, et les clusters Kubernetes s'exécutent dessus.

# Show node resource utilization
kubectl top node [node-name]  # Node name is optional; without shows table of all nodes

# Get node information
kubectl get node

Utilisation de déploiements, de DaemonSets et de StatefulSets

Les déploiements, les ensembles de démons et les ensembles avec état sont des abstractions de niveau supérieur dans Kubernetes qui sont utilisées pour gérer le déploiement et la mise à l'échelle des charges de travail des applications.

# Restart a workload (e.g. deployment, stateful set, daemon set)
kubectl rollout restart -n [namespace] [workload-kind]/[workload-name]  # Triggers a re-creation of all pods for this workload, adhering to the workload configuration

# Check the status of a deployment rollout
kubectl rollout status deployment/[name]

# View rollout history of a deployment
kubectl rollout history deployment/[name]  # View rollout history of a deployment

# Scale a deployment to the specified number of replicas
kubectl scale deployment/ --replicas=[number]  # Scale a deployment to the specified number of replicas

# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager  

#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag

# Delete DaemonSet
kubectl delete daemonset [daemonset-name]

Utiliser le travail

Un travail gère l'exécution d'un pod pour effectuer une tâche spécifique et garantit la réussite de la tâche avant de s'arrêter.

# Run a CronJob manually
kubectl create job [job-name] --image=image/name

# Creates a new job from the job template specified in the cronjob
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]

Utiliser le secret

Les secrets sont utilisés pour stocker en toute sécurité des informations sensibles telles que les mots de passe, les jetons OAuth et les clés SSH dans Kubernetes.

# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa

# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'

# Get a value from a secret using jsonpath
kubectl get secrets [secret-name] -o jsonpath="{.data.key1}" | base64 --decode

JSONPath est un langage de requête utilisé pour extraire des données spécifiques des documents JSON. Dans Kubernetes, les expressions JSONPath sont souvent -o jsonpathutilisées avec des indicateurs dans les commandes kubectl pour extraire des informations spécifiques de la sortie de ces commandes.

Achèvement de la coque

Vous avez peut-être remarqué que les commandes kubectl peuvent devenir très longues très rapidement. Un astucieux script de complétion de shell peut être ajouté à votre fichier bash ou zshell pour permettre une complétion facile des balises. Fini le bachotage. Pour y parvenir dans toutes les sessions shell, ajoutez ce qui suit à votre fichier ~/.zshrc :

source <(kubectl completion zsh)

et redémarrez le shell. Si vous utilisez bash, suivez les instructions ici :

# Install bash-completion package
sudo apt-get install -y bash-completion
# Store the output of the completion command in .bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
# Activate the completion rules
source ~/.bashrc

travailler de manière déclarative

La gestion déclarative des ressources Kubernetes implique l'utilisation de fichiers manifestes YAML pour spécifier l'état souhaité des ressources et l'application de ces manifestes au cluster.

Créer un fichier YAML

Que les objets Kubernetes soient écrits par vous ou par quelqu'un d'autre, tous les objets sont définis dans des fichiers YAML. L'API Kubernetes utilise les définitions de fichiers YAML pour comprendre l'état du cluster :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: glasskube-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: glasskube
      env: prod
  template:
    metadata:
      labels:
        app: glasskube
        env: prod
    spec:
      containers:
      - name: glasskube-container
        image: your-glasskube-image:latest

Pour créer ce déploiement à partir de zéro, utilisez la commande kubectl create :

kubectl create -f glasskube-deployment.yaml

Fichier YAML d'application (application cliente)

L'utilisation de fichiers YAML est le moyen standard de gérer les ressources Kubernetes. Vous pouvez définir l'état souhaité de vos ressources au format YAML et appliquer ces fichiers YAML au cluster.

kubectl apply -f manifest.yaml

Application côté serveur (SSA)

L'application côté serveur est une méthode plus récente permettant d'appliquer des modifications de configuration aux ressources Kubernetes. Avec SSA, les modifications sont appliquées directement côté serveur, ce qui signifie que le serveur API Kubernetes est chargé de garantir que l'état souhaité est atteint.

kubectl apply --server-side -f manifest.yaml

Plugins et outils

Chaque fois que je vois des discussions sur Kubernetes, de quoi s'agit-il exactement ? À quels cas d'utilisation est-il le mieux adapté et comment y penser au mieux, le même tweet de Kelsey Hightower me vient à l'esprit.

Ce point de vue est largement reconnu, comme en témoigne le vaste écosystème de plugins et d'outils Kubernetes conçus pour aider à gérer les différentes étapes du cycle de vie de Kubernetes.

Gestionnaire de plugins Krew Kubernetes

Un gestionnaire de plugins puissant pour trouver de nouveaux plugins est krew , comment l'installer est la suivante. La commande pour installer le plug-in kubectl via Krew :

kubectl krew install <PLUGIN_NAME>

Explorons quelques-unes des principales catégories de débogage et d'outils, en mettant en évidence certains des éléments les plus utiles. Puisqu'il y a tant de choses à noter, j'ajouterai une section spécialisée pour chaque section.

Changement de contenu et d'espace de noms

Dans un environnement Kubernetes, vous opérez toujours dans deux contextes hiérarchiques, clusters et espaces de noms. Garantir une exécution précise des commandes nécessite de spécifier le contexte approprié pour obtenir le résultat souhaité. Changer de contexte de cluster ou d'espace de noms peut impliquer de longues commandes difficiles à retenir, c'est là qu'interviennent des outils comme Kubectl et Kubens.

Kubectx et Kubens

Affichez facilement les clusters et les espaces de noms disponibles et basculez entre eux ici.

Voir les instructions d'installation ici .

Louable:

kubectl-cf : Un moyen plus rapide de basculer entre les fichiers kubeconfig (au lieu des contextes).

visibilité

Les clusters Kubernetes sont des systèmes complexes comportant de nombreuses pièces mobiles qui dépendent les unes des autres pour faire fonctionner votre application. Il est crucial de toujours avoir une compréhension claire de ce qui se passe.

k9

K9s est un tableau de bord Kubernetes interactif pratique et léger qui s'exécute dans le terminal. En plus de visualiser vos ressources k8s, vous pouvez facilement plonger dans les pods, modifier les manifestes et gérer vos charges de travail en un seul endroit. C'est probablement l'un de mes outils de gestion Kubernetes préférés.

Les instructions d'installation sont ici .

arbre Kubectl

Un plugin kubectl pour explorer les relations de propriété entre les objets Kubernetes via des références propriétaires sur les objets.

Installer :

kubectl krew install tree
kubectl tree --help

couleur kube

KubeColor est utilisé pour ajouter de la couleur à la sortie kubectl.

Les instructions d'installation sont ici .

Gestion des colis

La gestion des packages de cluster à l'aide d'outils de gestion de packages classiques peut être frustrante et la mise à jour des packages peut être fastidieuse. La configuration est maladroite et jusqu'à présent, la pile de packages requise pour l'appliquer de manière déclarative était hors de contrôle.

Cube de verre :

Avec Glasskube, tous les problèmes rencontrés dans les gestionnaires de packages traditionnels tels que helm sont éliminés, vous garantissant ainsi le temps de gérer vos charges de travail et de ne pas vous soucier de la gestion de votre pile de packages k8s.

réseau

Kubectl-Cils :

kubectl-Cilium est un plug-in qui interagit avec Cilium, une solution cloud native basée sur eBPF pour le provisionnement, la sécurisation et l'observation des connexions réseau entre les charges de travail.

Installer:

kubectl krew install cilium

Gestionnaire de certificats

Cert-manager ajoute des certificats et des émetteurs de certificats en tant que types de ressources dans les clusters Kubernetes, simplifiant ainsi l'obtention, la mise à jour et l'utilisation de ces certificats.

Les instructions d'installation peuvent être trouvées ici.

Mention spéciale :

Ksniff : Il s'agit d'un plugin kubectl qui exploite tcpdump et Wireshark pour lancer la capture à distance sur n'importe quel pod d'un cluster Kubernetes.

RBAC

La Cubeologie

Kubelogin est un plug-in certifié Kubernetes OpenID Connect (OIDC), également connu sous le nom de kubectl oidc-login.

Les instructions d'installation sont ici .

Conseiller en politique Kube

Kube-policy-advisor facilite la création de politiques de sécurité des pods K8 (PSP) ou de politiques OPA à partir d'un environnement K8s actif ou d'un seul fichier .yaml contenant les spécifications du pod (déploiements, ensembles de démons, pods, etc.).

Installer:

kubectl krew install advise-policy

Louable:

  • kubectl-who-can : montre que SUBJECTS dispose des autorisations RBAC sur VERB [TYPE | NONRESOURCEURL] dans Kubernetes.
  • rakkess : évaluer l'accès - plugin kubectl pour afficher la matrice d'accès aux ressources du serveur
  • kubectl-rolesum : résume les rôles RBAC pour un sujet spécifié (ServiceAccount, utilisateur et groupe).

Pelucheux

Kubectl-neat :

Kubectl-neat : Kubectl-neat supprime l'encombrement des manifestes Kubernetes et les rend plus lisibles. Il recherche et ignore principalement deux catégories de contenu : les valeurs par défaut insérées par le modèle objet Kubernetes et les contrôleurs de mutation courants.

Installer:

kubectl krew install neat

KubeLinter:

KubeLinter analyse les fichiers Kubernetes YAML et les graphiques Helm et les compare à diverses bonnes pratiques, en se concentrant sur la préparation et la sécurité de la production.

Instructions d'installation : https://github.com/stackrox/kube-linter?tab=readme-ov-file#installing-kubelinter.

Maintenance et sécurité du cluster

KubePug

KubePug télécharge le fichier de données généré data.json contenant les informations de dépréciation de l'API pour une version spécifique de Kubernetes, analyse le cluster Kubernetes en cours d'exécution pour déterminer si des objets sont affectés par la dépréciation et affiche les objets concernés à l'utilisateur.

Exemple:

Vous pouvez utiliser la commande suivante pour afficher l'état d'un cluster en cours d'exécution.

$ kubepug --k8s-version=v1.22 # Will verify the current context against v1.22 version
[...]
RESULTS:
Deprecated APIs:
PodSecurityPolicy found in policy/v1beta1
     ├─ Deprecated at: 1.21
     ├─ PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.Deprecated in 1.21.
        -> OBJECT: restrictive namespace: default


Deleted APIs:
     APIs REMOVED FROM THE CURRENT VERSION AND SHOULD BE MIGRATED IMMEDIATELY!!
Ingress found in extensions/v1beta1
     ├─ Deleted at: 1.22
     ├─ Replacement: networking.k8s.io/v1/Ingress
     ├─ Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give servicesexternally-reachable urls, load balance traffic, terminate SSL, offer namebased virtual hosting etc.DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information.
        -> OBJECT: bla namespace: blabla

Installer:

kubectl krew install deprecations

Paysage cubique :

Kubescape est une plate-forme de sécurité Kubernetes open source pour vos clusters, pipelines CI/CD et IDE qui sépare les signaux de sécurité du bruit du scanner.

Instructions d'installation ici .

Ça vaut le coup d'en parler :

kubectl-watch : Un autre outil d'observation pour visualiser visuellement les modifications incrémentielles apportées aux ressources Kubernetes.

dépannage

Inspecteur Gadget:

Inspektor-gadget est un ensemble d'outils (ou gadgets) permettant de déboguer et d'inspecter les ressources et les applications Kubernetes.

Les outils de l'Inspektor Gadget sont appelés gadgets. Vous pouvez déployer un, deux ou plusieurs gadgets.

K8s-gpt :

k8sgpt est un outil permettant d'analyser votre cluster Kubernetes, de diagnostiquer et de trier les problèmes en anglais simple.

Instructions d'installation ici .

Ça vaut le coup d'en parler :

kubectl node-shell : Lancez un shell racine directement dans le système d'exploitation hôte d'un nœud en cours d'exécution.

enregistrement

Arrière:

Stern vous permet de suivre plusieurs pods sur Kubernetes et plusieurs conteneurs au sein d'un pod. Chaque résultat est codé par couleur pour un débogage plus rapide.

Installer:

kubectl krew install stern

Certaines implications en matière de sécurité de l'utilisation des plugins Kubectl incluent des vulnérabilités possibles, une élévation de privilèges et une divulgation accidentelle de données. Assurez-vous de n’utiliser que des plugins activement maintenus et de préférence entourés d’une communauté active.

Alias

Il y a tellement de commandes kubectl à retenir, simplifiez-vous la vie en utilisant des raccourcis clavier ou des alias.

Vous trouverez ici un référentiel contenant un script permettant de générer des centaines d'alias shell pratiques pour kubectl. Le problème est que de nombreux alias sont très longs et peuvent être difficiles à retenir. Mais ne vous inquiétez pas, j'ai trouvé ce billet de blog très utile de Benoit Couetil sur la façon de gérer les nombreux alias générés par le script ci-dessus.

Aide-mémoire Kubectl

Aucun guide n’est complet sans un aide-mémoire, n’est-ce pas ?

# Basic Commands
# List API Resources
kubectl api-resources

# List Resources
kubectl get [name]

# Explain Resources
kubectl explain

# Working with Pods
# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx

# Show Resource Usage of a Pod
kubectl top pod -n [namespace] [pod-name]

# Run Command in Pod
kubectl run -it [pod-name] --image [image-name] --rm -- [command]

# Show Resource Labels
kubectl get pods -n [namespace] -L [label1] -L [label2]

# Execute Command in Pod
kubectl exec -it [pod-name] -- [command]

# Port Forwarding
kubectl port-forward [pod-name] [local-port]:[remote-port]

# Filtering Pods by Node Name
kubectl get pods --field-selector spec.nodeName=[node-name]

# Filtering Pods by Phase
kubectl get pods --field-selector status.phase=Running

# Delete a pod named "my-pod" in the default namespace
kubectl delete pod my-pod

# Working with Nodes
# Watch Nodes (Old School)
watch kubectl get nodes -o wide
# Watch Nodes (New School)
kubectl get nodes -w

# Node Resource Utilization
kubectl top node [node-name]

# Get Node Resource
kubectl describe node [node-name]

# Working with Deployments, Daemonsets, and StatefulSets
# Restart Workload
kubectl rollout restart -n [namespace] [kind]/[name]

# Rollout Status
kubectl rollout status [kind]/[name]

# Rollout History
kubectl rollout history [kind]/[name]

# Scale Deployment
kubectl scale deployment/[name] --replicas=[replica-count]

#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag

# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager  

# Delete DaemonSet
kubectl delete daemonset [daemonset-name]

# Working with Jobs
# Run CronJob Manually
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]

# Working with Secrets
# Get Value from Secret
kubectl get secret -n [namespace] [secret-name] -o=jsonpath='{.data.[key]}' | base64 --decode

# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa

# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'

# Working with Containers
# Show Container Logs
kubectl logs -n [namespace] [pod-name] 
kubectl logs -n [namespace] deployment/[deployment-name]

# Run Command in Container
kubectl exec -it -n [namespace] [pod-name] -- [command]

# Working Imperatively
# Modify Resource
kubectl edit -n [namespace] [resource-kind]/[resource-name]

# Delete Resource
kubectl delete [resource-kind]/[resource-name]

# Create Resource
kubectl create -f [resource-file]

# Working Declaratively
# Use Server-Side Apply (SSA)
kubectl apply --server-side -f [resource-file]

# Events and Logs
# Show Events for Resource
kubectl get events -n [namespace] --field-selector involvedObject.kind=[kind] --field-selector involvedObject.name=[name]

# Filtering Events by Type
kubectl get events --field-selector type=Warning

# Filtering Events by Involved Object Name
kubectl get events --field-selector involvedObject.name=[resource-name]

# Show Resource Usage
kubectl top

Autres ressources

Si vous aimez ce type de contenu et souhaitez en voir davantage, pensez à nous soutenir en nous attribuant une étoile sur GitHub .

Cet article a été publié pour la première fois sur Yunyunzhongsheng ( https://yylives.cc/ ), tout le monde est invité à le visiter.

Un programmeur né dans les années 1990 a développé un logiciel de portage vidéo et en a réalisé plus de 7 millions en moins d'un an. La fin a été très éprouvante ! Des lycéens créent leur propre langage de programmation open source en guise de cérémonie de passage à l'âge adulte - commentaires acerbes des internautes : s'appuyant sur RustDesk en raison d'une fraude généralisée, le service domestique Taobao (taobao.com) a suspendu ses services domestiques et repris le travail d'optimisation de la version Web Java 17 est la version Java LTS la plus utilisée Part de marché de Windows 10 Atteignant 70 %, Windows 11 continue de décliner Open Source Daily | Google soutient Hongmeng pour prendre le relais des téléphones Android open source pris en charge par Docker ; Electric ferme la plate-forme ouverte Apple lance la puce M4 Google supprime le noyau universel Android (ACK) Prise en charge de l'architecture RISC-V Yunfeng a démissionné d'Alibaba et prévoit de produire des jeux indépendants pour les plates-formes Windows à l'avenir
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/6919515/blog/11093686
conseillé
Classement