kubectl常用命令详解

常用命令详解

语法

$ kubectl [command] [TYPE] [NAME] [flags]

资源对象

kubectl api-resources

全局参数

kubectl options [-n] [-s] [-v]

资源管理

创建资源

# 创建资源
kubectl create -f foo.yaml 
# 创建一个deplpyme
kubectl create deployment my-dep --image=busybox  
# 创建一个svc,暴露 nginx 这个rc
kubectl expose rc nginx --port=80 --target-port=8000    

更新资源

# 将foo.yaml中描述的对象扩展为3个
kubectl scale --replicas=3 -f foo.yaml   
# 增加description='my frontend'备注,已有保留不覆盖
kubectl annotate pods foo description='my frontend' 
# 增加status=unhealthy 标签,已有则覆盖
kubectl label --overwrite pods foo status=unhealthy        

删除资源

# 删除一个配置文件对应的资源对象
kubectl delete -f xxx.yaml      
# 删除名字为baz或foo的pod和service  
kubectl delete pod,service baz foo    
# -l 参数可以删除包含指定label的资源对象     
kubectl delete pods,services -l name=myLabel 
# 强制删除一个pod,在各种原因pod一直terminate不掉的时候很有用
kubectl delete pod foo --grace-period=0 --force 

查看资源

get
# Usage:
  kubectl get
[(-o|--output=)](TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] 
[options]
# Examples: 
# 列出当前NS中所有service资源
kubectl get services     
# 列出集群所有NS中所有的Pod
kubectl get pods --all-namespaces   
# -o wide也比较常用,可以显示更多资源信息,比如pod的IP等
kubectl get pods -o wide       
# 可以直接指定资源名查看
kubectl get deployment my-dep   
# --watch 参数可以监控资源的状态,在状态变换时输出。在跟踪服务部署情况时很有用
kubectl get deployment my-dep --watch  
# 查看yaml格式的资源配置,这里包括资实际的status,可以用--export排除
kubectl get pod my-pod -o yaml       
# 查看所有带有标签app: nginx的pod
kubectl get pod my-pod -l app=nginx           
describe
# Usage:
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]
# Examples: 
# 查看节点my-node的详细信息
kubectl describe nodes my-node   
# 查看pod my-pod的详细信息
kubectl describe pods my-pod      

部署管理

查看部署deployment

 # Examples: 
 kubectl get deployment  -n kube-system

删除部署deployment

  # Examples: 
  kubectl delete deployment kubernetes-dashboard -n kube-system 

存储

动态预分配 PersistentVolume

# pvc-demo.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-demo
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

在您使用 kubectl apply -f pvc-demo.yaml 创建此 PersistentVolumeClaim 后,Kubernetes 会动态创建对应的 PersistentVolume 对象。以下示例展示了已创建的 PersistentVolume。

查看 PersistentVolume

kubectl get PersistentVolume --all-namespaces

执行命令

# Usage:
kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options]
# Examples:
# 对my-pod执行ls命令
kubectl exec my-pod ls 
# 进入pod的shell,并打开伪终端和标准输入
kubectl exec -t -i nginx-78f5d695bd-czm8z bash 

文件传输

# Usage:
kubectl cp   [options]
# Examples:  
# 拷贝宿主机本地文件夹到pod
kubectl cp /tmp/foo_dir :/tmp/bar_dir  
# 指定namespace的拷贝pod文件到宿主机本地目录
kubectl cp /:/tmp/foo /tmp/bar
# 对于多容器pod,用-c指定容器名
kubectl cp /tmp/foo :/tmp/bar -c  

日志查看

# Usage:
  kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options]
# Examples: 
kubectl logs my-pod                              
# 输出一个单容器pod my-pod的日志到标准输出
kubectl logs nginx-78f5d695bd-czm8z -c nginx     
# 输出多容器pod中的某个nginx容器的日志
kubectl logs -l app=nginx                        
# 输出所有包含app-nginx标签的pod日志
kubectl logs -f my-pod                           
# 加上-f参数跟踪日志,类似tail -f
kubectl logs my-pod  -p                          
# 输出该pod的上一个退出的容器实例日志。在pod容器异常退出时很有用
kubectl logs my-pod  --since-time=2018-11-01T15:00:00Z
# 指定时间戳输出日志            
kubectl logs my-pod  --since=1h 
# 指定时间段输出日志,单位s/m/h

  转载请注明: ForwardXu kubectl常用命令详解

 上一篇
helm v3 安装以及使用指南 helm v3 安装以及使用指南
helm v3 安装以及使用指南安装 helm这里参考官方文档 安装 helm helm 此时已发布了 v3,本篇文章关于 helm 安装及使用指南以 helm v3 为基础。 helm 在 helm v2 时分为客户端 (helm cl
2020-07-25
下一篇 
二叉树高频面试题和答案 二叉树高频面试题和答案
二叉树高频面试题和答案先上二叉树的数据结构: class TreeNode{ int val; //左孩子 TreeNode left; //右孩子 TreeNode right; } 二叉树的题目
2019-04-09
  目录