常用命令详解
语法
$ 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