kubectl命令行工具用法詳解node
kubect用法概述shell
kubectl命令行的語法以下: json
$ kubectl [command] [TYPE] [NAME] [flags]
能夠經過命令查看可操做的資源類型api
經過以下命令查看可操做性資源類型 # kubectl api-resources 經過以下命令查看可操做性資源的具體用法 # kubectl explain <資源名稱>
資源對象的名稱 | 縮寫 |
componentstatusesbash |
cs |
daemonsets | ds |
deployments | |
events | ev |
endpoints | ep |
horizontalpodautoscalers | hpa |
ingresses | ing |
jobs | |
limitranges | limits |
nodes | no |
namespaces | ns |
pods | po |
persistentvolumes | pv |
persistentvolumeclaims | pvc |
resourcequotas | quota |
replicationcontrollers | rc |
secrets | |
serviceaccounts | |
services | svc |
kubectl參數列表app
kubectl的子命令很是豐富,涵蓋了對Kubernetes集羣的主要操做,包括資源對象的建立、刪除、查看、修改、配置、運行等。ide
子命令 | 語法 | 說明 |
annotate | kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version] [options] |
添加或更新資源對象的annotation信息 |
api-versions | kubectl api-versions [flags] [options] | 列出當前系統支持的API版本列表,格式爲「group/version」 |
apply | kubectl apply (-f FILENAME | -k DIRECTORY) [options] | 從配置文件或stdin中對資源對象進行配置更新 |
attach | kubectl apply (-f FILENAME | -k DIRECTORY) [options] | 附着到一個正在運行的容器 |
atuoscale | kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [options] | 對Deployment、ReplicaSet或ReplicationController進行水平自動擴縮容的設置 |
cluster-info | kubectl cluster-info [flags] [options] | 顯示集羣信息 |
completion | kubectl completion SHELL [options] | 輸出shell命令的執行結果碼(bash或zsh) |
config | kubectl config SUBCOMMAND [options] | 修改kubeconfig文件 |
convert | kubectl convert -f FILENAME [options] | 轉換配置文件爲不一樣的API版本 |
cordon | kubectl cordon NODE [options] | 將Node標記爲unschedulable,即「隔離」出集羣調度範圍 |
delete | kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options] | 根據配置文件、stdin、資源名稱或label selector刪除資源對象 |
describe | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options] | 描述一個或多個資源對象的詳細信息 |
drain | kubectl drain NODE [options] | 首先將Node設置爲unschedulable,而後刪除該Node上運行的全部Pod,但不會刪除不禁apiserver管理的Pod |
edit | kubectl edit (RESOURCE/NAME | -f FILENAME) [options] | 編輯資源對象的屬性,在線更新 |
exec | kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...] [options] | 執行一個容器中的命令 |
explain | kubectl explain RESOURCE [options] | 對資源對象屬性的詳細說明 |
expose | kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [options] |
將已經存在的一個RC、Service、Deployment或Pod暴露爲一個新的Service |
get | kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] [options] |
顯示一個或多個資源對象的概要信息 |
label | kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version] [options] |
設置或更新資源對象的labels |
logs | kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options] | 屏幕打印 |
namespace | 已被kubectl config set-context替代 | |
patch | kubectl patch (-f FILENAME | TYPE NAME) -p PATCH [options] | 以merge形式對資源對象的部分字段的值進行修改 |
port-forward | kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] | 將本機的某個端口號映射到Pod端口號,一般用於測試工做 |
proxy | kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [options] | 將本機某個端口號映射到apiserver |
replace | kubectl replace -f FILENAME [options] | 從配置文件或stdin替換資源對象 |
rolling-update | kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [options] |
對RC進行滾動升級 |
rollout | kubectl rollout SUBCOMMAND [options] | 對Deployment進行管理,可用操做包括:history、pause、resume、undo、status |
run | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options] |
基於一個鏡在Kubernetes集羣上啓動一個Deployment |
scale | kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME) [options] |
擴容、縮容一個Deployment、ReplicaSet、RC或Job中Pod的數量 |
set | kubectl set SUBCOMMAND [options] | 設置資源對象的某個特定信息,目前僅支持修改容器的鏡像 |
taint | kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options] | 設置Node的taint信息,用於將特定的Pod調度到特定的Node的操做,爲Alpha版本功能 |
uncordon | kubectl uncordon NODE [options] | 將Node設置爲schedulable |
version | kubectl version [flags] [options] | 打印系統版本信息 |
kubectl輸出格式工具
經常使用的輸出格式示例以下:測試
顯示pod的更多信息jsonp
# kubectl get pod <pod-name> -o wide
以yaml格式顯示pod的詳細信息
# kubectl get pod <pod-name> -o yaml
另外,還能夠將輸出結果按某個字段排序,經過--strt-by參數以jsonpath表達式進行指定:
# kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
例如:按照名字進行排序
# kubectl get pods --sort-by=.metadata.name
kubectl操做示例
1. 建立資源對象
根據yaml配置文件一次性建立service和rc
# kubectl create -f my-service.yaml -f my-rc.yaml
根據<directory>目錄下全部.yaml、.yml、.json文件的定義進行建立操做
# kubectl create -f <directory>
2.查看資源對象
查看全部pod列表
# kubectl get pods
查看rc和service列表
# kubectl get rc,service
3. 描述資源對象
顯示Node的詳細信息
# kubectl describe nodes <node-name>
顯示Pod的詳細信息
# kubectl describe pods/<pod-name>
顯示有RC管理的Pod的信息
# kubectl describe pods <rc-name>
4.刪除資源對象
基於pod.yaml定義的名稱刪除Pod:
# kubectl delete -f pod.yaml
刪除全部包含某個label的Pod和service
# kubectl delete pods,services -l name=<label-name>
刪除全部Pod
# kubectl delete pods --all
5.執行容器的命令
執行Pod的date命令,默認使用Pod中的第1個容器執行
# kubectl exec <pod-name> date
指定Pod中某個容器執行date命令
# kubectl exec <pod-name> -c <container-name> date
經過bash得到Pod中某個容器的TTY,至關於登陸容器
# kubectl exec -it <pod-name> -c <container-name> /bin/bash
6.查看容器的日誌
查看容器輸出到stdout的日誌
# kubectl logs <pod-name>
跟蹤查看容器的日誌,至關於tail -f命令的結果
# kubectl logs -f <pod-name> -c <container-name>