1. 程式人生 > >kubernetes之kubectl命令用法總結

kubernetes之kubectl命令用法總結

常用 thead set 可選 顯示 file url scale accounts

本文是對k8s,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,

    只返回nginx這個pod

  • 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命令用法總結