kubectl常用命令

1 篇文章 0 订阅
1 篇文章 0 订阅

命令详情

1、Help

在这里插入图片描述

2. get

get命令用于获取集群的一个或一些resource信息,kubectl可以列出集群所有resource的详细。resource包括集群节点、运行的pod,ReplicationController,service等

kubectl get [(-o|--output=)json|yaml|wide|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags] [flags]
  • 获取pod信息
kubectl get po
  • 获取namespace信息
kubectl get namespace
  • 类似可以使用"kubectl get rc”, “kubectl get svc”, “kubectl get nodes”等获取其他resource信息
  • 使用选项“-o”
# 以yaml格式输出pod的详细信息
kubectl get po <podname> -o yaml 
# 以json格式输出pod的详细信息
kubectl get po <podname> -o json 
  • 使用”-o=custom-columns=“定义直接获取指定内容的值
kubectl get po <podName> -o=custom-columns=LABELS:.metadata.labels.app

3. describe

describe类似于get,同样用于获取resource的相关信息。不同的是,get获得的是更详细的resource个性的详细信息,describe获得的是resource集群相关的信息.

kubectl describe po <podName>

4. create

kubectl命令用于根据文件或输入创建集群resource

kubectl create -f <fileName>.yaml

5. replace

replace命令用于对已有资源进行更新、替换

kubectl replace -f <fileName>.yaml 

6. patch

一个容器已经在运行,这时需要对一些容器属性进行修改,又不想删除容器,或不方便通过replace的方式进行更新.

如前面创建pod的label是app=nginx-2,如果在运行过程中,需要把其label改为app=nginx-3,这patch命令如下.

kubectl patch pod rc-nginx-2-kpiqt -p '{"metadata":{"labels":{"app":"nginx-3"}}}'

7. edit

edit提供了另一种更新resource源的操作,通过edit能够灵活的在一个common的resource基础上,发展出更过的significant resource

kubectl edit po <podName>

8. Delete

根据resource名或label删除resource

kubectl delete -f <fileName>.yaml 
kubectl delete po <podName>
kubectl delete po -lapp=<lableName>

9. apply

apply命令提供了比patch,edit等更严格的更新resource的方式

kubectl apply -f <fileName>

10. logs

logs命令用于显示pod运行中,容器内程序输出到标准输出的内容

kubectl logs <podName>
eg:
# 输出多容器pod中的某个nginx容器的日志
kubectl logs <podName> -c nginx 
# 输出所有包含app-nginx标签的pod日志
kubectl logs -l app=nginx 
# 加上-f参数跟踪日志,类似tail -f
kubectl logs -f my-pod 
# 输出该pod的上一个退出的容器实例日志。在pod容器异常退出时很有用
kubectl logs my-pod -p 
# 指定时间戳输出日志
kubectl logs my-pod --since-time=2018-11-01T15:00:00Z 
# 指定时间段输出日志,单位s/m/h
kubectl logs my-pod --since=1h 

11. rolling-update

rolling-update是一个非常重要的命令,对于已经部署并且正在运行的业务,rolling-update提供了不中断业务的更新方式。rolling-update每次起一个新的pod,等新pod完全起来后删除一个旧的pod,然后再起一个新的pod替换旧的pod,直到替换掉所有的pod

rolling-update需要确保新的版本有不同的name,Version和label,否则会报错 。

kubectl rolling-update rc-nginx-2 -f rc-nginx.yaml 

如果在升级过程中,发现有问题还可以中途停止update,并回滚到前面版本

kubectl rolling-update rc-nginx-2 —rollback 

12. scale

scale用于程序在负载加重或缩小时副本进行扩容或缩小,如前面创建的nginx有两个副本,可以轻松的使用scale命令对副本数进行扩展或缩小

kubectl scale rc <podName> —replicas=<数量>

13. autoscale

scale虽然能够很方便的对副本数进行扩展或缩小,但是仍然需要人工介入,不能实时自动的根据系统负载对副本数进行扩、缩。autoscale命令提供了自动根据pod负载对其副本进行扩缩的功能。

autoscale命令会给一个rc指定一个副本数的范围,在实际运行中根据pod中运行的程序的负载自动在指定的范围内对pod进行扩容或缩容

kubectl autoscale rc <podName> —min=1 —max=4 

14. cordon, drain, uncordon

# 标记 my-node 不可调度
kubectl cordon my-node                                              
# 清空 my-node 以待维护
kubectl drain my-node                                                 
# 标记 my-node 可调度
kubectl uncordon my-node                                              

15. attach

attach命令类似于docker的attach命令,可以直接查看容器中以daemon形式运行的进程的输出,效果类似于logs -f,退出查看使用ctrl-c。如果一个pod中有多个容器,要查看具体的某个容器的的输出,需要在pod名后使用-c containers name指定运行的容器

kubectl attach kube-dns-v9-rcfuk -c skydns —namespace=kube-system 

16. exec

exec命令同样类似于docker的exec命令,为在一个已经运行的容器中执行一条shell命令

kubectl exec <podName>
eg:
# 对my-pod执行ls命令
kubectl exec my-pod ls 
# 进入pod的shell,并打开伪终端和标准输入
kubectl exec -t -i nginx-78f5d695bd-czm8z bash 

17. port-forward

kubectl port-forward 允许使用资源名称(例如 pod 名称)来选择匹配的 pod 来进行端口转发。

kubectl port-forward <podName> <port>:<port>
eg:
kubectl port-forward redis-master-765d459796-258hz 7000:6379 

18. proxy

使用kubectl proxy命令就可以使API server监听在本地的端口

kubectl proxy --port=<port> &

19. run

类似于docker的run命令,直接运行一个image

kubectl run <name> --image=<imageName> --port=<port>

20. label

为kubernetes集群的resource打标签,如前面实例中提到的为rc打标签对rc分组

kubectl label pods <podName> <labelName>=<labelValue>
eg:
# 名为foo的Pod添加label unhealthy=true
kubectl label pods foo unhealthy=true
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值