kubectl?命令詳解
一、常用命令
1、獲取信息
#獲取節(jié)點(diǎn)信息 kubectl get nodes #獲取pod信息 kubectl get pods #獲取pod信息包含具體在哪個(gè)節(jié)點(diǎn) kubectl get pods -o wide
2、部署
# 部署pod kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17 # 發(fā)布service # --post=80 --target-post=8080 : pod的80端口映射容器的8080端口 # --type=NodePort : service會(huì)代理pod的80端口 kubectl expose deployment tomcat9 --port=8080 --target-port=8080 --type=NodePort # --dry-run 表示測(cè)試不實(shí)際運(yùn)行 # -o yaml 生成yaml # > tomcat.yaml 輸出到tomcat.yaml #根據(jù)kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17生成yaml并輸出到tomcat.yaml kubectl create deployment tomcat9 --image=tomcat:9.0.102-jre17 --dry-run -o yaml > tomcat.yaml # 應(yīng)用tomcat.yaml(根據(jù)上面命令生成的 tomcat.yaml), 實(shí)際上和kubectl create deployment tomcat6 --image=tomcat:9.0.102-jre17一樣的效果,只是yaml可以自己寫更靈活 kubectl apply -f tomcat.yaml
二、基本命令
使用以下語法從終端窗口運(yùn)行 kubectl 命令:
kubectl [command] [TYPE] [NAME] [flags]
其中 command
、TYPE
、NAME
和 flags
分別是:
command
:指定要對(duì)一個(gè)或多個(gè)資源執(zhí)行的操作,例如create
、get
、describe
、delete
。TYPE
:指定資源類型。資源類型不區(qū)分大小寫, 可以指定單數(shù)、復(fù)數(shù)或縮寫形式。NAME
:指定資源的名稱。名稱區(qū)分大小寫。 如果省略名稱,則顯示所有資源的詳細(xì)信息。例如:kubectl get pods
。flags
: 指定可選的參數(shù)。例如,可以使用-s
或--server
參數(shù)指定 Kubernetes API 服務(wù)器的地址和端口。
在對(duì)多個(gè)資源執(zhí)行操作時(shí),你可以按類型和名稱指定每個(gè)資源,或指定一個(gè)或多個(gè)文件,要按類型和名稱指定資源:
要對(duì)所有類型相同的資源進(jìn)行分組,請(qǐng)執(zhí)行以下操作:TYPE1 name1 name2 name<#>
。
例子:kubectl get pod example-pod1 example-pod2
分別指定多個(gè)資源類型:TYPE1/name1 TYPE1/name2 TYPE2/name3
TYPE<#>/name<#>。
例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1
用一個(gè)或多個(gè)文件指定資源:-f file1 -f file2 -f file<#>
例子:kubectl get -f ./pod.yaml
(為什么使用 YAML 而不是 JSON, 是因?yàn)?YAML 對(duì)用戶更友好, 特別是對(duì)于配置文件)
1、操作
操作名稱 | 描述 | 語法 | 示例 |
---|---|---|---|
get | 列出指定類型的資源 | kubectl get <資源類型> [flags] | kubectl get pods -n kube-system |
describe | 顯示資源詳細(xì)配置和狀態(tài) | kubectl describe <資源類型>/<資源名稱> | kubectl describe node/node01 |
create | 通過文件創(chuàng)建資源 | kubectl create -f <文件路徑> | kubectl create -f deployment.yaml |
apply | 通過文件更新/創(chuàng)建資源(冪等) | kubectl apply -f <文件路徑> | kubectl apply -f service.yaml |
delete | 刪除指定資源 | kubectl delete <資源類型>/<資源名稱> | kubectl delete configmap/app-config |
logs | 輸出容器日志流 | kubectl logs <Pod名稱> [-c 容器名] | kubectl logs nginx-pod --tail=100 |
exec | 在容器中執(zhí)行交互命令 | kubectl exec -it <Pod名稱> -- <命令> | kubectl exec -it redis-pod -- /bin/sh |
port-forward | 將本地端口映射到Pod端口 | kubectl port-forward <資源類型>/<名稱> <本地端口>:<目標(biāo)端口> | kubectl port-forward service/nginx 8080:80 |
scale | 調(diào)整Deployment副本數(shù) | kubectl scale deploy/<名稱> --replicas=<數(shù)量> | kubectl scale deploy/web-server --replicas=5 |
rollout | 管理資源部署,包含子命令status(查看狀態(tài))、history(查看歷史版本)、undo(回滾操作)、pause(暫停)、restart(恢復(fù)更新) | kubectl rollout undo <資源類型>/<名稱> | kubectl rollout undo deployment/frontend |
top | 顯示Pod/Node資源消耗 | kubectl top [pods|nodes] | kubectl top pods --sort-by=cpu |
edit | 直接編輯資源定義 | kubectl edit <資源類型>/<資源名稱> | kubectl edit deployment/backend |
label | 為資源添加/修改標(biāo)簽 | kubectl label <資源類型> <名稱> <鍵>=<值> | kubectl label nodes node01 disktype=ssd |
config | 切換kubeconfig上下文 | kubectl config use-context <上下文名稱> | kubectl config use-context prod-cluster |
patch | 通過JSON補(bǔ)丁修改資源 | kubectl patch <資源類型>/<名稱> -p '<補(bǔ)丁內(nèi)容>' | kubectl patch deploy/nginx -p '{"spec":{"replicas":3}}' |
cp | 在容器和本地間傳輸文件 | kubectl cp <源路徑> <目標(biāo)路徑> | kubectl cp default/nginx-pod:/log.txt ./local.log |
taint | 管理節(jié)點(diǎn)的調(diào)度污點(diǎn) | kubectl taint nodes <節(jié)點(diǎn)名> <鍵>=<值>:<效果> | kubectl taint nodes node01 app=test:NoSchedule |
cordon/uncordon | 禁止/允許節(jié)點(diǎn)調(diào)度Pod | kubectl cordon/uncordon <節(jié)點(diǎn)名> | kubectl cordon node02 |
drain | 安全驅(qū)逐節(jié)點(diǎn)上的Pod | kubectl drain <節(jié)點(diǎn)名> [--ignore-daemonsets] | kubectl drain node03 --delete-emptydir-data |
run | 快速運(yùn)行臨時(shí)容器 | kubectl run <名稱> --image=<鏡像> [-- <命令] | kubectl run debug-tool --image=busybox -- sleep 3600 |
diff | 對(duì)比集群配置與本地文件的差異 | kubectl diff -f <文件路徑> [flags] | kubectl diff -f updated-deployment.yaml |
expose | 將資源暴露為 Kubernetes 服務(wù) | kubectl expose <資源類型>/<名稱> [--port=端口] [--target-port=目標(biāo)端口] | kubectl expose deploy/nginx --port=80 --target-port=9376 |
proxy | 創(chuàng)建到 Kubernetes API 的代理通道 | kubectl proxy [--port=端口] [--address=地址] | kubectl proxy --port=8080 --address='192.168.1.100' |
set | 動(dòng)態(tài)修改資源配置(鏡像/環(huán)境變量/資源限制) | kubectl set <子命令> <資源類型>/<名稱> [參數(shù)] | kubectl set image deploy/nginx nginx=1.25.2-alpine |
explain | 查看資源配置字段的文檔說明 | kubectl explain [<資源類型>.<字段路徑>] [--recursive] | kubectl explain pod.spec.containers.resources.limits |
補(bǔ)充說明
- 表格中所有命令支持 -n <命名空間> 指定命名空間,--all-namespaces 查看全集群資源
- 資源類型支持縮寫(如 po=pods, deploy=deployments, svc=services)
- 使用 --dry-run=client -o yaml 可生成資源模板(如 kubectl create deploy test --image=nginx --dry-run=client -o yaml)
- 生產(chǎn)環(huán)境建議結(jié)合 kubectl diff -f <文件> 預(yù)演配置變更
- 資源名稱需替換為實(shí)際環(huán)境中的標(biāo)識(shí)符
- 可通過 kubectl explain <資源字段> 查看資源配置字段說明
- 時(shí)間敏感操作(如日志查看)可結(jié)合 --since 參數(shù)(如 --since=1h)
使用技巧與注意事項(xiàng)
多文件操作
# 批量應(yīng)用目錄下所有配置 -R:遞歸應(yīng)用某個(gè)目錄及其子目錄下的所有 YAML/JSON 文件 kubectl apply -f ./manifests/ -R
資源選擇器組合
# 聯(lián)合使用文件選擇與標(biāo)簽過濾 kubectl delete -f deploy.yaml -l app=critical
輸出格式化
# 生成資源配置模板(YAML 與 JSON 互轉(zhuǎn)) kubectl get deploy/nginx -o yaml > nginx-template.yaml
版本控制集成
# 記錄操作歷史(需配合 --record 參數(shù)) kubectl apply -f deploy.yaml --record
- 安全提示:使用 --force 刪除、drain 節(jié)點(diǎn)等高風(fēng)險(xiǎn)操作前,務(wù)必通過 --dry-run=server 驗(yàn)證影響范圍。
2、資源
資源名 | 縮寫名 | API 版本 | 按命名空間 | 資源類型 |
---|---|---|---|---|
Core/v1 資源 | ||||
bindings | - | v1 | true | Binding |
componentstatuses | cs | v1 | false | ComponentStatus |
configmaps | cm | v1 | true | ConfigMap |
endpoints | ep | v1 | true | Endpoints |
events | ev | v1 | true | Event |
limitranges | limits | v1 | true | LimitRange |
namespaces | ns | v1 | false | Namespace |
nodes | no | v1 | false | Node |
persistentvolumeclaims | pvc | v1 | true | PersistentVolumeClaim |
persistentvolumes | pv | v1 | false | PersistentVolume |
pods | po | v1 | true | Pod |
replicationcontrollers | rc | v1 | true | ReplicationController |
secrets | - | v1 | true | Secret |
services | svc | v1 | true | Service |
Apps 工作負(fù)載資源 | ||||
daemonsets | ds | apps/v1 | true | DaemonSet |
deployments | deploy | apps/v1 | true | Deployment |
statefulsets | sts | apps/v1 | true | StatefulSet |
replicasets | rs | apps/v1 | true | ReplicaSet |
Network 網(wǎng)絡(luò)資源 | ||||
ingresses | ing | networking.k8s.io/v1 | true | Ingress |
networkpolicies | netpol | networking.k8s.io/v1 | true | NetworkPolicy |
擴(kuò)展與安全資源 | ||||
horizontalpodautoscalers | hpa | autoscaling/v2 | true | HorizontalPodAutoscaler |
cronjobs | cj | batch/v1 | true | CronJob |
certificatesigningrequests | csr | certificates.k8s.io/v1 | false | CertificateSigningRequest |
poddisruptionbudgets | pdb | policy/v1 | true | PodDisruptionBudget |
storageclasses | sc | storage.k8s.io/v1 | false | StorageClass |
RBAC 權(quán)限資源 | ||||
clusterroles | - | rbac.authorization.k8s.io/v1 | false | ClusterRole |
rolebindings | - | rbac.authorization.k8s.io/v1 | true | RoleBinding |
關(guān)鍵特性標(biāo)注
API 版本差異
PodSecurityPolicy
(psp
) 使用已棄用的policy/v1beta1
(Kubernetes 1.25+ 移除)FlowSchema
/PriorityLevelConfiguration
使用測(cè)試版 APIflowcontrol.apiserver.k8s.io/v1beta2
命名空間隔離性
- 集群級(jí)資源(
false
):nodes
,persistentvolumes
,storageclasses
- 命名空間級(jí)資源(
true
):pods
,services
,configmaps
高頻縮寫對(duì)照
縮寫 | 全稱 | 使用場(chǎng)景 |
---|---|---|
ds | DaemonSet | 節(jié)點(diǎn)守護(hù)進(jìn)程部署 |
hpa | HorizontalPodAutoscaler | 自動(dòng)水平擴(kuò)縮容 |
pdb | PodDisruptionBudget | 維護(hù)期 Pod 中斷預(yù)算 |
使用建議
# 查詢資源縮寫(含擴(kuò)展資源) kubectl api-resources --verbs=list -o wide # 檢查特定資源的 API 版本兼容性 kubectl explain <resource> --api-version=<version>
3、可選參數(shù)
Flag 參數(shù) | 默認(rèn)值 | 適用命令 | 功能描述 |
---|---|---|---|
--namespace=<ns> | default | 所有命令 | 指定操作的命名空間,縮寫 -n |
--kubeconfig=<path> | ~/.kube/config | 所有命令 | 指定 Kubernetes 配置文件路徑 |
--output=<format> | text | get/describe 等 | 輸出格式控制(json , yaml , wide , name ),縮寫 -o |
--dry-run=<mode> | none | apply/create | 試運(yùn)行模式(client /server /none ),用于驗(yàn)證配置 |
--force | false | delete | 強(qiáng)制刪除資源(繞過優(yōu)雅刪除策略) |
--selector=<label> | 無 | 資源查詢命令 | 按標(biāo)簽篩選資源,縮寫 -l |
--field-selector=<query> | 無 | get | 按字段條件篩選資源(如 status.phase=Running ) |
--record | false | apply/set | 在資源注解中記錄命令操作歷史 |
--server=<address> | 無 | 所有命令 | 直接指定 Kubernetes API 服務(wù)器地址 |
--insecure-skip-tls-verify | false | 所有命令 | 跳過 TLS 證書驗(yàn)證(僅測(cè)試環(huán)境使用) |
--filename | 無 | apply /create /delete /diff /replace /get /explain 等 | 從 本地文件/目錄/URL/標(biāo)準(zhǔn)輸入流 加載資源配置,驅(qū)動(dòng)聲明式或命令式操作,縮寫 -f |
特殊場(chǎng)景參數(shù)擴(kuò)展表
Flag 參數(shù) | 典型使用場(chǎng)景 | 示例命令 |
---|---|---|
--watch / -w | 實(shí)時(shí)監(jiān)控資源變化 | kubectl get pods -w |
--timeout=<duration> | 設(shè)置命令超時(shí)時(shí)間(如 30s , 5m ) | kubectl delete pod --timeout=10s |
--all | 操作全部資源(慎用) | kubectl delete pods --all |
--show-labels | 顯示資源標(biāo)簽列 | kubectl get pods --show-labels |
--sort-by=<jsonpath> | 按字段排序輸出結(jié)果 | kubectl get pods --sort-by=.metadata.creationTimestamp |
使用說明
- 命令兼容性:不同子命令支持的 flags 存在差異(如
--replicas
僅適用于kubectl scale
) - 動(dòng)態(tài)查看幫助:
# 查看全局 flags kubectl options # 查看子命令專屬 flags kubectl <command> --help
參考資料:
到此這篇關(guān)于kubectl 命令的文章就介紹到這了,更多相關(guān)kubectl 命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Google?Kubernetes?Engine?集群實(shí)戰(zhàn)詳解
這篇文章主要為大家介紹了Google?Kubernetes?Engine?集群實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08最新青龍面板2.10.2搭建+XDD-PLUS的保姆級(jí)教程
這篇文章主要介紹了最新青龍面板2.10.2搭建+XDD-PLUS的保姆級(jí)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05tkestack/gpu-manager在k8s1.23版本之后的使用方法
這篇文章主要介紹了tkestack/gpu-manager在k8s1.23版本之后的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04k8s中如何實(shí)現(xiàn)pod自動(dòng)擴(kuò)縮容詳解
在實(shí)際生產(chǎn)系統(tǒng)中,經(jīng)常會(huì)遇到某個(gè)服務(wù)需要擴(kuò)容的場(chǎng)景,可能會(huì)遇到由于資源緊張或者工作負(fù)載降低而需要減少服務(wù)實(shí)例數(shù)量的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于k8s中如何實(shí)現(xiàn)pod自動(dòng)擴(kuò)縮容的相關(guān)資料,需要的朋友可以參考下2022-08-08k8s編排之DaemonSet知識(shí)點(diǎn)詳解
這篇文章主要為大家介紹了k8s編排之DaemonSet知識(shí)點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01centos搭建k8s環(huán)境詳細(xì)步驟及常用命令
kubernetes是google開源的容器集群管理系統(tǒng),提供應(yīng)用部署、維護(hù)、擴(kuò)展機(jī)制等功能,利用kubernetes能方便管理跨集群運(yùn)行容器化的應(yīng)用,這篇文章主要給大家介紹了關(guān)于centos搭建k8s環(huán)境詳細(xì)步驟及常用命令的相關(guān)資料,需要的朋友可以參考下2024-01-01Kubernetes?Ingress實(shí)現(xiàn)細(xì)粒度IP訪問控制
這篇文章主要為大家介紹了Kubernetes?Ingress實(shí)現(xiàn)細(xì)粒度IP訪問控制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04