Tip & trik Kubernetes: templat kubectl yang praktis

Di dalam perusahaan, kami secara aktif berbagi pengetahuan satu sama lain: tidak hanya dalam bentuk instruksi wiki formal, tetapi juga pesan di Slack (dan agar tidak ada yang hilang, sistem pencarian cerdas disediakan, tapi itu cerita lain ...). Kami telah mengumpulkan berbagai macam template untuk operasi konsol di Kubernetes dengan kubectl. Mereka akan dibahas dalam artikel ini.







Beberapa tim mungkin menjadi rutinitas harian bagi sebagian pembaca, tetapi jika ada yang akan menemukan hal-hal baru untuk diri mereka sendiri, sehingga meningkatkan keefektifannya, tujuan artikel akan tercapai.



NB : Beberapa dari perintah yang tercantum di bawah ini disusun oleh teknisi kami, sementara yang lain ditemukan di Internet. Dalam kasus terakhir, mereka telah diuji dan terbukti bermanfaat.



Jadi ayo pergi!



pod'



  1. , pod' --all-namespaces . , β€” -A ( , Kubernetes 1.15).
  2. pod', (.. Running)?



    kubectl get pods -A --field-selector=status.phase!=Running | grep -v Complete
    






    , --field-selector (. ).
  3. :



    kubectl get no -o json | \
      jq -r '.items | sort_by(.status.capacity.memory)[]|[.metadata.name,.status.capacity.memory]| @tsv'
    


  4. pod' :



    kubectl get po -o json --all-namespaces | \
      jq '.items | group_by(.spec.nodeName) | map({"nodeName": .[0].spec.nodeName, "count": length}) | sort_by(.count)'
    


  5. , - 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')\"
    
  6. kubectl top pod', :



    # cpu
    kubectl top pods -A | sort --reverse --key 3 --numeric
    # memory
    kubectl top pods -A | sort --reverse --key 4 --numeric
  7. pod' β€” , :



    kubectl get pods --sort-by=.status.containerStatuses[0].restartCount






    , (. PodStatus ContainerStatus).




  1. 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'.
  2. 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'


  3. 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: {}
    


    , / .
  4. - :



    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.


    !




  1. IP- :



    kubectl get nodes -o json | \
      jq -r '.items[].status.addresses[]? | select (.type == "InternalIP") | .address' | \
      paste -sd "\n" -
    


  2. nodePort, :



    kubectl get --all-namespaces svc -o json | \
      jq -r '.items[] | [.metadata.name,([.spec.ports[].nodePort | tostring ] | join("|"))]| @tsv'
    


  3. , CNI (, Flannel), pod' . pod', :



    kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}' | tr " " "\n"
    






  1. pod' c timestamp :



    kubectl -n my-namespace logs -f my-pod --timestamps
    
    2020-07-08T14:01:59.581788788Z fail: Microsoft.EntityFrameworkCore.Query[10100]
    


    , ?
  2. , pod' β€” --tail:



    kubectl -n my-namespace logs -f my-pod --tail=50
    
  3. pod':



    kubectl -n my-namespace logs -f my-pod --all-containers
    
  4. pod' label':



    kubectl -n my-namespace logs -f -l app=nginx
  5. , , , :



    kubectl -n my-namespace logs my-pod --previous
    




  1. ?



    kubectl get secrets -o json --namespace namespace-old | \
      jq '.items[].metadata.namespace = "namespace-new"' | \
      kubectl create-f  -
    
  2. :



    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




Alih-alih kesimpulan - daftar kecil bahan dan koleksi serupa yang ditemukan di Internet:





PS



Baca juga di blog kami:






All Articles