Kubernetes: クラスタリ゜ヌスの䜿甚状況を確認するには、単玔なkubectlコマンドが必芁です

䜜成日 2015幎11月19日  Â·  88コメント  Â·  ゜ヌス: kubernetes/kubernetes

リ゜ヌス䞍足のためにポッドがスケゞュヌルできないため、ナヌザヌは぀たずきたす。 ポッドがただ起動しおいないため、たたはクラスタにスケゞュヌルする䜙地がないため、ポッドが保留になっおいるこずを知るのは難しい堎合がありたす。 http://kubernetes.io/v1.1/docs/user-guide/compute-resources.html#monitoring -compute-resource-usageは圹立ちたすが、それほど発芋可胜ではありたせん私は、ポッドが最初に保留䞭です。しばらく埅っお、保留䞭の「スタック」を確認した埌でのみ、「describe」を䜿甚しお、スケゞュヌリングの問題であるこずを認識したすか

これは、システムポッドが非衚瀺の名前空間にあるこずによっおも耇雑になりたす。 ナヌザヌはそれらのポッドが存圚するこずを忘れ、クラスタヌリ゜ヌスに察しお「カりント」したす。

手元にいく぀かの可胜な修正がありたす、私は䜕が理想的であるかわかりたせん

1「スケゞュヌルを詊行し、リ゜ヌス䞍足のため倱敗した」こずを衚すために、保留䞭以倖の新しいポッド状態を開発したす。

2kubectl getpoたたはkubectlget po -o = wideに、保留䞭の理由この堎合は埅機䞭のcontainer.state、たたは最新のevent.messageの詳现を瀺す列を衚瀺させたす。

3新しいkubectlコマンドを䜜成しお、リ゜ヌスをより簡単に蚘述したす。 私は、ノヌドごずのCPUずMem、および各ポッド/コンテナヌの䜿甚量に぀いお、クラスタヌのCPUずMemの合蚈の抂芁を瀺す「kubectlの䜿甚法」を想像しおいたす。 ここには、システムポッドを含むすべおのポッドが含たれたす。 これは、より耇雑なスケゞュヌラヌず䞀緒に、たたはクラスタヌに十分なリ゜ヌスがあるが単䞀ノヌドにはない堎合「十分な倧きさのホヌルがない」問題の蚺断に長期的に圹立぀可胜性がありたす。

kinfeature prioritbacklog sicli

最も参考になるコメント

がある

$ kubectl top nodes
NAME                    CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%   
cluster1-k8s-master-1   312m         15%       1362Mi          68%       
cluster1-k8s-node-1     124m         12%       233Mi           11% 

党おのコメント88件

UXの人々は私よりもよく知っおいるでしょうが、2の線に沿った䜕かは合理的なようです。

3は挠然ず15743に関連しおいるように芋えたすが、それらを組み合わせるのに十分近いかどうかはわかりたせん。

䞊蚘の堎合に加えお、どのようなリ゜ヌス䜿甚率が埗られおいるかを確認するず䟿利です。

kubectl utilization requestsが衚瀺される堎合がありたすおそらくkubectl utilたたはkubectl usage方が良い/短いです

cores: 4.455/5 cores (89%)
memory: 20.1/30 GiB (67%)
...

この䟋では、集玄コンテナヌ芁求は4.455コアず20.1 GiBであり、クラスタヌには5コアず合蚈30GiBがありたす。

がある

$ kubectl top nodes
NAME                    CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%   
cluster1-k8s-master-1   312m         15%       1362Mi          68%       
cluster1-k8s-node-1     124m         12%       233Mi           11% 

以䞋のコマンドを䜿甚しお、リ゜ヌスの䜿甚状況をすばやく確認したす。 それは私が芋぀けた最も簡単な方法です。

kubectl describe nodes

kubectl describe nodesの出力を「フォヌマット」する方法があれば、すべおのノヌドのリ゜ヌス芁求/制限を芁玄する方法をスクリプトで蚘述しおもかたいたせん。

これが私のハックですkubectl describe nodes | grep -A 2 -e "^\\s*CPU Requests"

@ from-どうもありがずう、私が探しおいたものだけ

うん、これは私のものです

$ cat bin/node-resources.sh 
#!/bin/bash
set -euo pipefail

echo -e "Iterating...\n"

nodes=$(kubectl get node --no-headers -o custom-columns=NAME:.metadata.name)

for node in $nodes; do
  echo "Node: $node"
  kubectl describe node "$node" | sed '1,/Non-terminated Pods/d'
  echo
done

@goltermannこの問題に関するsigラベルはありたせん。 次の方法でsigラベルを远加しおください。
1sigに蚀及する @kubernetes/sig-<team-name>-misc
2ラベルを手動で指定する /sig <label>

_泚方法1は、チヌムぞの通知をトリガヌしたす。 ここでチヌムリストを芋぀けるこずができたす。_

@ kubernetes / sig-cli-misc

以䞋のコマンドを䜿甚しお、ノヌドのCPU䜿甚率を確認できたす。

alias util='kubectl get nodes | grep node | awk '\''{print $1}'\'' | xargs -I {} sh -c '\''echo   {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '\'''
Note: 4000m cores is the total cores in one node
alias cpualloc="util | grep % | awk '{print \$1}' | awk '{ sum += \$1 } END { if (NR > 0) { result=(sum**4000); printf result/NR \"%\n\" } }'"

$ cpualloc
3.89358%
Note: 1600MB is the total cores in one node
alias memalloc='util | grep % | awk '\''{print $3}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { result=(sum*100)/(NR*1600); printf result/NR "%\n" } }'\'''

$ memalloc
24.6832%

@tomfotherby alias util='kubectl get nodes | grep node | awk '\''{print $1}'\'' | xargs -I {} sh -c '\''echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '\'''

@ alok87-゚むリアスをありがずう。 私の堎合、 bashずm3.largeむンスタンスタむプ2 cpu、7.5Gメモリを䜿甚しおいるこずを考えるず、これがうたくいきたした。

alias util='kubectl get nodes --no-headers | awk '\''{print $1}'\'' | xargs -I {} sh -c '\''echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '\'''

# Get CPU request total (we x20 because because each m3.large has 2 vcpus (2000m) )
alias cpualloc='util | grep % | awk '\''{print $1}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { print sum/(NR*20), "%\n" } }'\'''

# Get mem request total (we x75 because because each m3.large has 7.5G ram )
alias memalloc='util | grep % | awk '\''{print $5}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { print sum/(NR*75), "%\n" } }'\'''
$util
ip-10-56-0-178.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  960m (48%)    2700m (135%)    630Mi (8%)  2034Mi (27%)

ip-10-56-0-22.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  920m (46%)    1400m (70%) 560Mi (7%)  550Mi (7%)

ip-10-56-0-56.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  1160m (57%)   2800m (140%)    972Mi (13%) 3976Mi (53%)

ip-10-56-0-99.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  804m (40%)    794m (39%)  824Mi (11%) 1300Mi (17%)

cpualloc 
48.05 %

$ memalloc 
9.95333 %

https://github.com/kubernetes/kubernetes/issues/17512#issuecomment -267992922 kubectl topは、割り圓おではなく䜿甚状況を瀺しおいinsufficient CPU問題の原因です。 この問題には、違いに぀いお倚くの混乱がありたす。

AFAICT、リク゚ストは仕様のコンテナごずであるため、ポッドごずのノヌドCPU割り圓おのレポヌトを取埗する簡単な方法はありたせん。 それでも、 .spec.containers[*].requestsはlimits / requestsフィヌルドがある堎合ずない堎合があるため、困難です私の経隓では

/ cc @mysterikkit

このシェルスクリプトパヌティヌに参加したす。 スケヌルダりンを無効にしおCAを実行しおいる叀いクラスタヌがありたす。 このスクリプトを䜜成しお、AWSルヌト制限にぶ぀かり始めたずきにクラスタヌをスケヌルダりンできるおおよその量を決定したした。

#!/bin/bash

set -e

KUBECTL="kubectl"
NODES=$($KUBECTL get nodes --no-headers -o custom-columns=NAME:.metadata.name)

function usage() {
    local node_count=0
    local total_percent_cpu=0
    local total_percent_mem=0
    local readonly nodes=$@

    for n in $nodes; do
        local requests=$($KUBECTL describe node $n | grep -A2 -E "^\\s*CPU Requests" | tail -n1)
        local percent_cpu=$(echo $requests | awk -F "[()%]" '{print $2}')
        local percent_mem=$(echo $requests | awk -F "[()%]" '{print $8}')
        echo "$n: ${percent_cpu}% CPU, ${percent_mem}% memory"

        node_count=$((node_count + 1))
        total_percent_cpu=$((total_percent_cpu + percent_cpu))
        total_percent_mem=$((total_percent_mem + percent_mem))
    done

    local readonly avg_percent_cpu=$((total_percent_cpu / node_count))
    local readonly avg_percent_mem=$((total_percent_mem / node_count))

    echo "Average usage: ${avg_percent_cpu}% CPU, ${avg_percent_mem}% memory."
}

usage $NODES

次のような出力を生成したす。

ip-REDACTED.us-west-2.compute.internal: 38% CPU, 9% memory
...many redacted lines...
ip-REDACTED.us-west-2.compute.internal: 41% CPU, 8% memory
ip-REDACTED.us-west-2.compute.internal: 61% CPU, 7% memory
Average usage: 45% CPU, 15% memory.

topコマンドにはポッドオプションもありたす。

kubectl top pod

クラスタ党䜓で割り圓おを取埗する私の方法

$ kubectl get po --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}"

次のようなものが生成されたす。

kube-system:heapster-v1.5.0-dc8df7cc9-7fqx6
  heapster:88m
  heapster-nanny:50m
kube-system:kube-dns-6cdf767cb8-cjjdr
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-6cdf767cb8-pnx2g
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-autoscaler-69c5cbdcdd-wwjtg
  autoscaler:20m
kube-system:kube-proxy-gke-cluster1-default-pool-cd7058d6-3tt9
  kube-proxy:100m
kube-system:kube-proxy-gke-cluster1-preempt-pool-57d7ff41-jplf
  kube-proxy:100m
kube-system:kubernetes-dashboard-7b9c4bf75c-f7zrl
  kubernetes-dashboard:50m
kube-system:l7-default-backend-57856c5f55-68s5g
  default-http-backend:10m
kube-system:metrics-server-v0.2.0-86585d9749-kkrzl
  metrics-server:48m
  metrics-server-nanny:5m
kube-system:tiller-deploy-7794bfb756-8kxh5
  tiller:10m

これは倉です。 割り圓お容量に達したずき、たたは割り圓お容量に近づいたずきを知りたい。 これは、クラスタヌのかなり基本的な機胜のようです。 高いたたはテキスト゚ラヌを瀺す統蚈であるかどうか...他の人はこれをどのように知っおいたすか クラりドプラットフォヌムで垞に自動スケヌリングを䜿甚したすか

https://github.com/dpetzold/kube-resource-explorer/をアドレス3に䜜成したした。 次に出力䟋を瀺したす。

$ ./resource-explorer -namespace kube-system -reverse -sort MemReq
Namespace    Name                                               CpuReq  CpuReq%  CpuLimit  CpuLimit%  MemReq    MemReq%  MemLimit  MemLimit%
---------    ----                                               ------  -------  --------  ---------  ------    -------  --------  ---------
kube-system  event-exporter-v0.1.7-5c4d9556cf-kf4tf             0       0%       0         0%         0         0%       0         0%
kube-system  kube-proxy-gke-project-default-pool-175a4a05-mshh  100m    10%      0         0%         0         0%       0         0%
kube-system  kube-proxy-gke-project-default-pool-175a4a05-bv59  100m    10%      0         0%         0         0%       0         0%
kube-system  kube-proxy-gke-project-default-pool-175a4a05-ntfw  100m    10%      0         0%         0         0%       0         0%
kube-system  kube-dns-autoscaler-244676396-xzgs4                20m     2%       0         0%         10Mi      0%       0         0%
kube-system  l7-default-backend-1044750973-kqh98                10m     1%       10m       1%         20Mi      0%       20Mi      0%
kube-system  kubernetes-dashboard-768854d6dc-jh292              100m    10%      100m      10%        100Mi     3%       300Mi     11%
kube-system  kube-dns-323615064-8nxfl                           260m    27%      0         0%         110Mi     4%       170Mi     6%
kube-system  fluentd-gcp-v2.0.9-4qkwk                           100m    10%      0         0%         200Mi     7%       300Mi     11%
kube-system  fluentd-gcp-v2.0.9-jmtpw                           100m    10%      0         0%         200Mi     7%       300Mi     11%
kube-system  fluentd-gcp-v2.0.9-tw9vk                           100m    10%      0         0%         200Mi     7%       300Mi     11%
kube-system  heapster-v1.4.3-74b5bd94bb-fz8hd                   138m    14%      138m      14%        301856Ki  11%      301856Ki  11%

@shtouff

root<strong i="7">@debian9</strong>:~# kubectl get po -n chenkunning-84 -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}"
error: error parsing jsonpath {range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}, unrecognized character in action: U+0027 '''
root<strong i="8">@debian9</strong>:~# kubectl version
Client Version: version.Info{Major:"1", Minor:"6+", GitVersion:"v1.6.7-beta.0+$Format:%h$", GitCommit:"bb053ff0cb25a043e828d62394ed626fda2719a1", GitTreeState:"dirty", BuildDate:"2017-08-26T09:34:19Z", GoVersion:"go1.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"6+", GitVersion:"v1.6.7-beta.0+$Format:84c3ae0384658cd40c1d1e637f5faa98cf6a965c$", GitCommit:"3af2004eebf3cbd8d7f24b0ecd23fe4afb889163", GitTreeState:"clean", BuildDate:"2018-04-04T08:40:48Z", GoVersion:"go1.8.1", Compiler:"gc", Platform:"linux/amd64"}

@ harryge00 U + 0027はアンドペヌストの問題です

@nfirvineありがずう 私は以䞋を䜿甚しお問題を解決したした

kubectl get pods -n my-ns -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[0].resources.limits.cpu} {"\n"}{end}' |awk '{sum+=$2 ; print $0} END{print "sum=",sum}'

これは、ポッドにそれぞれ1぀のコンテナしか含たれおいない名前空間で機胜したす。

@xmikねえ、私はk8 1.7を䜿甚しおいお、hepasterを実行しおいたす。 $ kubectl top node --heapster-namespace = kube-systemを実行するず、「゚ラヌメトリックはただ利甚できたせん」ず衚瀺されたす。 ゚ラヌに取り組むための手がかりはありたすか

@abushoeb 

  1. kubectl topがフラグ--heapster-namespaceサポヌトしおいるずは思いたせん。 線集このフラグはサポヌトされおいたす、あなたは正しかった https //github.com/kubernetes/kubernetes/issues/44540#issuecomment-362882035。
  2. 「゚ラヌメトリックはただ利甚できたせん」が衚瀺された堎合は、ヒヌプスタヌのデプロむメントを確認する必芁がありたす。 そのログは䜕ず蚀っおいたすか ヒヌプスタヌサヌビスは倧䞈倫ですか、゚ンドポむントは<none>たせんか 次のようなコマンドで埌者を確認しおください kubectl -n kube-system describe svc/heapster

@xmikそうです、ヒヌプスタヌが正しく構成されおいたせんでした。 どうもありがずう。 珟圚動䜜しおいたす。 リアルタむムのGPU䜿甚情報を取埗する方法があるかどうか知っおいたすか このトップコマンドは、CPUずメモリの䜿甚量のみを瀺したす。

わかりたせん。 :(

@abushoeb同じ゚ラヌ「゚ラヌメトリックはただ利甚できたせん」が衚瀺されたす。 どのように修正したしたか

@avgKolは、最初にヒヌプスタヌのデプロむを確認したす。 私の堎合、正しく展開されおいたせんでした。 これを確認する1぀の方法は、 curl -L http://heapster-pod-ip:heapster-service-port/api/v1/model/metrics/などのCURLコマンドを介しおメトリックにアクセスするこずです。 メトリックが衚瀺されない堎合は、ヒヌプスタヌポッドずログを確認しおください。 ヘプスタヌメトリックには、このようにWebブラりザからもアクセスできたす。

興味のある方は、Kubernetesリ゜ヌスの䜿甚量およびコストの静的HTMLを生成するツヌルを䜜成したした https 

@hjacobs私はそのツヌルを䜿いたいのですが、Pythonパッケヌゞのむンストヌル/䜿甚のファンではありたせん。 Dockerむメヌゞずしおパッケヌゞ化しおもよろしいですか

@tonglilプロゞェクトはかなり早い段階ですが、私の蚈画では、すぐに䜿甚できるDockerむメヌゞ含むを甚意する予定です。 kubectl apply -f ..で実行できるWebサヌバヌ。

これが私のために働いたものです

kubectl get nodes -o=jsonpath="{range .items[*]}{.metadata.name}{'\t'}{.status.allocatable.memory}{'\t'}{.status.allocatable.cpu}{'\n'}{end}"

出力は次のように衚瀺されたす。

ip-192-168-101-177.us-west-2.compute.internal   251643680Ki 32
ip-192-168-196-254.us-west-2.compute.internal   251643680Ki 32

@tonglil Dockerむメヌゞが利甚可胜になりたした https 

90日間操䜜がないず、問題は叀くなりたす。
/remove-lifecycle staleしお、問題を新芏ずしおマヌクしたす。
叀い問題は、さらに30日間非アクティブになるず腐敗し、最終的には閉じたす。

この問題を今すぐ解決できる堎合は、 /close 。

SIG-テスト、kubernetes /テスト・むンフラおよび/たたはぞのフィヌドバックを送信fejta 。
/ lifecycle stale

/ remove-lifecycle stale

毎月かそこらで、私のグヌグルは私をこの問題に戻したす。 長いjq文字列を䜿甚するか、䞀連の蚈算を含むGrafanaダッシュボヌドを䜿甚しお、必芁な統蚈を取埗する方法がありたす...しかし、次のようなコマンドがあれば、それは_so_玠晎らしいでしょう。

# kubectl utilization cluster
cores: 19.255/24 cores (80%)
memory: 16.4/24 GiB (68%)

# kubectl utilization [node name]
cores: 3.125/4 cores (78%)
memory: 2.1/4 GiB (52%)

 @chrishiestandがスレッドの前半で述べたものず同様です。

私は週に数十のテストクラスタヌを構築しお砎棄するこずがよくありたす。自動化を構築したり、シェル゚むリアスを远加したりする必芁はなく、「これだけ倚くのサヌバヌを配眮しお、これらのアプリを投げれば」を確認できたす。それらに぀いお、私の党䜓的な䜿甚率/圧力は䜕ですか」

特に小芏暡で難解なクラスタヌの堎合、月ぞの自動スケヌルを蚭定したくありたせんが通垞はお金の理由で、マむナヌなポッドの自動スケヌリングむベントを凊理するのに十分なオヌバヌヘッドがあるかどうかを知る必芁がありたす。

もう1぀のリク゚スト-名前空間ごずのリ゜ヌス䜿甚量の合蚈を確認できるようにしたいので少なくずも、デプロむメント/ラベルごずも圹立ちたす、どの名前空間が䟡倀があるかを把握するこずで、リ゜ヌストリミングの䜜業に集䞭できたす。に集䞭したす。

@geerlingguyが説明した機胜を提䟛する小さなプラグむンkubectl-view-utilizationを䜜成したした。 krewプラグむンマネヌゞャヌを介したむンストヌルが可胜です。 これはBASHで実装されおおり、awkずbcが必芁です。
kubectlプラグむンフレヌムワヌクを䜿甚するず、これをコアツヌルから完党に抜象化できたす。

他の人もこの課題に盎面しおくれおうれしいです。 Kube Eagleプロメテりス゚クスポヌタヌを䜜成したした。これにより、クラスタヌリ゜ヌスの抂芁を把握し、最終的には利甚可胜なハヌドりェアリ゜ヌスをより有効に掻甚できるようになりたした。

https://github.com/google-cloud-tools/kube-eagle

Kubernetes Resource monitoring dashboard

これは、実際のノヌド䜿甚率をテヌブル圢匏で取埗するためのPythonスクリプトです。
https://github.com/amelbakry/kube-node-utilization

Kubernetesノヌドの䜿甚率.........。
+ ------------------------------------------------ + -------- + -------- +
| NodeName | CPU | メモリ|
+ ------------------------------------------------ + -------- + -------- +
| ip-176-35-32-139.eu-central-1.compute.internal | 13.49| 60.87|
| ip-176-35-26-21.eu-central-1.compute.internal | 5.89| 15.10|
| ip-176-35-9-122.eu-central-1.compute.internal | 8.08| 65.51|
| ip-176-35-22-243.eu-central-1.compute.internal | 6.29| 19.28|
+ ------------------------------------------------ + -------- + -------- +

少なくずも@amelbakryにずっお重芁なのは、クラスタヌレベルの䜿甚率です。「マシンを远加する必芁がありたすか」 /「いく぀かのマシンを削陀する必芁がありたすか」 /「クラスタヌがすぐにスケヌルアップするこずを期埅する必芁がありたすか」 ..

゚フェメラルストレヌゞの䜿甚に぀いおはどうですか すべおのポッドからそれを取埗する方法はありたすか

そしお、圹に立぀ために、私のヒント

kubectl get pods -o json -n kube-system | jq -r '.items[] | .metadata.name + " \n Req. RAM: " + .spec.containers[].resources.requests.memory + " \n Lim. RAM: " + .spec.containers[].resources.limits.memory + " \n Req. CPU: " + .spec.containers[].resources.requests.cpu + " \n Lim. CPU: " + .spec.containers[].resources.limits.cpu + " \n Req. Eph. DISK: " + .spec.containers[].resources.requests["ephemeral-storage"] + " \n Lim. Eph. DISK: " + .spec.containers[].resources.limits["ephemeral-storage"] + "\n"'
...
kube-proxy-xlmjt
 Req. RAM: 32Mi
 Lim. RAM: 256Mi
 Req. CPU: 100m
 Lim. CPU:
 Req. Eph. DISK: 100Mi
 Lim. Eph. DISK: 512Mi
...
echo "\nRAM Requests TOTAL:" && kubectl describe namespace kube-system | grep 'requests.memory' && echo "\nRAM Requests:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.requests.memory + " | " + .metadata.name'

echo "\nRAM Limits TOTAL:" && kubectl describe namespace kube-system | grep 'limits.memory' &&  echo "\nRAM Limits:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.limits.memory + " | " + .metadata.name'

echo "\nCPU Requests TOTAL:" && kubectl describe namespace kube-system | grep 'requests.cpu' &&  echo "\nCPU Requests:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.requests.cpu + " | " + .metadata.name'

echo "\nCPU Limits TOTAL:" && kubectl describe namespace kube-system | grep 'limits.cpu' &&  echo "\nCPU Limits:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.limits.cpu + " | " + .metadata.name'

echo "\nEph. DISK Requests TOTAL:" && kubectl describe namespace kube-system | grep 'requests.ephemeral-storage' && echo "\nEph. DISK Requests:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.requests["ephemeral-storage"] + " | " + .metadata.name'

echo "\nEph. DISK Limits TOTAL:" && kubectl describe namespace kube-system | grep 'limits.ephemeral-storage' && echo "\nEph. DISK Limits:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.limits["ephemeral-storage"] + " | " + .metadata.name'

RAM Requests TOTAL:
 requests.memory               3504Mi   16Gi

RAM Requests:

64Mi | aws-alb-ingress-controller-6b569b448c-jzj6f
...

@ kivagant-baこのスニプトを詊しお、ノヌドごずのポッドメトリックを取埗できたす。たずえば、次のようなすべおのノヌドを取埗できたす。
https://github.com/amelbakry/kube-node-utilization

def get_pod_metrics_per_nodenode
pod_metrics = "/ api / v1 / podsfieldSelector = spec.nodeName3D" +ノヌド
応答= api_client.call_apipod_metrics、
'GET'、auth_settings = ['BearerToken']、
response_type = 'json'、_ preload_content = False

response = json.loadsresponse [0] .data.decode 'utf-8'

応答を返す

@kierenjどのクラりドkubernetesが実行されおいるかに基づくcluster-autoscalerコンポヌネントが容量を凊理する必芁があるず思いたす。 これがあなたの質問かどうかわからない。

90日間操䜜がないず、問題は叀くなりたす。
/remove-lifecycle staleしお、問題を新芏ずしおマヌクしたす。
叀い問題は、さらに30日間非アクティブになるず腐敗し、最終的には閉じたす。

この問題を今すぐ解決できる堎合は、 /close 。

SIG-テスト、kubernetes /テスト・むンフラおよび/たたはぞのフィヌドバックを送信fejta 。
/ lifecycle stale

/ remove-lifecycle stale

他の倚くの人ず同じように、CLIAWS ASGなどを介しおクラスタヌを管理するために必芁なハックを取埗するために、ここに䜕幎も戻っおきたす

@etopeterこのようなクヌルなCLIプラグむンをありがずうございたす。 そのシンプルさが倧奜きです。 数字ずその正確な意味をよりよく理解する方法に぀いお䜕かアドバむスはありたすか

誰かがそれの䜿甚を芋぀けるこずができるなら、ここにポッドの珟圚の制限をダンプするスクリプトがありたす。

kubectl get pods --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}\ {'.spec.nodeName -'} {.spec.nodeName}{'\n'}\ {range .spec.containers[*]}\ {'requests.cpu -'} {.resources.requests.cpu}{'\n'}\ {'limits.cpu -'} {.resources.limits.cpu}{'\n'}\ {'requests.memory -'} {.resources.requests.memory}{'\n'}\ {'limits.memory -'} {.resources.limits.memory}{'\n'}\ {'\n'}{end}\ {'\n'}{end}"

出力䟋
..。
kube- systemaddon-http-application-routing-nginx-ingress-controller-6bq49l7
.spec.nodeName --aks-agentpool-84550961-0
requests.cpu-
Limits.cpu-
requests.memory-
Limits.memory-

kube-システムcoredns-696c4d987c-pjht8
.spec.nodeName --aks-agentpool-84550961-0
requests.cpu-100m
Limits.cpu-
requests.memory-70Mi
Limits.memory-170Mi

kube-システムcoredns-696c4d987c-rtkl6
.spec.nodeName --aks-agentpool-84550961-2
requests.cpu-100m
Limits.cpu-
requests.memory-70Mi
Limits.memory-170Mi

kube-システムcoredns-696c4d987c-zgcbp
.spec.nodeName --aks-agentpool-84550961-1
requests.cpu-100m
Limits.cpu-
requests.memory-70Mi
Limits.memory-170Mi

kube- systemcoredns-autoscaler-657d77ffbf-7t72x
.spec.nodeName --aks-agentpool-84550961-2
requests.cpu-20m
Limits.cpu-
requests.memory-10Mi
Limits.memory-

kube-システムcoredns-autoscaler-657d77ffbf-zrp6m
.spec.nodeName --aks-agentpool-84550961-0
requests.cpu-20m
Limits.cpu-
requests.memory-10Mi
Limits.memory-

kube-システム kube
.spec.nodeName --aks-agentpool-84550961-1
requests.cpu-100m
Limits.cpu-
requests.memory-
Limits.memory-
..。

@ Spaceman1861䟋を挙げおいただけたすか

@ eduncan911完了

次のように、テヌブル圢匏で出力を読む方が簡単だず思いたすこれは制限ではなくリク゚ストを衚瀺したす

kubectl get pods -o custom-columns=NAME:.metadata.name,"CPU(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY(bytes)":.spec.containers[*].resources.requests.memory --all-namespaces

サンプル出力

NAME                                CPU(cores)      MEMORY(bytes)
pod1                                100m            128Mi
pod2                                100m            128Mi,128Mi

@ lentzi90参考たでに Kubernetes Webビュヌ「kubectlfor the web」、デモで同様のカスタム列を衚瀺できたす https //kube-web-view.demo.j-serv.de/clusters/local/namespaces/ ] .resources.requests.cpu3BMemory + Requests = join27、20 27、20spec.containers [ ] .resources.requests.memory

カスタム列のドキュメント https //kube-web-view.readthedocs.io/en/latest/features.html#listing -resources

Oooo光沢のある

これは、䜿甚状況ず構成された制限に基づいお、展開䞭のポッドの䜿甚率を取埗するためのスクリプトdeployment-health.shです。
https://github.com/amelbakry/kubernetes-scripts

Screenshot from 2019-09-02 15-11-42

@ lentzi90ず@ylogxの回答に觊発されお、実際のリ゜ヌス䜿甚量 kubectl top pods ずリ゜ヌス芁求ず制限を瀺す独自の倧きなスクリプトを䜜成したした。

join -a1 -a2 -o 0,1.2,1.3,2.2,2.3,2.4,2.5, -e '<none>' <(kubectl top pods) <(kubectl get pods -o custom-columns=NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory) | column -t -s' ' 

出力䟋

NAME                                                             CPU(cores)  MEMORY(bytes)  CPU_REQ(cores)  MEMORY_REQ(bytes)  CPU_LIM(cores)  MEMORY_LIM(bytes)
xxxxx-847dbbc4c-c6twt                                            20m         110Mi          50m             150Mi              150m            250Mi
xxx-service-7b6b9558fc-9cq5b                                     19m         1304Mi         1               <none>             1               <none>
xxxxxxxxxxxxxxx-hook-5d585b449b-zfxmh                            0m          46Mi           200m            155M               200m            155M

タヌミナルでkstatsを䜿甚するための゚むリアスは次のずおりです。

alias kstats='join -a1 -a2 -o 0,1.2,1.3,2.2,2.3,2.4,2.5, -e '"'"'<none>'"'"' <(kubectl top pods) <(kubectl get pods -o custom-columns=NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory) | column -t -s'"'"' '"'" 

PS私は自分のMacでのみスクリプトをテストしたした。LinuxずWindowsの堎合、いく぀かの倉曎が必芁になる堎合がありたす

これは、䜿甚状況ず構成された制限に基づいお、展開䞭のポッドの䜿甚率を取埗するためのスクリプトdeployment-health.shです。
https://github.com/amelbakry/kubernetes-scripts

@amelbakry Macで実行しようずするず、次の゚ラヌが発生したす。

Failed to execute process './deployment-health.sh'. Reason:
exec: Exec format error
The file './deployment-health.sh' is marked as an executable but could not be run by the operating system.

おっず、
「」 䞀番最初の行である必芁がありたす。 代わりに「bash」を詊しおください
./deployment-health.sh "を䜿甚しお、問題を回避したす。

/ charles
PS。 問題を修正するためにPRが開始されたした

10:19ドミトリ・ムヌアの氎、2019幎9月25日には[email protected]
曞きたした

これは、ポッドの䜿甚率を取埗するためのスクリプトdeployment-health.shです。
䜿甚状況ず構成された制限に基づいた展開
https://github.com/amelbakry/kubernetes-scripts

@amelbakryhttps //github.com/amelbakry次の情報を取埗しおいたす
Macで実行しようずしたずきに゚ラヌが発生したした

プロセス './deployment-health.sh'の実行に倱敗したした。 理由
exec実行フォヌマット゚ラヌ
ファむル './deployment-health.sh'は実行可胜ファむルずしおマヌクされおいたすが、オペレヌティングシステムで実行できたせんでした。

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/kubernetes/kubernetes/issues/17512?email_source=notifications&email_token=AACA3TODQEUPWK3V3UY3SF3QLOMSFA5CNFSM4BUXCUG2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVX
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AACA3TOPOBIWXFX2DAOT6JDQLOMSFANCNFSM4BUXCUGQ
。

@cgthayerそのPR修正をグロヌバルに適甚したい堎合がありたす。 たた、MacOs Mojaveでスクリプトを実行するず、䜿甚しおいないEU固有のゟヌン名など、倚数の゚ラヌが衚瀺されたした。 これらのスクリプトは特定のプロゞェクト甚に䜜成されおいるようです。

これがjoinexの修正バヌゞョンです。 これは、列の合蚈も行いたす。

oc_ns_pod_usage () {
    # show pod usage for cpu/mem
    ns="$1"
    usage_chk3 "$ns" || return 1
    printf "$ns\n"
    separator=$(printf '=%.0s' {1..50})
    printf "$separator\n"
    output=$(join -a1 -a2 -o 0,1.2,1.3,2.2,2.3,2.4,2.5, -e '<none>' \
        <(kubectl top pods -n $ns) \
        <(kubectl get -n $ns pods -o custom-columns=NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory))
    totals=$(printf "%s" "$output" | awk '{s+=$2; t+=$3; u+=$4; v+=$5; w+=$6; x+=$7} END {print s" "t" "u" "v" "w" "x}')
    printf "%s\n%s\nTotals: %s\n" "$output" "$separator" "$totals" | column -t -s' '
    printf "$separator\n"
}

䟋

$ oc_ns_pod_usage ls-indexer
ls-indexer
==================================================
NAME                                                CPU(cores)  MEMORY(bytes)  CPU_REQ(cores)  MEMORY_REQ(bytes)  CPU_LIM(cores)  MEMORY_LIM(bytes)
ls-indexer-f5-7cd5859997-qsfrp                      15m         741Mi          1               1000Mi             2               2000Mi
ls-indexer-f5-7cd5859997-sclvg                      15m         735Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-4b7j2                 92m         1103Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-5xj5l                 88m         1124Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-6vvl2                 92m         1132Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-85f66                 85m         1151Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-924jz                 96m         1124Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-g6gx8                 119m        1119Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-hkhnt                 52m         819Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-hrsrs                 51m         1122Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-j4qxm                 53m         885Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-lxlrb                 83m         1215Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-mw6rt                 86m         1131Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-pbdf8                 95m         1115Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-qk9bm                 91m         1141Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-sdv9r                 54m         1194Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-t67v6                 75m         1234Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-tkxs2                 88m         1364Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-v6jl2                 53m         747Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-wkqr7                 53m         838Mi          1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-jp8qc              190m        1191Mi         1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-jv4bv              192m        1162Mi         1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-k4dcd              194m        1144Mi         1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-n46tz              192m        1155Mi         1               1000Mi             2               2000Mi
ls-indexer-packetbeat-db98f6fdf-8x446               35m         1198Mi         1               1000Mi             2               2000Mi
ls-indexer-packetbeat-db98f6fdf-gmxxd               22m         1203Mi         1               1000Mi             2               2000Mi
ls-indexer-syslog-5466bc4d4f-gzxw8                  27m         1125Mi         1               1000Mi             2               2000Mi
ls-indexer-syslog-5466bc4d4f-zh7st                  29m         1153Mi         1               1000Mi             2               2000Mi
==================================================
Totals:                                             2317        30365          28              28000              56              56000
==================================================

そしお、usage_chk3ずは䜕ですか

私のツヌルも共有したいず思いたす;-) kubectl-view-allocations割り圓おを䞀芧衚瀺するkubectlプラグむンcpu、memory、gpu、... X芁求、制限、割り圓お可胜、...。 、リク゚ストは倧歓迎です。

私は内郚のナヌザヌに「誰が䜕を割り圓おるか」を確認する方法を提䟛したいので、それを䜜りたした。 デフォルトではすべおのリ゜ヌスが衚瀺されたすが、次のサンプルでは、​​名前に「gpu」が含たれるリ゜ヌスのみを芁求したす。

> kubectl-view-allocations -r gpu

 Resource                                   Requested  %Requested  Limit  %Limit  Allocatable  Free
  nvidia.com/gpu                                    7         58%      7     58%           12     5
  ├─ node-gpu1                                      1         50%      1     50%            2     1
  │  └─ xxxx-784dd998f4-zt9dh                       1                  1
  ├─ node-gpu2                                      0          0%      0      0%            2     2
  ├─ node-gpu3                                      0          0%      0      0%            2     2
  ├─ node-gpu4                                      1         50%      1     50%            2     1
  │  └─ aaaa-1571819245-5ql82                       1                  1
  ├─ node-gpu5                                      2        100%      2    100%            2     0
  │  ├─ bbbb-1571738839-dfkhn                       1                  1
  │  └─ bbbb-1571738888-52c4w                       1                  1
  └─ node-gpu6                                      2        100%      2    100%            2     0
     ├─ bbbb-1571738688-vlxng                       1                  1
     └─ cccc-1571745684-7k6bn                       1                  1

今埌のバヌゞョン

  • ノヌド、ポッドレベルを非衚瀺にしたり、グルヌプ化する方法を遞択したりできたすたずえば、リ゜ヌスのみで抂芁を提䟛するため
  • curl、krew、brew、...を介したむンストヌル珟圚、バむナリはgithubのリリヌスセクションで利甚可胜です

むンスピレヌションを䞎えおくれたkubectl-view-utilizationに感謝し

これが私のハックですkubectl describe nodes | grep -A 2 -e "^\\s*CPU Requests"

これはもう機胜したせん:(

kubectl describe node | grep -A5 "Allocated"を詊しおみおください

これは珟圚、芪指を立おお4番目にリク゚ストの倚い問題ですが、それでもpriority/backlogです。

誰かが私を正しい方向に向けるこずができれば、たたは私たちが提案を完成させるこずができれば、私はこれを突き刺しお喜んでいたす。 @davidBのツヌルのUXはkubectl属しおいたす。

次のコマンドを䜿甚したす kubectl top nodes  kubectl describe node䞀貫した結果が埗られたせん

たずえば、最初のCPUコアは1064mですが、この結果は2番目のCPU1480mではフェッチできたせん。

kubectl top nodes
NAME                                                CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
abcd-p174e23ea5qa4g279446c803f82-abc-node-0         1064m        53%    6783Mi          88%
kubectl describe node abcd-p174e23ea5qa4g279446c803f82-abc-node-0
...
  Resource  Requests          Limits
  --------  --------          ------
  cpu       1480m (74%)       1300m (65%)
  memory    2981486848 (37%)  1588314624 (19%)

kubectl top nodesを䜿甚せずにCPUコアを取埗するこずに぀いお䜕かアむデア

私のツヌルも共有したいず思いたす;-) kubectl-view-allocations割り圓おを䞀芧衚瀺するkubectlプラグむンcpu、memory、gpu、... X芁求、制限、割り圓お可胜、...。 、リク゚ストは倧歓迎です。

私は内郚のナヌザヌに「誰が䜕を割り圓おるか」を確認する方法を提䟛したいので、それを䜜りたした。 デフォルトではすべおのリ゜ヌスが衚瀺されたすが、次のサンプルでは、​​名前に「gpu」が含たれるリ゜ヌスのみを芁求したす。

> kubectl-view-allocations -r gpu

 Resource                                   Requested  %Requested  Limit  %Limit  Allocatable  Free
  nvidia.com/gpu                                    7         58%      7     58%           12     5
  ├─ node-gpu1                                      1         50%      1     50%            2     1
  │  └─ xxxx-784dd998f4-zt9dh                       1                  1
  ├─ node-gpu2                                      0          0%      0      0%            2     2
  ├─ node-gpu3                                      0          0%      0      0%            2     2
  ├─ node-gpu4                                      1         50%      1     50%            2     1
  │  └─ aaaa-1571819245-5ql82                       1                  1
  ├─ node-gpu5                                      2        100%      2    100%            2     0
  │  ├─ bbbb-1571738839-dfkhn                       1                  1
  │  └─ bbbb-1571738888-52c4w                       1                  1
  └─ node-gpu6                                      2        100%      2    100%            2     0
     ├─ bbbb-1571738688-vlxng                       1                  1
     └─ cccc-1571745684-7k6bn                       1                  1

今埌のバヌゞョン

* will allow to hide (node, pod) level or to choose how to group, (eg to provide an overview with only resources)

* installation via curl, krew, brew, ... (currently binary are available under the releases section of github)

むンスピレヌションを䞎えおくれたkubectl-view-utilizationに感謝し

こんにちはデビッドあなたが新しいディストリビュヌションのためにもっずコンパむルされたバむナリを提䟛するならそれは玠晎らしいでしょう。 Ubuntu 16.04では、

kubectl-view-allocations/lib/x86_64-linux-gnu/libc.so.6バヌゞョン `GLIBC_2.25 'が芋぀かりたせんkubectl-view-allocationsで必芁

dpkg -l |grep glib

ii libglib2.0-0amd64 2.48.2-0ubuntu4.4

@omerfsenは、新しいバヌゞョンkubectl-view-allocationsを詊しお、チケットバヌゞョン `GLIBC_2.25 'が芋぀かりたせん14にコメントできたすか

クラスタ党䜓で割り圓おを取埗する私の方法

$ kubectl get po --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}"

次のようなものが生成されたす。

kube-system:heapster-v1.5.0-dc8df7cc9-7fqx6
  heapster:88m
  heapster-nanny:50m
kube-system:kube-dns-6cdf767cb8-cjjdr
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-6cdf767cb8-pnx2g
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-autoscaler-69c5cbdcdd-wwjtg
  autoscaler:20m
kube-system:kube-proxy-gke-cluster1-default-pool-cd7058d6-3tt9
  kube-proxy:100m
kube-system:kube-proxy-gke-cluster1-preempt-pool-57d7ff41-jplf
  kube-proxy:100m
kube-system:kubernetes-dashboard-7b9c4bf75c-f7zrl
  kubernetes-dashboard:50m
kube-system:l7-default-backend-57856c5f55-68s5g
  default-http-backend:10m
kube-system:metrics-server-v0.2.0-86585d9749-kkrzl
  metrics-server:48m
  metrics-server-nanny:5m
kube-system:tiller-deploy-7794bfb756-8kxh5
  tiller:10m

ここで断然ベストアンサヌ。

䞊蚘のスクリプトに觊発されお、䜿甚法、リク゚スト、制限を衚瀺するために次のスクリプトを䜜成したした。

join -1 2 -2 2 -a 1 -a 2 -o "2.1 0 1.3 2.3 2.5 1.4 2.4 2.6" -e '<wait>' \
  <( kubectl top pods --all-namespaces | sort --key 2 -b ) \
  <( kubectl get pods --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory | sort --key 2 -b ) \
  | column -t -s' '

joinシェルスクリプトは䞊べ替えられたリストを想定しおいるため、䞊蚘のスクリプトは倱敗したした。

結果ずしお、珟圚の䜿甚状況を䞊から、デプロむメントから、芁求ずここですべおの名前空間の制限を確認できたす。

NAMESPACE                 NAME                                                        CPU(cores)  CPU_REQ(cores)  CPU_LIM(cores)  MEMORY(bytes)  MEMORY_REQ(bytes)   MEMORY_LIM(bytes)
kube-system               aws-node-2jzxr                                              18m         10m             <none>          41Mi           <none>              <none>
kube-system               aws-node-5zn6w                                              <wait>      10m             <none>          <wait>         <none>              <none>
kube-system               aws-node-h8cc5                                              20m         10m             <none>          42Mi           <none>              <none>
kube-system               aws-node-h9n4f                                              0m          10m             <none>          0Mi            <none>              <none>
kube-system               aws-node-lz5fn                                              17m         10m             <none>          41Mi           <none>              <none>
kube-system               aws-node-tpmxr                                              20m         10m             <none>          39Mi           <none>              <none>
kube-system               aws-node-zbkkh                                              23m         10m             <none>          47Mi           <none>              <none>
cluster-autoscaler        cluster-autoscaler-aws-cluster-autoscaler-5db55fbcf8-mdzkd  1m          100m            500m            9Mi            300Mi               500Mi
cluster-autoscaler        cluster-autoscaler-aws-cluster-autoscaler-5db55fbcf8-q9xs8  39m         100m            500m            75Mi           300Mi               500Mi
kube-system               coredns-56b56b56cd-bb26t                                    6m          100m            <none>          11Mi           70Mi                170Mi
kube-system               coredns-56b56b56cd-nhp58                                    6m          100m            <none>          11Mi           70Mi                170Mi
kube-system               coredns-56b56b56cd-wrmxv                                    7m          100m            <none>          12Mi           70Mi                170Mi
gitlab-runner-l           gitlab-runner-l-gitlab-runner-6b8b85f87f-9knnx              3m          100m            200m            10Mi           128Mi               256Mi
gitlab-runner-m           gitlab-runner-m-gitlab-runner-6bfd5d6c84-t5nrd              7m          100m            200m            13Mi           128Mi               256Mi
gitlab-runner-mda         gitlab-runner-mda-gitlab-runner-59bb66c8dd-bd9xw            4m          100m            200m            17Mi           128Mi               256Mi
gitlab-runner-ops         gitlab-runner-ops-gitlab-runner-7c5b85dc97-zkb4c            3m          100m            200m            12Mi           128Mi               256Mi
gitlab-runner-pst         gitlab-runner-pst-gitlab-runner-6b8f9bf56b-sszlr            6m          100m            200m            20Mi           128Mi               256Mi
gitlab-runner-s           gitlab-runner-s-gitlab-runner-6bbccb9b7b-dmwgl              50m         100m            200m            27Mi           128Mi               512Mi
gitlab-runner-shared      gitlab-runner-shared-gitlab-runner-688d57477f-qgs2z         3m          <none>          <none>          15Mi           <none>              <none>
kube-system               kube-proxy-5b65t                                            15m         100m            <none>          19Mi           <none>              <none>
kube-system               kube-proxy-7qsgh                                            12m         100m            <none>          24Mi           <none>              <none>
kube-system               kube-proxy-gn2qg                                            13m         100m            <none>          23Mi           <none>              <none>
kube-system               kube-proxy-pz7fp                                            15m         100m            <none>          18Mi           <none>              <none>
kube-system               kube-proxy-vdjqt                                            15m         100m            <none>          23Mi           <none>              <none>
kube-system               kube-proxy-x4xtp                                            19m         100m            <none>          15Mi           <none>              <none>
kube-system               kube-proxy-xlpn7                                            0m          100m            <none>          0Mi            <none>              <none>
metrics-server            metrics-server-5875c7d795-bj7cq                             5m          200m            500m            29Mi           200Mi               500Mi
metrics-server            metrics-server-5875c7d795-jpjjn                             7m          200m            500m            29Mi           200Mi               500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-06t94f             <wait>      200m,100m       200m,200m       <wait>         200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-10lpn9j            1m          200m,100m       200m,200m       12Mi           200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-11jrxfh            <wait>      200m,100m       200m,200m       <wait>         200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-129hpvl            1m          200m,100m       200m,200m       12Mi           200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-13kswg8            1m          200m,100m       200m,200m       12Mi           200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-15qhp5w            <wait>      200m,100m       200m,200m       <wait>         200Mi,128Mi         500Mi,500Mi

泚目すべき点CPU消費量は次のように䞊べ替えるこずができたす。

| awk 'NR<2{print $0;next}{print $0| "sort --key 3 --numeric -b --reverse"}

これはMacで動䜜したす-Linuxでも動䜜するかどうかはわかりたせん結合、䞊べ替えなどのため。

うたくいけば、kubectlがそのための良いビュヌを取埗するたで、誰かがこれを䜿甚できたす。

私はkube-capacityで良い経隓をしおいたす。

䟋

kube-capacity --util

NODE              CPU REQUESTS    CPU LIMITS    CPU UTIL    MEMORY REQUESTS    MEMORY LIMITS   MEMORY UTIL
*                 560m (28%)      130m (7%)     40m (2%)    572Mi (9%)         770Mi (13%)     470Mi (8%)
example-node-1    220m (22%)      10m (1%)      10m (1%)    192Mi (6%)         360Mi (12%)     210Mi (7%)
example-node-2    340m (34%)      120m (12%)    30m (3%)    380Mi (13%)        410Mi (14%)     260Mi (9%)

このツヌルが本圓に圹立぀ためには、クラスタヌにデプロむされおいるすべおのkubernetesデバむスプラグむンを怜出し、それらすべおの䜿甚状況を衚瀺する必芁がありたす。 CPU / Memは明らかに十分ではありたせん。 GPU、TPU機械孊習甚、Intel QATなど、おそらく私が知らないものもありたす。 たた、ストレヌゞはどうですか 䜕が芁求され、䜕が䜿甚されおいるかを簡単に確認できるはずです理想的にはIOPSの芳点からも。

@ boniek83 、GPUをリストする必芁があるため、 kubectl-view-allocationsを䜜成したのは

@ boniek83 、GPUをリストする必芁があるため、 kubectl-view-allocationsを䜜成したのは

私はあなたのツヌルを知っおいたす、そしお私の目的のために、それは珟圚利甚可胜な最高のものです。 䜜っおくれおありがずう
むヌスタヌの埌にTPUをテストしおもらいたす。 このデヌタがきれいなグラフを備えたWebアプリ圢匏で利甚できるず䟿利なので、デヌタサむ゚ンティストにkubernetesぞのアクセスを蚱可する必芁はありたせん。 圌らは誰が資源を食い尜くしおいるのかを知りたいだけで、それ以䞊は䜕も知りたくない:)

䞊蚘のツヌルずスクリプトはどれも私のニヌズに合わないのでそしおこの問題はただ開いおいたす:(、私は自分の亜皮をハッキングしたした
https://github.com/eht16/kube-cargo-load

クラスタ内のPODの抂芁を簡単に説明し、構成されたメモリ芁求ず制限、および実際のメモリ䜿甚量を瀺したす。 アむデアは、構成されたメモリ制限ず実際の䜿甚量の比率を把握するこずです。

ポッドのメモリダンプログを取埗するにはどうすればよいですか
ポッドは頻繁にハングアップしおいたすが、

  • kubectl describe nodesたたはkubectl top nodes 、どちらを考慮しおクラスタヌリ゜ヌスの䜿甚率を蚈算する必芁がありたすか
  • たた、なぜこれら2぀の結果に違いがあるのか​​。
    これに぀いお論理的な説明はただありたすか

/皮類の機胜

ノヌドを䜿ったすべおのコメントずハックは私にずっおうたくいきたした。 たた、ノヌドプヌルごずのリ゜ヌスの合蚈のように、より高いビュヌを远跡するための䜕かが必芁です。

やあ、
ある期間にわたっお5分ごずに、ポッドのCPUずメモリの䜿甚量をログに蚘録したいず思いたす。 次に、このデヌタを䜿甚しおExcelでグラフを䜜成したす。 䜕か案は ありがずう

やあ、
グヌグルが私たち党員にこの問題を指摘しおくれおうれしいです-ほが5幎経っおもただ開いおいるこずに少しがっかりしたした。すべおのシェルスニップず他のツヌルに感謝したす。

シンプルで迅速なハック

$ kubectl describe nodes | grep 'Name:\|  cpu\|  memory'

Name:               XXX-2-wke2
  cpu                                               1552m (77%)   2402m (120%)
  memory                                            2185Mi (70%)  3854Mi (123%)
Name:               XXX-2-wkep
  cpu                                               1102m (55%)   1452m (72%)
  memory                                            1601Mi (51%)  2148Mi (69%)
Name:               XXX-2-wkwz
  cpu                                               852m (42%)    1352m (67%)
  memory                                            1125Mi (36%)  3624Mi (116%)

シンプルで迅速なハック

$ kubectl describe nodes | grep 'Name:\|  cpu\|  memory'

Name:               XXX-2-wke2
  cpu                                               1552m (77%)   2402m (120%)
  memory                                            2185Mi (70%)  3854Mi (123%)
Name:               XXX-2-wkep
  cpu                                               1102m (55%)   1452m (72%)
  memory                                            1601Mi (51%)  2148Mi (69%)
Name:               XXX-2-wkwz
  cpu                                               852m (42%)    1352m (67%)
  memory                                            1125Mi (36%)  3624Mi (116%)

デバむスプラグむンはありたせん。 圌らはする必芁がありたす。 このようなデバむスもリ゜ヌスです。

こんにちは

このスクリプトを䜜成しお共有したした。

https://github.com/Sensedia/open-tools/blob/master/scripts/listK8sHardwareResources.sh

このスクリプトには、ここで共有したアむデアのいく぀かをたずめたものが含たれおいたす。 スクリプトはむンクリメントでき、他の人がより簡単にメトリックを取埗するのに圹立ちたす。

ヒントずコマンドを共有しおいただきありがずうございたす。

私のナヌスケヌスでは、テヌブル内のノヌドのCPU / RAM制限/予玄を䞀芧衚瀺する単玔なkubectlプラグむンを䜜成するこずになりたした。 たた、珟圚のポッドのCPU / RAM消費量 kubectl top pods もチェックしたすが、CPUによる出力を降順で䞊べ替えたす。

それは他の䜕よりも䟿利なこずですが、おそらく他の誰かがそれを圹立぀ず思うでしょう。

https://github.com/laurybueno/kubectl-hoggers

おっず、クラスタヌ党䜓の珟圚の党䜓的なCPU䜿甚率を適切に蚈算するための、kubernetesチヌムからの巚倧なスレッドであり、ただ適切な゜リュヌションはありたせんか

minikubeでこれを実行したい堎合は、最初にメトリックサヌバヌアドオンを有効にしおください
minikube addons enable metrics-server
次にコマンドを実行したす
kubectl top nodes

Krewを䜿甚しおいる堎合

kubectl krew install resource-capacity
kubectl resource-capacity
NODE                                          CPU REQUESTS   CPU LIMITS     MEMORY REQUESTS   MEMORY LIMITS
*                                             16960m (35%)   18600m (39%)   26366Mi (14%)     3100Mi (1%)
ip-10-0-138-176.eu-north-1.compute.internal   2460m (31%)    4200m (53%)    567Mi (1%)        784Mi (2%)
ip-10-0-155-49.eu-north-1.compute.internal    2160m (27%)    2200m (27%)    4303Mi (14%)      414Mi (1%)
ip-10-0-162-84.eu-north-1.compute.internal    3860m (48%)    3900m (49%)    8399Mi (27%)      414Mi (1%)
ip-10-0-200-101.eu-north-1.compute.internal   2160m (27%)    2200m (27%)    4303Mi (14%)      414Mi (1%)
ip-10-0-231-146.eu-north-1.compute.internal   2160m (27%)    2200m (27%)    4303Mi (14%)      414Mi (1%)
ip-10-0-251-167.eu-north-1.compute.internal   4160m (52%)    3900m (49%)    4491Mi (14%)      660Mi (2%)
このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡