本文是對k8s,kubectl經常使用命令的總結。node
kubectl [command] [TYPE] [NAME] [flags]
1 command:子命令,用於操做Kubernetes集羣資源對象的命令,如create, delete, describe, get,
apply等nginx
2 TYPE:資源對象的類型,如pod, service, rc, deployment, node等,能夠單數、複數以及簡寫(pod,
pods, po/service, services, svc)json
3 NAME:資源對象的名稱,不指定則返回全部,如get pod 會返回全部pod, get pod nginx,
只返回nginx這個podapi
資源對象類型列表 能夠用這個命令獲取到:bash
kubectl explain
或app
kubectl api-resourceside
名稱 | 簡寫 |
---|---|
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 |
特殊用法:jsonp
kubectl get pods pod1 pod2 kubectl get pod/pod1 rc/rc1 kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
主要包括對資源的建立、刪除、查看、修改、配置、運行等 kubectl --help 能夠查看全部子命令spa
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排序
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>