kebectl命令介绍

kebectl命令介绍

evobot 925 2021-11-16

kubectl命令介绍

用法:kubectl [command] [TYPE] [NAME] [flags]

  • command:子命令,用于操作kubernets集群资源对象的命令,如createdeletedescribegetapply
  • TYPE:资源对象的类型,如pod,service,rc,deployment,node等,可以单数、复数以及简写(pod,pods,po/service,services,svc)
  • NAME:资源对象的名称,不指定则返回所有,如get pod会返回所有pod,get pod nginx只会返回nginx这个pod
  • flags:kubectl子命令的可选参数,例如-n指定namespace,-s指定apiserver的URL

de

资源对象类型列表可以用kubectl api-resources命令获取,部分类型如下表:

名称简写
componentsstatusescs
daemonsetsds
deploymentdeploy
eventsev
endpointsep
horizontalpodautoscalershpa
ingressesing
jobs
limitrangeslimits
nodesno
namespacesns
podspo
persistentvolumespv
persistentvolumeclaimspvc
resourcequotasquota
replicationcontrollersrc
secrets
serviceaccountssa
servicessvc

特殊用法:

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-files=<filename>从文件中获取自定义列名进行输出
json以JSON格式显示结果
jsonpath=<template>输出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.resourceVsersion
kubectl get pod --sort-by=.metadata.name

kubectl命令示例

  1. 创建资源对象

    根据yaml文件创建service和deployment:kubectl create -f my-service.yaml -f my-deploy.yaml

    也可以指定一个目录,这样可以一次性根据该目录下的所有yaml或json文件定义资源::kubectl create -f <dir>

  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=<label-name>

    删除所有pod:kubectl delete po --all

  5. 执行容器的命令

    在pod中执行某个命令,如date,如果不加pod-name,默认会选择第一个pod执行: kubectl exec <pod-name> date

    指定pod的某个容器执行命令:kubectl exec <pod-name> -c <container-name> date

    进入到pod的容器里:kubectl exec -it <pod-name> bash

  6. 查看容器日志: kubectl logs <pod-name>

    可以动态查看,类似tail -f: kubectl logs -f <pod-name> -c <container-name>


# k8s