====== Kubernetes ====== * [[http://kubernetes.io/|Site Officiel]] * [[https://docs.kubernetic.com/|Autre doc]] * [[https://kubernetes.io/docs/user-guide/kubectl-cheatsheet/|Cheatsheet]] * [[systeme:docker|Docker]] * [[https://docs.helm.sh/using_helm/#installing-helm|Helm]] * [[https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands|Toutes les commandes et options]] * https://labs.play-with-docker.com * https://labs.play-with-k8s.com ===== Autres ===== * [[http://kubernetes.io/docs/user-guide/ingress/|Ingress]] * [[http://kubernetes.io/docs/admin/daemons/|Daemons]] * [[http://kubernetes.io/docs/user-guide/images/|Images]] * [[http://kubernetes.io/docs/user-guide/jobs/|Jobs]] * [[http://kubernetes.io/docs/user-guide/scheduled-jobs/|Scheduled Jobs]] * [[http://kubernetes.io/docs/user-guide/labels/|Labels]] * [[http://kubernetes.io/docs/user-guide/namespaces/|Namespaces]] * [[http://kubernetes.io/docs/user-guide/networkpolicies/|Network Policies]] * [[http://kubernetes.io/docs/admin/node/|Node]] * [[http://kubernetes.io/docs/user-guide/persistent-volumes/|Persistent Volumes]] * [[http://kubernetes.io/docs/user-guide/volumes/|Volumes]] * [[http://kubernetes.io/docs/user-guide/ui/|Dashboard]] * [[http://kubernetes.io/docs/tasks/configure-pod-container/define-environment-variable-container/|Environnement dans un conteneur]] * [[http://kubernetes.io/docs/tasks/configure-pod-container/define-command-argument-container/|Commande dans un conteneur]] * [[http://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-ram-container/|Limiter les ressources pour un conteneur]] * [[http://kubernetes.io/docs/admin/resourcequota/|Quota sur les ressources 1]] + [[http://kubernetes.io/docs/admin/resourcequota/walkthrough/|Quota sur les ressources 2]] * [[http://kubernetes.io/docs/tasks/administer-cluster/assign-pods-nodes/|Assigner un pod à des nœuds]] * [[http://kubernetes.io/docs/user-guide/liveness/|POD health]] * [[http://kubernetes.io/docs/user-guide/monitoring/|Monitoring]] * [[http://kubernetes.io/docs/admin/cluster-components/|Composants Kubernetes]] * [[http://kubernetes.io/docs/admin/dns/|DNS]] + [[https://coreos.com/kubernetes/docs/latest/deploy-addons.html|kube-dns]] ===== Affichage ===== Repérer le champ à afficher en yaml, puis isoler le pour l'afficher : $ kubectl get pod wordpress-2713623249-d46ky -o yaml $ kubectl get -o template pod wordpress-2713623249-d46ky --template={{.status.podIP}} ===== Commandes ===== ==== kubectl ==== * [[http://kubernetes.io/docs/user-guide/kubectl/|Gère le cluster Kubernetes]] ==== kubectl annotate ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_annotate/|Met une annotation sur une ressource]] : # Update pod 'foo' with the annotation 'description' and the value 'my frontend'. # If the same annotation is set multiple times, only the last value will be applied $ kubectl annotate pods foo description='my frontend' # Update a pod identified by type and name in "pod.json" $ kubectl annotate -f pod.json description='my frontend' # Update pod 'foo' with the annotation 'description' and the value 'my frontend running nginx', overwriting any existing value. $ kubectl annotate --overwrite pods foo description='my frontend running nginx' # Update all pods in the namespace $ kubectl annotate pods --all description='my frontend running nginx' # Update pod 'foo' only if the resource is unchanged from version 1. $ kubectl annotate pods foo description='my frontend running nginx' --resource-version=1 # Update pod 'foo' by removing an annotation named 'description' if it exists. # Does not require the --overwrite flag. $ kubectl annotate pods foo description- * http://kubernetes.io/docs/user-guide/annotations/ ==== kubectl api-versions ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_api-versions/|Affiche les différentes API]] : $ kubectl api-versions autoscaling/v1 batch/v1 extensions/v1beta1 v1 ==== kubectl apply ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_apply/|Applique les changements sur les pods]] : $ kubectl apply -f ./myapp.yaml On peut prendre en compte également tous les fichiers d'un répertoire de façon récursive : $ kubectl apply -R -f ./directory ==== kubectl attach ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_attach/|S'attacher à un conteneur qui est démarré]] : # Get output from running pod 123456-7890, using the first container by default $ kubectl attach 123456-7890 # Get output from ruby-container from pod 123456-7890 $ kubectl attach 123456-7890 -c ruby-container # Switch to raw terminal mode, sends stdin to 'bash' in ruby-container from pod 123456-7890 # and sends stdout/stderr from 'bash' back to the client $ kubectl attach 123456-7890 -c ruby-container -i -t ==== kubectl autoscale ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_autoscale/|Auto-scale un Deployment, ReplicaSet, ou ReplicationController]] : # Auto scale a deployment "foo", with the number of pods between 2 and 10, target CPU utilization specified so a default autoscaling policy will be used: $ kubectl autoscale deployment foo --min=2 --max=10 # Auto scale a replication controller "foo", with the number of pods between 1 and 5, target CPU utilization at 80%: $ kubectl autoscale rc foo --max=5 --cpu-percent=80 * http://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/ ==== kubectl cluster-info ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_cluster-info/|Affiche les informations du cluster]] : $ kubectl cluster-info ==== kubectl config ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config/|Permet de modifier des fichiers kubeconfig]]. === kubectl config current-context === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_current-context/|Affiche le contexte courant]]. === kubectl config set-cluster === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_set-cluster/|Définit une entrée cluster dans kubeconfig]]. === kubectl config set-context === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_set-context/|Définit un contexte dans kubeconfig]]. === kubectl config set-credentials === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_set-credentials/|Définit un utilisateur dans kubeconfig]]. === kubectl config set === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_set/|Définit une valeur dans kubeconfig]]. === kubectl config unset === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_unset/|Supprime une valeur dans kubeconfig]]. === kubectl config use-context === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_use-context/|Définit le contexte à utiliser dans kubeconfig]]. === kubectl config view === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_config_use-context/|Affiche la configuration de kubeconfig]]. ==== kubectl convert ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_convert/|Convertit des fichiers entre différentes versions d'API]] : # Convert 'pod.yaml' to latest version and print to stdout. $ kubectl convert -f pod.yaml # Convert the live state of the resource specified by 'pod.yaml' to the latest version # and print to stdout in json format. $ kubectl convert -f pod.yaml --local -o json # Convert all files under current directory to latest version and create them all. $ kubectl convert -f . | kubectl create -f - ==== kubectl cordon ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_cordon/|Empêche de nouveaux POD d'être lancé sur le noeud en question mais ne détruit pas les pods courant]] : $ kubectl cordon NODE ==== kubectl create ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_create/|Crée un nouvelle ressource]] : # Create a pod using the data in pod.json. $ kubectl create -f ./pod.json # Recursive mode $ kubectl create -R -f ./mydirectory # Create a pod based on the JSON passed into stdin. $ cat pod.json | kubectl create -f - * http://kubernetes.io/docs/user-guide/deployments/ === kubectl create configmap === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_create_configmap/|Crée une entrée configmap]] : # Create a new configmap named my-config with keys for each file in folder bar $ kubectl create configmap my-config --from-file=path/to/bar # Create a new configmap named my-config with specified keys instead of names on disk $ kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt # Create a new configmap named my-config with key1=config1 and key2=config2 $ kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2 Modifier une config map : $ kubectl create configmap nginx-lb-config --from-file=nginx-lb.configmap --dry-run -o yaml | kubectl replace configmap nginx-lb-config -f - Exemple de configmap : apiVersion: v1 kind: ConfigMap metadata: Name: example-configmap data: # property-like keys game-properties-file-name: game.properties ui-properties-file-name: ui.properties # file-like keys game.properties: | enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30 ui.properties: | color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice Exemple de création qui utilisera le configmap définit au-dessus : apiVersion: extensions/v1beta1 kind: Deployment metadata: name: configmap-example-deployment labels: name: configmap-example-deployment spec: replicas: 1 selector: matchLabels: name: configmap-example template: metadata: labels: name: configmap-example spec: containers: - name: game-container image: imaginarygame command: [ "game-server", "--config-dir=/etc/game/cfg" ] env: # consume the property-like keys in environment variables - name: GAME_PROPERTIES_NAME valueFrom: configMapKeyRef: name: example-configmap key: game-properties-file-name - name: UI_PROPERTIES_NAME valueFrom: configMapKeyRef: name: example-configmap key: ui-properties-file-name volumeMounts: - name: config-volume mountPath: /etc/game volumes: # consume the file-like keys of the configmap via volume plugin - name: config-volume configMap: name: example-configmap items: - key: ui.properties path: cfg/ui.properties - key: game.properties path: cfg/game.properties restartPolicy: Never === kubectl create namespace === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_create_namespace/|Crée un namespace avec un nom spécifique]] : $ kubectl create namespace my-namespace === kubectl create serviceaccount === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_create_serviceaccount/|Crée un serviceaccount]] : $ kubectl create serviceaccount my-service-account * http://kubernetes.io/docs/user-guide/service-accounts/ * http://kubernetes.io/docs/admin/service-accounts-admin/ === kubectl create secret === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_create_secret/|Crée un secret]]. * http://kubernetes.io/docs/user-guide/secrets/ == kubectl create secret docker-registry == [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_create_secret_docker-registry/|Crée un secret pour un registry docker]] : $ kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL == kubectl create secret generic == [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_create_secret_generic/|Crée un secret à partir d'un dossier, fichier ou valeur]] : # Create a new secret named my-secret with keys for each file in folder bar $ kubectl create secret generic my-secret --from-file=path/to/bar # Create a new secret named my-secret with specified keys instead of names on disk $ kubectl create secret generic my-secret --from-file=ssh-privatekey=~/.ssh/id_rsa --from-file=ssh-publickey=~/.ssh/id_rsa.pub # Create a new secret named my-secret with key1=supersecret and key2=topsecret $ kubectl create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret ==== kubectl delete ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_delete/|Supprime une ressource]] : # Delete a pod using the type and name specified in pod.json. $ kubectl delete -f ./pod.json # Delete a pod based on the type and name in the JSON passed into stdin. $ cat pod.json | kubectl delete -f - # Delete pods and services with same names "baz" and "foo" $ kubectl delete pod,service baz foo # Delete pods and services with label name=myLabel. $ kubectl delete pods,services -l name=myLabel # Delete a pod immediately (no graceful shutdown) $ kubectl delete pod foo --now # Delete a pod with UID 1234-56-7890-234234-456456. $ kubectl delete pod 1234-56-7890-234234-456456 # Delete all pods $ kubectl delete pods --all ==== kubectl describe ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_decribe/|Décrit une ressource]] : # Describe a node $ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal # Describe a pod $ kubectl describe pods/nginx # Describe a pod identified by type and name in "pod.json" $ kubectl describe -f pod.json # Describe all pods $ kubectl describe pods # Describe pods by label name=myLabel $ kubectl describe po -l name=myLabel # Describe all pods managed by the 'frontend' replication controller (rc-created pods # get the name of the rc as a prefix in the pod the name). $ kubectl describe pods frontend ==== kubectl drain ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_drain/|Bloque la création de nouveau pod puis supprime les pods du noeud]] : # Drain node "foo", even if there are pods not managed by a ReplicationController, ReplicaSet, Job, or DaemonSet on it. $ kubectl drain foo --force # As above, but abort if there are pods not managed by a ReplicationController, ReplicaSet, Job, or DaemonSet, and use a grace period of 15 minutes. $ kubectl drain foo --grace-period=900 ==== kubectl edit ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_edit/|Edite la configuration d'une ressource]] : $ kubectl edit node k-node1 $ kubectl edit deployment nginx -o json $ kubectl edit pod nginx-deployment-2644738339-826ks $ kubectl edit svc/docker-registry --output-version=v1 -o json ==== kubectl exec ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_exec/|Execute une commande dans un conteneur]] : $ kubectl exec nginx-2644738339-826ks -it -- bash $ kubectl exec 123456-7890 -c ruby-container -i -t -- bash -il ==== kubectl explain ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_explain/|Documente une ressource]] : # Get the documentation of the resource and its fields $ kubectl explain pods # Get the documentation of a specific field of a resource $ kubectl explain pods.spec.containers ==== kubectl expose ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_expose/|Déclare une ressource comme un nouveau service]] : # Create a service for a replicated nginx, which serves on port 80 and connects to the containers on port 8000. $ kubectl expose rc nginx --port=80 --target-port=8000 # Create a service for a replication controller identified by type and name specified in "nginx-controller.yaml", which serves on port 80 and connects to the containers on port 8000. $ kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000 # Create a service for a pod valid-pod, which serves on port 444 with the name "frontend" $ kubectl expose pod valid-pod --port=444 --name=frontend # Create a second service based on the above service, exposing the container port 8443 as port 443 with the name "nginx-https" $ kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https # Create a service for a replicated streaming application on port 4100 balancing UDP traffic and named 'video-stream'. $ kubectl expose rc streamer --port=4100 --protocol=udp --name=video-stream # Create a service for a replicated nginx using replica set, which serves on port 80 and connects to the containers on port 8000. $ kubectl expose rs nginx --port=80 --target-port=8000 # Create a service for an nginx deployment, which serves on port 80 and connects to the containers on port 8000. $ kubectl expose deployment nginx --port=80 --target-port=8000 $ kubectl expose deployment my-nginx --port=80 --type=LoadBalancer ==== kubectl get ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_get/|Affiche une ressource]] : # List all pods in ps output format. $ kubectl get pods # List all pods in ps output format with more information (such as node name). $ kubectl get pods -o yaml # List a single replication controller with specified NAME in ps output format. $ kubectl get replicationcontroller web # List a single pod in JSON output format. $ kubectl get -o json pod web-pod-13je7 # List a pod identified by type and name specified in "pod.yaml" in JSON output format. $ kubectl get -f pod.yaml -o json # Return only the phase value of the specified pod. $ kubectl get -o template pod/web-pod-13je7 --template= # List all replication controllers and services together in ps output format. $ kubectl get rc,services # List one or more resources by their type and names. $ kubectl get rc/web service/frontend pods/web-pod-13je7 ==== kubectl label ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_label/|Gestion des labels sur les ressources]] : # Update pod 'foo' with the label 'unhealthy' and the value 'true'. $ kubectl label pods foo unhealthy=true # Update pod 'foo' with the label 'status' and the value 'unhealthy', overwriting any existing value. $ kubectl label --overwrite pods foo status=unhealthy # Update all pods in the namespace $ kubectl label pods --all status=unhealthy # Update a pod identified by the type and name in "pod.json" $ kubectl label -f pod.json status=unhealthy # Update pod 'foo' only if the resource is unchanged from version 1. $ kubectl label pods foo status=unhealthy --resource-version=1 # Update pod 'foo' by removing a label named 'bar' if it exists. # Does not require the --overwrite flag. $ kubectl label pods foo bar- ==== kubectl logs ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_logs/|Affiche les logs d'un conteneur dans un pod]] : # Return snapshot logs from pod nginx with only one container $ kubectl logs nginx # Return snapshot of previous terminated ruby container logs from pod web-1 $ kubectl logs -p -c ruby web-1 # Begin streaming the logs of the ruby container in pod web-1 $ kubectl logs -f -c ruby web-1 # Display only the most recent 20 lines of output in pod nginx $ kubectl logs --tail=20 nginx # Show all logs from pod nginx written in the last hour $ kubectl logs --since=1h nginx ==== kubectl patch ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_patch/|Met un jour le champ d'une ressource]] : # Partially update a node using strategic merge patch $ kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}' # Partially update a node identified by the type and name specified in "node.json" using strategic merge patch $ kubectl patch -f node.json -p '{"spec":{"unschedulable":true}}' # Update a container's image; spec.containers[*].name is required because it's a merge key $ kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}' # Update a container's image using a json patch with positional arrays $ kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}] ==== kubectl port-forward ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_port-forward/|Forward un port local vers un POD]] : # Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in the pod $ kubectl port-forward mypod 5000 6000 # Listen on port 8888 locally, forwarding to 5000 in the pod $ kubectl port-forward mypod 8888:5000 # Listen on a random port locally, forwarding to 5000 in the pod $ kubectl port-forward mypod :5000 # Listen on a random port locally, forwarding to 5000 in the pod $ kubectl port-forward mypod 0:5000 ==== kubectl proxy ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_proxy/|Met un proxy pour l'API kubernetes]] : # Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in the pod $ kubectl port-forward mypod 5000 6000 # Listen on port 8888 locally, forwarding to 5000 in the pod $ kubectl port-forward mypod 8888:5000 # Listen on a random port locally, forwarding to 5000 in the pod $ kubectl port-forward mypod :5000 # Listen on a random port locally, forwarding to 5000 in the pod $ kubectl port-forward mypod 0:5000 ==== kubectl replace ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_replace/|Remplace une ressource par une autre]] : # Replace a pod using the data in pod.json. $ kubectl replace -f ./pod.json # Replace a pod based on the JSON passed into stdin. $ cat pod.json | kubectl replace -f - # Update a single-container pod's image version (tag) to v4 $ kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f - # Force replace, delete and then re-create the resource $ kubectl replace --force -f ./pod.json ==== kubectl rolling-update ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_rolling-update/|Remplace un replication controller par un autre]] : # Update pods of frontend-v1 using new replication controller data in frontend-v2.json. $ kubectl rolling-update frontend-v1 -f frontend-v2.json # Update pods of frontend-v1 using JSON data passed into stdin. $ cat frontend-v2.json | kubectl rolling-update frontend-v1 -f - # Update the pods of frontend-v1 to frontend-v2 by just changing the image, and switching the # name of the replication controller. $ kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2 # Update the pods of frontend by just changing the image, and keeping the old name. $ kubectl rolling-update frontend --image=image:v2 # Abort and reverse an existing rollout in progress (from frontend-v1 to frontend-v2). $ kubectl rolling-update frontend-v1 frontend-v2 --rollback ==== kubectl rollout ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_rollout/|Gére la pause, reprise ou retour arrière d'un déploiement]]. === kubectl rollout history === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_rollout_history/|Affiche l'historique des déploiements]] : # View the rollout history of a deployment $ kubectl rollout history deployment/abc # View the details of deployment revision 3 $ kubectl rollout history deployment/abc --revision=3 === kubectl rollout pause === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_rollout_pause/|Met le déploiement d'une ressource en pause]] : # Mark the nginx deployment as paused. Any current state of # the deployment will continue its function, new updates to the deployment will not # have an effect as long as the deployment is paused. $ kubectl rollout pause deployment/nginx === kubectl rollout resume === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_rollout_resume/|Continue le déploiement d'une ressource qui était en pause]] : # Resume an already paused deployment $ kubectl rollout resume deployment/nginx === kubectl rollout undo === [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_rollout_undo/|Effectue un retour arrière sur un déploiement précédent]] : # Rollback to the previous deployment $ kubectl rollout undo deployment/abc # Rollback to deployment revision 3 $ kubectl rollout undo deployment/abc --to-revision=3 ==== kubectl run ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_run/|Démarre un conteneur à partir d'une image]] : # Start a single instance of nginx. kubectl run nginx --image=nginx # Start a single instance of hazelcast and let the container expose port 5701 . kubectl run hazelcast --image=hazelcast --port=5701 # Start a single instance of hazelcast and set environment variables "DNS_DOMAIN=cluster" and "POD_NAMESPACE=default" in the container. kubectl run hazelcast --image=hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default" # Start a replicated instance of nginx. kubectl run nginx --image=nginx --replicas=5 # Dry run. Print the corresponding API objects without creating them. kubectl run nginx --image=nginx --dry-run # Start a single instance of nginx, but overload the spec of the deployment with a partial set of values parsed from JSON. kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }' # Start a pod of busybox and keep it in the foreground, don't restart it if it exits. kubectl run -i -t busybox --image=busybox --restart=Never # Start the nginx container using the default command, but use custom arguments (arg1 .. argN) for that command. kubectl run nginx --image=nginx -- ... # Start the nginx container using a different command and custom arguments. kubectl run nginx --image=nginx --command -- ... # Start the perl container to compute π to 2000 places and print it out. kubectl run pi --image=perl --restart=OnFailure -- perl -Mbignum=bpi -wle 'print bpi(2000)' # Start the scheduled job to compute π to 2000 places and print it out every 5 minutes. kubectl run pi --schedule="0/5 * * * ?" --image=perl --restart=OnFailure -- perl -Mbignum=bpi -wle 'print bpi(2000)' ==== kubectl scale ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_scale/|Augmente ou réduite le nombre de conteneur pour un Deployment, ReplicaSet, Replication Controller, ou un Job]] : # Scale a replicaset named 'foo' to 3. kubectl scale --replicas=3 rs/foo # Scale a resource identified by type and name specified in "foo.yaml" to 3. kubectl scale --replicas=3 -f foo.yaml # If the deployment named mysql's current size is 2, scale mysql to 3. kubectl scale --current-replicas=2 --replicas=3 deployment/mysql # Scale multiple replication controllers. kubectl scale --replicas=5 rc/foo rc/bar rc/baz # Scale job named 'cron' to 3. kubectl scale --replicas=3 job/cron ==== kubectl uncordon ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_uncordon/|Rend le nœud à nouveau éligible pour la création de PODs]] (voir [[#kubectl cordon]]): # Mark node "foo" as schedulable. $ kubectl uncordon foo ==== kubectl version ==== [[http://kubernetes.io/docs/user-guide/kubectl/kubectl_version/|Affiche la version client/serveur]] : $ kubectl version