kubernetes之kubectl命令用法總結
語法
kubectl [command] [TYPE] [NAME] [flags]
-
1 command:子命令,用於操作Kubernetes集群資源對象的命令,如create, delete, describe, get,
apply等 -
2 TYPE:資源對象的類型,如pod, service, rc, deployment, node等,可以單數、復數以及簡寫(pod,
pods, po/service, services, svc) -
3 NAME:資源對象的名稱,不指定則返回所有,如get pod 會返回所有pod, get pod nginx,
- 4 flags:kubectl子命令的可選參數,例如-n 指定namespace,-s 指定apiserver的URL
-
資源對象類型列表 可以用這個命令獲取到:
kubectl explain
或kubectl api-resources
名稱 | 簡寫 |
---|---|
componentsstatuses | cs |
daemonsets | ds |
deployment | deploy |
events | ev |
endpoints | ep |
horizontalpodautoscalers | hpa |
ingresses | ing |
jobs | |
limitranges | limits |
nodes | no |
namspaces | ns |
pods | po |
persistentvolumes | pv |
persistentvolumeclaims | pvc |
resourcequotas | quota |
replicationcontrollers | rc |
secrets | |
serviceaccounts | sa |
services | svc |
特殊用法:
kubectl get pods pod1 pod2 kubectl get pod/pod1 rc/rc1 kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
kubectl子命令
主要包括對資源的創建、刪除、查看、修改、配置、運行等 kubectl --help 可以查看所有子命令
kubectl參數 kubectl options 可以查看支持的參數,例如--namespace指定所在namespace
kubectl輸出格式
kubectl命令可以用多種格式對結果進行顯示,輸出格式通過-o參數指定:
-o支持的格式有
輸出格式 | 說明 |
---|---|
custom-columns=<spec> | 根據自定義列名進行輸出,逗號分隔 |
custom-columns-file=<filename> | 從文件中獲取自定義列名進行輸出 |
json | 以JSON格式顯示結果 |
jsonpath=<template> | 輸出jasonpath表達式定義的字段信息 |
jasonpath-file=<filename> | 輸出jsonpath表達式定義的字段信息,來源於文件 |
name | 僅輸出資源對象的名稱 |
wide | 輸出更多信息,比如會輸出node名 |
yaml | 以yaml格式輸出 |
舉例:
kubectl get pod -o wide
kubectl get pod -o yaml
kubectl get pod -o custom-columns=NAME:.metadata.name,RESC:.metadata.resourceVersion
kubectl get pod --sort-by=.metadata.name //按name排序
kubectl命令示例:
1) 創建資源對象
根據yaml文件創建service和deployment,在create和apply之間,我更傾向於apply,這是因為,如果更改了yaml文件,apply不用刪除就可應用變更。
kubectl create -f my-service.yaml -f my-deploy.yaml
kubectl apply -f my-service.yaml -f my-deploy.yaml
也可以指定一個目錄,這樣可以一次性根據該目錄下所有yaml或json文件定義資源 kubectl create -f <directory>
2) 查看資源對象查看所有pod
kubectl get pods
查看deployment和service
kubectl get deploy,svc
3) 描述資源對象顯示node的詳細信息
kubectl describe nodes <node-name>
顯示pod的詳細信息
kubectl describe pods/<pod-name>
顯示deployment管理的pod信息
kubectl describe pods <deployment-name>
4) 刪除資源對象基於yaml文件刪除
kubectl delete -f pod.yaml
刪除所有包含某個label的pod和service
kubectl delete po,svc -l name=<lable-name>
刪除所有pod
kubectl delete po --all
5) 執行容器的命令在pod中執行某個命令,如date
kubectl exec <pod-name> date //pod-name如果不加,默認會選擇第一個pod
指定pod的某個容器執行命令
kubectl exec <pod-name> date
進入到pod的容器裏
kubectl exec -it <pod-name> bash
6) 查看容器日誌
kubectl logs <pod-name>
可以動態查看,類似於tail -f
kubectl logs -f <pod-name> -c <container-name>
kubernetes之kubectl命令用法總結