
Certaines Ă©quipes peuvent s'avĂ©rer ĂȘtre une routine quotidienne pour certains lecteurs, mais s'il y en a qui dĂ©couvrent de nouvelles choses par elles-mĂȘmes, amĂ©liorant ainsi leur efficacitĂ©, l'objectif de l'article sera atteint.
NB : Certaines des commandes listées ci-dessous ont été compilées par nos ingénieurs, tandis que d'autres ont été trouvées sur Internet. Dans ce dernier cas, ils ont été testés et jugés utiles.
Alors allons-y!
pod'
- , pod'
--all-namespaces
. , â-A
( , Kubernetes 1.15). - pod', (..
Running
)?
kubectl get pods -A --field-selector=status.phase!=Running | grep -v Complete
,--field-selector
(. ). - :
kubectl get no -o json | \ jq -r '.items | sort_by(.status.capacity.memory)[]|[.metadata.name,.status.capacity.memory]| @tsv'
- pod' :
kubectl get po -o json --all-namespaces | \ jq '.items | group_by(.spec.nodeName) | map({"nodeName": .[0].spec.nodeName, "count": length}) | sort_by(.count)'
- , - DaemonSet - . â , - , DaemonSet':
ns=my-namespace pod_template=my-pod kubectl get node | grep -v \"$(kubectl -n ${ns} get pod --all-namespaces -o wide | fgrep ${pod_template} | awk '{print $8}' | xargs -n 1 echo -n "\|" | sed 's/[[:space:]]*//g')\"
-
kubectl top
pod', :
# cpu kubectl top pods -A | sort --reverse --key 3 --numeric # memory kubectl top pods -A | sort --reverse --key 4 --numeric
- pod' â , :
kubectl get pods --sort-by=.status.containerStatuses[0].restartCount
, (. PodStatus ContainerStatus).
- Ingress', pod' . ,
-o wide
:
kubectl -n jaeger get svc -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR jaeger-cassandra ClusterIP None <none> 9042/TCP 77d app=cassandracluster,cassandracluster=jaeger-cassandra,cluster=jaeger-cassandra
, , pod'. - pod' limits requests:
kubectl get pods -n my-namespace -o=custom-columns='NAME:spec.containers[*].name,MEMREQ:spec.containers[*].resources.requests.memory,MEMLIM:spec.containers[*].resources.limits.memory,CPUREQ:spec.containers[*].resources.requests.cpu,CPULIM:spec.containers[*].resources.limits.cpu'
-
kubectl run
(create
,apply
,patch
) â--dry-run
.-o yaml
, . :
kubectl run test --image=grafana/grafana --dry-run -o yaml apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: run: test name: test spec: replicas: 1 selector: matchLabels: run: test strategy: {} template: metadata: creationTimestamp: null labels: run: test spec: containers: - image: grafana/grafana name: test resources: {} status: {}
, / . - - :
kubectl explain hpa KIND: HorizontalPodAutoscaler VERSION: autoscaling/v1 DESCRIPTION: configuration of a horizontal pod autoscaler. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources kind <string> Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds metadata <Object> Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata spec <Object> behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. status <Object> current information about the autoscaler.
!
- IP- :
kubectl get nodes -o json | \ jq -r '.items[].status.addresses[]? | select (.type == "InternalIP") | .address' | \ paste -sd "\n" -
- nodePort, :
kubectl get --all-namespaces svc -o json | \ jq -r '.items[] | [.metadata.name,([.spec.ports[].nodePort | tostring ] | join("|"))]| @tsv'
- , CNI (, Flannel), pod' . pod', :
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}' | tr " " "\n"
- pod' c timestamp :
kubectl -n my-namespace logs -f my-pod --timestamps 2020-07-08T14:01:59.581788788Z fail: Microsoft.EntityFrameworkCore.Query[10100]
, ? - , pod' â
--tail
:
kubectl -n my-namespace logs -f my-pod --tail=50
- pod':
kubectl -n my-namespace logs -f my-pod --all-containers
- pod' label':
kubectl -n my-namespace logs -f -l app=nginx
- , , , :
kubectl -n my-namespace logs my-pod --previous
- ?
kubectl get secrets -o json --namespace namespace-old | \ jq '.items[].metadata.namespace = "namespace-new"' | \ kubectl create-f -
- :
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=grafana.mysite.ru/O=MyOrganization" kubectl -n myapp create secret tls selfsecret --key tls.key --cert tls.crt
Au lieu d'une conclusion - une petite liste de matériaux et de collections similaires trouvés sur Internet:
- Cheatsheet officiel de la documentation Kubernetes;
- Une brÚve introduction pratique et une belle tablette de 2 pages de la Linux Academy pour aider à réduire le temps des ingénieurs en herbe:
- Une trÚs longue liste de commandes de Blue Matador, divisée en sections;
- Une sélection de liens dans l'essentiel vers des tableaux avec des commandes, des articles sur le sujet et quelques commandes;
- Le référentiel GitHub Kubernetes-Cheat-Sheet d'un autre passionné ne contient que des commandes catégorisées;
- Le référentiel GitHub kubectl-aliases est un paradis pour les abréviateurs.
PS
Lisez aussi sur notre blog:
- « Kubernetes kubectl»;
- « Kubernetes kubectl»;
- « Kubernetes».