Kubernetes容器編排技術---kubectl命令行工具用法詳解(三)

kubectl命令行工具用法詳解node

kubect用法概述shell

  kubectl命令行的語法以下:  json

$ kubectl [command] [TYPE] [NAME] [flags]
  •  command:子命令,用於操做Kubernetes集羣資源對象的命令,例如create、delete、describe、get、apply等。
  •  TYPE:資源對象的類型,區分大小寫,能以單數形式、負數形式或者簡寫形式表示。
  •  NAME:  資源對象的名稱,區分大小寫。若是不指定名稱,則系統將返回屬於TYPE的所有對象的列表。
  •  flags:kubectl子命令的可選參數

能夠經過命令查看可操做的資源類型api

經過以下命令查看可操做性資源類型
# kubectl api-resources
經過以下命令查看可操做性資源的具體用法
# kubectl explain <資源名稱>

 

kubectl可操做的資源對象類型
                     資源對象的名稱                                縮寫          

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

kubectl子命令詳解
子命令 語法 說明
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>
相關文章
相關標籤/搜索