本文是对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

名称简写
componentsstatusescs
daemonsetsds
deploymentdeploy
eventsev
endpointsep
horizontalpodautoscalershpa
ingressesing
jobs
limitrangeslimits
nodesno
namspacesns
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-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>

转载于:https://blog.51cto.com/m51cto/2344828

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐