k8s 之kubectl 常用命令


kubectl [command] [TYPE] [NAME] [flags]

kubectl 常用語法如上,大部分都是由以下這些參數拼裝來的

command可選為creategetdescribedelete、applay、exec等,對資源進行操作

type:需要操作的資源類型,資源類型不區分大小寫,您可以指定單數、復數或縮寫形式,常用類型有node、pod、services、namespaces等   

name:指定資源的名稱。名稱區分大小寫。如果省略名稱,則顯示所有資源的詳細信息。

flags: 指定可選的參數。

command

create:創建資源

get:列出一個或多個資源

kubectl describe - 顯示一個或多個資源的詳細狀態,默認情況下包括未初始化的資源。

kubectl delete - 從文件、stdin 或指定標簽選擇器、名稱、資源選擇器或資源中刪除資源。

kubectl exec - 對 pod 中的容器執行命令。

kubectl apply - 以文件或標准輸入為准應用或更新資源。

kubectl cp  -復制文件或文件夾

 

name:

指定資源的名稱。名稱區分大小寫。 如果省略名稱,則顯示所有資源的詳細信息 kubectl get pods

在對多個資源執行操作時,你可以按類型和名稱指定每個資源,或指定一個或多個文件:

  • 要按類型和名稱指定資源:

    • 要對所有類型相同的資源進行分組,請執行以下操作:TYPE1 name1 name2 name<#>

      例子:kubectl get pod example-pod1 example-pod2

    • 分別指定多個資源類型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>

      例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1

  • 用一個或多個文件指定資源:-f file1 -f file2 -f file<#>

 

type:

kubectl api-resources 可以查詢所有的資源類型,其中SHORTNAMES是簡寫,我們也可以通過簡寫來對資源類型咨詢操作。也可通過NAMESPACED查看該資源類型是不是有命名空間

也可查看https://kubernetes.io/docs/reference/kubectl/overview/#resource-types查詢所有類型

flags

常用flags有以下內容,如果需要查看每個操作支持哪些flag,可查看https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands官方文檔

filename    -f:指定資源的文件名、目錄或 URL

container    -c:容器名稱,如果省略,則默認選擇pod中的第一個

all-namespaces     -A: 指定命令空間,如果省略,則查看默認命名空間的內容

selector   -l:支持  '=', '==', and '!='。(例如. -l key1=value1,key2=value2)

stdin   -i:標准輸入到容器中

tty    -t:標准是tty命令()

--sort-by      按xx排序

output    -o:格式化輸出,一般還需要加上其他參數,如下圖

 常用命令

 

# 以純文本輸出格式列出默認命令空間的所有 pod。
kubectl get pods

# 以純文本輸出格式列出所有 pod,並包含附加信息(如節點名)。
kubectl get pods -o wide
# 以純文本輸出格式列出所有命名空間的 pod,並包含附加信息
kubectl get pods -A -o wide

# 以純文本輸出格式列出具有指定名稱的副本控制器。提示:你可以使用別名 'rc' 縮短和替換 'replicationcontroller' 資源類型。
kubectl get replicationcontroller <rc-name>

# 以純文本輸出格式列出所有副本控制器和服務。
kubectl get rc,services

# 以純文本輸出格式列出所有守護程序集,包括未初始化的守護程序集。
kubectl get ds --include-uninitialized

# 列出在節點 server01 上運行的所有 pod
kubectl get pods --field-selector=spec.nodeName=server01

#查詢服務
kubectl get services

#查詢服務對應的端口
kubectl get services -A

#查詢集群節點(名稱、狀態、角色、版本等)
kubectl get nodes

#查詢集群節點詳細信息(CPU、當前節點的pod信息及cpu限制等)
kubectl describe nodes

 

 

 

 

# 顯示名稱為 <node-name> 的節點的詳細信息。
kubectl describe nodes <node-name>

# 顯示名為 <pod-name> 的 pod 的詳細信息。
kubectl describe pods/<pod-name>

# 顯示由名為 <rc-name> 的副本控制器管理的所有 pod 的詳細信息。
# 記住:副本控制器創建的任何 pod 都以復制控制器的名稱為前綴。
kubectl describe pods <rc-name>

# 描述所有的 pod,不包括未初始化的 pod
kubectl describe pods

 

 

# 使用 pod.yaml 文件中指定的類型和名稱刪除 pod。
kubectl delete -f pod.yaml

# 刪除所有帶有 '<label-key>=<label-value>' 標簽的 Pod 和服務。
kubectl delete pods,services -l <label-key>=<label-value>

# 刪除所有 pod,包括未初始化的 pod。
kubectl delete pods --all

 

# 從 pod <pod-name> 中獲取運行 'date' 的輸出。默認情況下,輸出來自第一個容器。
kubectl exec <pod-name> -- date

# 運行輸出 'date' 獲取在容器的 <container-name> 中 pod <pod-name> 的輸出。
kubectl exec <pod-name> -c <container-name> -- date

# 獲取一個交互 TTY 並運行 /bin/bash <pod-name >。默認情況下,輸出來自第一個容器。
kubectl exec -ti <pod-name> -- /bin/bash

 

#遞歸查詢容器鏡像
  • 使用 tr 將空格替換為新的行
  • 使用 sort 對結果排序
  • 使用 uniq 對鏡像使用計數

kubectl get pods --all-namespaces -o jsonpath="{..image}" |\ tr -s '[[:space:]]' '\n' |\ sort |\ uniq -c

 

參考資料

 

https://kubernetes.io/docs/reference/kubectl/overview/

https://kuboard.cn/learning/k8s-practice/admin/list-images.html#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM