日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
kubectl的技巧是什么呢

這篇文章給大家介紹kubectl的技巧是什么呢,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、永仁網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Kubectl 是 Kubernetes 最重要的命令行工具。在 Flant,我們會(huì)在 Wiki 和 Slack 上相互分享 Kubectl 的妙用(其實(shí)我們還有個(gè)搜索引擎,不過(guò)那就是另外一回事了)。多年以來(lái),我們?cè)?kubectl 方面積累了很多技巧,現(xiàn)在想要將其中的部分分享給社區(qū)。

現(xiàn)在開(kāi)始吧。

獲取 Pod 和節(jié)點(diǎn)

  1. 我猜你知道如何獲取 Kubernetes 集群中所有 Namespace 的 Pod——使用 --all-namepsaces就可以。然而不少朋友還不知道,現(xiàn)在這一開(kāi)關(guān)還有了 -A 的縮寫(xiě)。

  2. 如何查找非 running 狀態(tài)的 Pod 呢?

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

    順便一說(shuō),--field-selector 是個(gè)值得深入一點(diǎn)的參數(shù)。

  3. 如何獲取節(jié)點(diǎn)列表及其內(nèi)存容量:

     kubectl get no -o json | \
      jq -r '.items | sort_by(.status.capacity.memory)[]|[.metadata.name,.status.capacity.memory]| @tsv'
  4. 獲取節(jié)點(diǎn)列表,其中包含運(yùn)行在每個(gè)節(jié)點(diǎn)上的 Pod 數(shù)量:

     kubectl get po -o json --all-namespaces | \
      jq '.items | group_by(.spec.nodeName) | map({"nodeName": .[0].spec.nodeName, "count": length}) | sort_by(.count)'
  5. 有時(shí)候 DaemonSet 因?yàn)槟撤N原因沒(méi)能在某個(gè)節(jié)點(diǎn)上啟動(dòng)。手動(dòng)搜索會(huì)有點(diǎn)麻煩:

     $ 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 列表并根據(jù)其消耗的 CPU 或 內(nèi)存進(jìn)行排序:

     # cpu
    $ kubectl top pods -A | sort --reverse --key 3 --numeric
    # memory
    $ kubectl top pods -A | sort --reverse --key 4 --numeric
  7. 獲取 Pod 列表,并根據(jù)重啟次數(shù)進(jìn)行排序:

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

    當(dāng)然也可以使用 PodStatus 以及 ContainerStatus 的其它字段進(jìn)行排序。

獲取其它數(shù)據(jù)

  1. 運(yùn)行 Ingress 時(shí),經(jīng)常要獲取 Service 對(duì)象的 selector 字段,用來(lái)查找 Pod。過(guò)去要打開(kāi) Service 的清單才能完成這個(gè)任務(wù),現(xiàn)在使用 -o wide 參數(shù)也可以:

     $ kubectl -n jaeger get svc -o wide
    NAME                            TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)                                  AGE   SELECTOR
    jaeger-cassandra                ClusterIP   None                      9042/TCP                                 77d   app=cassandracluster,cassandracluster=jaeger-cassandra,cluster=jaeger-cassandra
  2. 如何輸出 Pod 的 requests 和 limits

     $ kubectl get pods -A -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'
    NAME                                  MEMREQ       MEMLIM        CPUREQ   CPULIM
    coreDNS                               70Mi         170Mi         100m    
    coredns                               70Mi         170Mi         100m    
    ...
  3. kubectl run(以及 create、applypatch)命令有個(gè)厲害的參數(shù) --dry-run,該參數(shù)讓用戶無(wú)需真正操作集群就能觀察集群的行為,如果配合 -o yaml,就能輸出命令對(duì)應(yīng)的 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

    簡(jiǎn)單的把輸出內(nèi)容保存到文件,刪除無(wú)用字段就可以使用了。

    1.18 開(kāi)始 kubectl run 生成的是 Pod 而非 Deployment。

  4. 獲取指定資源的描述清單:

     kubectl explain hpa
    KIND:     HorizontalPodAutoscaler
    VERSION:  autoscaling/v1
    DESCRIPTION:
         configuration of a horizontal pod autoscaler.
    FIELDS:
       apiVersion    
    ...

網(wǎng)絡(luò)

  1. 獲取集群節(jié)點(diǎn)的內(nèi)部 IP:

     $ kubectl get nodes -o json | jq -r '.items[].status.addresses[]? | select (.type == "InternalIP") | .address' | \
      paste -sd "\n" -
    9.134.14.252
  2. 獲取所有的 Service 對(duì)象以及其 nodePort

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

    kubernetes  null
    ...
  3. 在排除 CNI(例如 Flannel)故障的時(shí)候,經(jīng)常會(huì)需要檢查路由來(lái)識(shí)別故障 Pod。Pod 子網(wǎng)在這里非常有用:

     $ kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}' | tr " " "\n"                                                            fix-doc-azure-container-registry-config  ?
    10.120.0.0/24
    10.120.1.0/24
    10.120.2.0/24

日志

  1. 使用可讀的時(shí)間格式輸出日志:

     $ kubectl logs -f fluentbit-gke-qq9w9  -c fluentbit --timestamps
    2020-09-10T13:10:49.822321364Z Fluent Bit v1.3.11
    2020-09-10T13:10:49.822373900Z Copyright (C) Treasure Data
    2020-09-10T13:10:49.822379743Z
    2020-09-10T13:10:49.822383264Z [2020/09/10 13:10:49] [ info] Configuration:
  2. 只輸出尾部日志:

     kubectl logs -f fluentbit-gke-qq9w9  -c fluentbit --tail=10
    [2020/09/10 13:10:49] [ info] ___________
    [2020/09/10 13:10:49] [ info]  filters:
    [2020/09/10 13:10:49] [ info]      parser.0
    ...
  3. 輸出一個(gè) Pod 中所有容器的日志:

    kubectl -n my-namespace logs -f my-pod —all-containers

  4. 使用標(biāo)簽選擇器輸出多個(gè) Pod 的日志:

    kubectl -n my-namespace logs -f -l app=nginx

  5. 獲取“前一個(gè)”容器的日志(例如崩潰的情況):

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

其它

  1. 把 Secret 復(fù)制到其它命名空間:

     kubectl get secrets -o json --namespace namespace-old | \
      jq '.items[].metadata.namespace = "namespace-new"' | \
      kubectl create-f  -
  2. 下面兩個(gè)命令可以生成一個(gè)用于測(cè)試的自簽發(fā)證書(shū):

     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

關(guān)于kubectl的技巧是什么呢就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


分享標(biāo)題:kubectl的技巧是什么呢
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/gcdoid.html