kubectl 命令參數詳解與示例

kubectl 命令參數詳解與示例

kubectl 是 Kubernetes 的命令行工具,用于與 Kubernetes 集群交互。下面我將詳細介紹 kubectl 的主要命令參數,并提供相應的使用示例。

一、基礎命令

1. kubectl get - 獲取資源信息

常用參數

  • -n, --namespace: 指定命名空間
  • -o, --output: 輸出格式 (json|yaml|wide|name|custom-columns=…)
  • -w, --watch: 監聽資源變化
  • --show-labels: 顯示標簽
  • --sort-by: 按指定字段排序

示例

# 獲取默認命名空間的所有pod
kubectl get pods# 獲取kube-system命名空間的pod,顯示標簽
kubectl get pods -n kube-system --show-labels# 以yaml格式獲取pod信息
kubectl get pod my-pod -o yaml# 監聽pod狀態變化
kubectl get pods -w# 自定義列輸出
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName

2. kubectl describe - 顯示資源詳細信息

常用參數

  • -n, --namespace: 指定命名空間
  • -l, --selector: 根據標簽選擇器過濾

示例

# 描述特定pod
kubectl describe pod my-pod# 描述命名空間中的所有service
kubectl describe services -n kube-system# 使用標簽選擇器描述pod
kubectl describe pods -l app=nginx

3. kubectl create - 創建資源

常用參數

  • -f, --filename: 使用文件或URL創建
  • --dry-run=client: 試運行(不實際創建)
  • -o, --output: 輸出格式
  • --save-config: 保存配置到注解中

示例

# 從YAML文件創建資源
kubectl create -f deployment.yaml# 試運行創建deployment
kubectl create deployment my-nginx --image=nginx --dry-run=client -o yaml# 創建命名空間
kubectl create namespace test-ns

4. kubectl apply - 應用配置變更

常用參數

  • -f, --filename: 使用文件或URL
  • -k, --kustomize: 使用kustomization目錄
  • --prune: 刪除不再存在的資源
  • --dry-run=server: 服務器端試運行

示例

# 應用YAML配置
kubectl apply -f deployment.yaml# 使用kustomize
kubectl apply -k ./kustomize-dir# 試運行應用變更
kubectl apply -f deployment.yaml --dry-run=server

二、調試命令

1. kubectl logs - 查看容器日志

常用參數

  • -f, --follow: 實時跟蹤日志
  • --tail: 顯示最后N行日志
  • --since: 顯示特定時間后的日志(如5s, 2m, 3h)
  • -p, --previous: 查看前一個容器的日志(容器崩潰時)

示例

# 查看pod日志
kubectl logs my-pod# 實時跟蹤日志
kubectl logs -f my-pod# 查看最后50行日志
kubectl logs --tail=50 my-pod# 查看過去1小時的日志
kubectl logs --since=1h my-pod# 多容器pod中指定容器
kubectl logs my-pod -c my-container

2. kubectl exec - 在容器中執行命令

常用參數

  • -i, --stdin: 保持STDIN打開
  • -t, --tty: 分配TTY
  • -c, --container: 指定容器

示例

# 在pod中執行簡單命令
kubectl exec my-pod -- ls /# 交互式shell
kubectl exec -it my-pod -- /bin/bash# 在特定容器中執行命令
kubectl exec -it my-pod -c my-container -- /bin/sh

3. kubectl port-forward - 端口轉發

常用參數

  • --address: 綁定地址(默認為localhost)
  • --pod-running-timeout: 等待pod運行的最長時間

示例

# 將本地8080轉發到pod的80端口
kubectl port-forward my-pod 8080:80# 轉發到service
kubectl port-forward svc/my-service 8080:80# 綁定到所有網絡接口
kubectl port-forward --address 0.0.0.0 my-pod 8080:80

三、部署管理

1. kubectl rollout - 管理部署的滾動更新

子命令

  • history: 查看歷史
  • pause: 暫停
  • resume: 恢復
  • status: 查看狀態
  • undo: 回滾

示例

# 查看部署歷史
kubectl rollout history deployment/my-deployment# 查看特定修訂版本詳情
kubectl rollout history deployment/my-deployment --revision=2# 暫停部署
kubectl rollout pause deployment/my-deployment# 恢復部署
kubectl rollout resume deployment/my-deployment# 回滾到上一個版本
kubectl rollout undo deployment/my-deployment# 回滾到特定版本
kubectl rollout undo deployment/my-deployment --to-revision=2

2. kubectl scale - 擴縮容

常用參數

  • --current-replicas: 當前副本數驗證
  • --replicas: 目標副本數

示例

# 將deployment擴展到3個副本
kubectl scale --replicas=3 deployment/my-deployment# 基于當前副本數進行擴展
kubectl scale --current-replicas=2 --replicas=5 deployment/my-deployment

四、集群管理

1. kubectl config - 管理kubeconfig

常用子命令

  • current-context: 顯示當前上下文
  • get-contexts: 列出所有上下文
  • use-context: 切換上下文
  • set-cluster: 配置集群
  • set-credentials: 配置憑證

示例

# 查看當前配置
kubectl config view# 切換上下文
kubectl config use-context dev-cluster# 添加新集群配置
kubectl config set-cluster prod-cluster --server=https://prod.example.com

2. kubectl cluster-info - 顯示集群信息

常用參數

  • --dump: 轉儲當前集群狀態
  • --output: 輸出格式

示例

# 顯示集群基本信息
kubectl cluster-info# 顯示詳細集群信息
kubectl cluster-info dump

五、高級命令

1. kubectl patch - 部分更新資源

常用參數

  • --type: 補丁類型(merge|json|strategic)
  • -p, --patch: 補丁內容

示例

# 更新deployment的鏡像
kubectl patch deployment my-deployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"my-container","image":"nginx:1.19"}]}}}}'# 使用strategic merge patch
kubectl patch deployment my-deployment --type strategic -p '{"spec":{"replicas":5}}'

2. kubectl label - 管理資源標簽

常用參數

  • --overwrite: 覆蓋現有標簽
  • --list: 顯示現有標簽
  • --all: 選擇所有資源

示例

# 添加標簽
kubectl label pods my-pod env=prod# 覆蓋現有標簽
kubectl label pods my-pod env=staging --overwrite# 批量添加標簽
kubectl label pods --all env=test# 刪除標簽
kubectl label pods my-pod env-

3. kubectl annotate - 管理資源注解

常用參數

  • --overwrite: 覆蓋現有注解
  • --list: 顯示現有注解

示例

# 添加注解
kubectl annotate pods my-pod description="This is a test pod"# 查看注解
kubectl annotate pods my-pod --list# 刪除注解
kubectl annotate pods my-pod description-

六、資源管理

1. kubectl delete - 刪除資源

常用參數

  • -f, --filename: 使用文件刪除
  • --all: 刪除所有資源
  • --grace-period: 優雅刪除期限(秒)
  • --force: 強制刪除

示例

# 按名稱刪除pod
kubectl delete pod my-pod# 使用YAML文件刪除
kubectl delete -f deployment.yaml# 刪除命名空間下所有pod
kubectl delete pods --all -n test-ns# 強制刪除pod
kubectl delete pod my-pod --grace-period=0 --force

2. kubectl edit - 編輯資源

常用參數

  • -f, --filename: 使用文件
  • --output: 輸出格式
  • --record: 記錄當前命令到資源注解

示例

# 編輯deployment
kubectl edit deployment/my-deployment# 使用特定編輯器
KUBE_EDITOR="nano" kubectl edit deployment/my-deployment# 編輯時記錄命令
kubectl edit deployment/my-deployment --record

七、排錯命令

1. kubectl top - 顯示資源使用情況

常用參數

  • --containers: 顯示容器級別統計
  • --sort-by: 按指定字段排序

示例

# 查看節點資源使用
kubectl top nodes# 查看pod資源使用
kubectl top pods# 查看容器級別資源使用
kubectl top pods --containers# 按CPU排序
kubectl top pods --sort-by=cpu

2. kubectl cp - 在容器和本地系統間復制文件

常用參數

  • -c, --container: 指定容器

示例

# 從本地復制到pod
kubectl cp /local/path/file.txt my-pod:/remote/path/# 從pod復制到本地
kubectl cp my-pod:/remote/path/file.txt /local/path/# 指定容器復制
kubectl cp /local/path/file.txt my-pod:/remote/path/ -c my-container

八、插件管理

kubectl plugin - 管理插件

常用子命令

  • list: 列出已安裝插件
  • install: 安裝插件
  • uninstall: 卸載插件

示例

# 列出插件
kubectl plugin list# 安裝插件(插件名需以kubectl-開頭)
mv my-plugin /usr/local/bin/kubectl-my_plugin
chmod +x /usr/local/bin/kubectl-my_plugin# 使用插件
kubectl my-plugin

九、API資源管理

kubectl api-resources - 查看API資源

常用參數

  • --namespaced: 僅顯示命名空間資源
  • --verbs: 過濾支持的動詞
  • --sort-by: 排序字段

示例

# 查看所有API資源
kubectl api-resources# 查看命名空間資源
kubectl api-resources --namespaced=true# 查看支持create操作的資源
kubectl api-resources --verbs=create

十、自定義輸出

自定義列輸出

示例

# 自定義列顯示pod信息
kubectl get pods -o custom-columns="NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName,IP:.status.podIP"# 使用JSONPath表達式
kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.startTime}{"\n"}{end}'

十一、邊車模式

在Kubernetes中,要向已經運行的Pod添加臨時邊車容器,有幾種方法可以實現。需要注意的是,Kubernetes本身不支持直接修改正在運行的Pod的容器配置,因為Pod在Kubernetes中是 immutable(不可變)的。

方法1: 使用Ephemeral Containers (臨時容器) - Kubernetes 1.23+
從Kubernetes 1.23開始,臨時容器功能已穩定,這是官方推薦的向運行中Pod添加邊車容器的方法。

kubectl debug <pod-name> -it --image=<sidecar-image> --target=<container-name> --share-processes

示例:

kubectl debug my-pod -it --image=busybox:latest --target=main-container --share-processes

參數說明:

–image: 指定邊車容器使用的鏡像

–target: 指定目標容器,邊車將共享其命名空間

–share-processes: 允許邊車查看主容器的進程

方法2: 使用kubectl alpha debug (舊版本)
對于Kubernetes 1.18-1.22版本:

kubectl alpha debug <pod-name> -it --image=<sidecar-image> --share-processes

方法3: 通過修改Deployment/DaemonSet/StatefulSet
如果需要更持久的邊車容器,可以修改控制器定義:

編輯Deployment/DaemonSet/StatefulSet:

kubectl edit deployment <deployment-name>

在spec.template.spec.containers下添加邊車容器定義

保存后,Kubernetes會滾動更新Pod

方法4: 使用臨時Pod進行調試
如果只是需要臨時調試,可以創建一個新Pod并共享目標Pod的命名空間:

kubectl run debugger --image=busybox -it --rm --restart=Never --pod-running-timeout=1m --overrides='{"spec": {"shareProcessNamespace": true, "containers": [{"name": "debugger", "image": "busybox", "stdin": true, "tty": true, "securityContext": {"privileged": true}}]}}' --target <pod-name>

注意事項
臨時容器是短暫的,不會在Pod重啟后保留

需要確保API服務器啟用了臨時容器功能

某些安全策略可能會限制臨時容器的使用

對于生產環境,建議使用方法3(修改控制器定義)以獲得更可靠的結果

驗證邊車容器
添加后,可以使用以下命令驗證:


kubectl describe pod <pod-name>
kubectl exec -it <pod-name> -c <sidecar-container-name> -- /bin/sh

總結

kubectl 提供了豐富的命令和參數來管理 Kubernetes 集群。掌握這些參數可以幫助您:

  1. 高效地查詢和管理資源
  2. 調試和排查問題
  3. 自動化日常操作
  4. 定制輸出以滿足特定需求

建議結合 --help 參數查看各命令的詳細用法,如 kubectl get --help。隨著 Kubernetes 版本更新,部分參數可能會有所變化,請參考對應版本的官方文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899205.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899205.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899205.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

#vue中解決異步請求的競態

// composables/useFetchWithoutRace.js import { ref } from vue; import axios from axios;// 定義一個可復用的 Composition 函數&#xff0c;處理帶有競態控制的異步請求 export function useFetchWithoutRace() {// 定義響應式變量 latestRequestId&#xff0c;用于追蹤最…

如何在 Postman 中導入和導出 cURL 命令?

cURL 是一款廣受歡迎的命令行工具&#xff0c;專門用于執行 HTTP 請求。它在 Web 應用或 API 測試中極為實用&#xff0c;讓用戶得以借助在 API 開發者社區廣為流行的成熟語法&#xff0c;直接通過命令行與 API 進行交互。若你需要在多個環境下運行眾多 cURL 命令&#xff0c;可…

用python制作一個貪吃蛇小游戲

文章目錄 效果圖python源碼使用說明效果圖 只需要一百多行python代碼,就能制作一個貪吃蛇小游戲。效果如下: 操作說明: 你可以使用上下左右箭頭鍵來控制蛇的移動方向。蛇吃到食物后會變長,當蛇撞到墻壁或自己的身體時游戲結束。游戲結束后,你可以按 Q 退出游戲,或按 C…

react 15-16-17-18各版本的核心區別、底層原理及演進邏輯的深度解析

一、React 15&#xff08;2016&#xff09; 核心架構&#xff1a;Stack Reconciler&#xff08;棧協調器&#xff09; 工作原理&#xff1a; 同步遞歸渲染&#xff1a;采用深度優先遍歷方式遞歸處理 Virtual DOM&#xff0c;形成不可中斷的調用棧渲染流程&#xff1a;1. 觸發 …

微信小程序pdf預覽

1.示例圖 2.代碼 fileId&#xff1a;要預覽的pdf文件的id viewsFiles(fileId) {wx.showLoading({title: 加載中...});var params {url: "/common/getFile/" fileId ,//后端提供的接口method: "GET",responseType: "arraybuffer",callBack: …

雪花算法生成分布式唯一ID

雪花算法的結構是由時間戳、工作機器ID和序列號構成。要確保全局唯一&#xff0c;必須保證每個節點的機器ID唯一&#xff0c;并且同一毫秒內序列號不重復。在分庫分表的環境下使用雪花算法&#xff0c;機器ID的分配是關鍵。常見的做法是通過分布式系統協調&#xff0c;比如使用…

把手搭建vue前后端管理系統-TAB標簽通過pinia來進行管理(二十六)

目標&#xff1a;通過pinia的store來進行組件狀態的統一管理&#xff0c;這樣大家都可以共用到這個組件的狀態信息&#xff0c;就可以實現組件的聯動 一、添加側邊欄菜單的點擊事件&#xff1a; 1、CommonAside.vue里面添加click的事件 <el-menu-itemv-for"item in …

this(執行上下文)

&#x1f6a9; 這個專欄是一個 JS 進階系列&#xff0c;當前內容為 JS 執行機制&#xff0c;建議按順序閱讀 執行上下文&作用域 詞法環境&變量環境 this&#xff08;上下文對象&#xff09; &#x1f539; 概述 &#x1f30d; 前提概要&#xff1a; 在上文 執行上下文&…

計算機網絡——數據鏈路層的功能

目錄 物理鏈路 邏輯鏈路 封裝成幀&#xff08;組幀&#xff09; 幀定界 透明傳輸 SDU 差錯控制 可靠傳輸 流量控制 介質訪問控制 主機需要實現第一層到第五層的功能&#xff0c;而路由器這種節點只需要實現第一層到第三層的這些功能 假設左邊用戶需要給右邊用戶發送…

計算機網絡 --應用層

計算機網絡 --應用層 一、應用層概述 1. 功能 應用層為應用程序通信提供直接服務&#xff0c;這種服務是用戶能夠直接感知到的數據通信服務。核心功能包括&#xff1a; 文件傳輸&#xff1a;實現不同設備間文件的傳輸操作。訪問管理&#xff1a;對用戶訪問資源等進行管理。電…

企業級Linux服務器初始化優化全流程

實戰指南&#xff1a;企業級Linux服務器初始化優化全流程 本文基于某電商平臺百萬級并發服務器的真實調優案例整理&#xff0c;所有操作均在Rocky Linux8.5驗證通過&#xff0c;不同發行版請注意命令差異 一、服務器安全加固&#xff08;Situation-Task-Action-Result&#xff…

OpenAI流式解析

OpenAI 流式的代碼&#xff1a; 首選一般請使用os.getenv 去讀環境變量的內容 注意使用pip install python-dotenv 的安裝方法 load_dotenv 是這個庫提供的一個函數&#xff0c;用于讀取 .env 文件并將其中定義的鍵值對設置為系統的環境變量。 默認情況下&#xff0c;load_…

數據抓取的緩存策略:減少重復請求與資源消耗

在數據采集領域&#xff0c;爬蟲效率是決定項目成敗的關鍵因素之一。傳統的爬蟲架構往往因請求頻繁、資源消耗較大以及重復抓取等問題&#xff0c;導致效率低下。這些問題不僅拖慢了數據獲取的速度&#xff0c;還可能引發目標服務器的過載風險&#xff0c;甚至導致爬蟲被限制。…

k8s部署argocd

前言 ArgoCD是一個基于Kubernetes的GitOps持續交付工具&#xff0c;應用的部署和更新都可以在Git倉庫上同步實現&#xff0c;并自帶一個可視化界面。本文介紹如何使用GitHelmArgocd方式來實現在k8s中部署和更新應用服務&#xff1b; 安裝Argocd 準備一個k8s集群&#xff0c;然…

【Linux】MAC幀

目錄 一、MAC幀 &#xff08;一&#xff09;IP地址和MAC地址 &#xff08;二&#xff09;MAC幀格式 &#xff08;三&#xff09;MTU對IP協議的影響、 &#xff08;四&#xff09;MTU對UDP協議的影響 &#xff08;五&#xff09;MTU對TCP協議的影響 二、以太網協議 &…

MySQL - 數據庫基礎操作

SQL語句 結構化查詢語言(Structured Query Language)&#xff0c;在關系型數據庫上執行數據操作、數據檢索以及數據維護的標準語言。 分類 DDL 數據定義語言(Data Definition Language)&#xff0c;定義對數據庫對象(庫、表、列、索引)的操作。 DML 數據操作語言(Data Manip…

GraalVM原生鏡像支持:Spring Cloud應用啟動速度提升90%

引言&#xff1a;當Spring Cloud遇見GraalVM&#xff0c;啟動時間進入秒級時代 傳統Spring Cloud應用因動態類加載、反射等機制導致啟動緩慢&#xff08;通常超過30秒&#xff09;&#xff0c;在Serverless和Kubernetes滾動更新場景下成為性能瓶頸。Spring Cloud 2023.x通過**G…

【Unity3D】攝像機適配場景以及Canvas適配

目錄 寬度不變策略 高度不變策略 寬度不變策略 開發分辨率 750*1334 (寬高比:0.56) 真機分辨率 1170*2532 (寬高比:0.46) 真機寬高比<開發寬高比&#xff0c;采用寬度不變策略 理由&#xff1a;小于代表真機高度比開發高度更大&#xff0c;因此不需要擔心高度上…

HarmonyOS:基于axios實現文件的下載以及下載進度的監聽

#前言&#xff1a;項目開發中&#xff0c;避免不了實現文件下載功能&#xff0c;其他平臺的下載都很成熟&#xff0c;網上的例子也比較多&#xff0c;我就自己項目中實現的下載功能做個總結&#xff0c;你可以參考我的寫法實現功能。 下載封裝基于axios實現的下載功能。 1.下載…

簡單一周日期展示及選擇切換

醫院掛號&#xff0c;可能需要切換日期&#xff0c;選擇一周內的某一天。 提供一周內的日期段&#xff0c;通過點擊&#xff0c;切換到不同天。 簡單的js&#xff0c;html實例。切換玩調用后臺接口&#xff0c;實現后續邏輯。 使用Vue,插值語法&#xff0c;更簡單。 一周日歷…