k8s-kubectl常用命令

一、基础命令

1.1 get

查询集群所有资源的详细信息,resource包括集群节点、运行的Pod、Deployment、Service等。

1.1.1 查询Pod

kubectl get po -o wid

1.1.2 查询所有NameSpace

kubectl get namespace

1.1.3 查询NameSpace下Pod

kubectl get po --all-namespaces

1.1.4 查询NameSpace下所有Pod标签

kubectl get po --show-labels

1.1.5 以yaml输出pod/json信息

kubectl get po <podname> -o yaml

kubectl get po <podname> -o json

1.2 create

直接kubectl create -f filename即可创建文件内定义的resource。

kubectl create -f filename

1.3 expose

将资源如: Pod、Service、Deployment等公开为一个新的Service。

kubectl expose deployment deployname --port=81 --type=NodePort --target-port=80 --name=service-name

1.4 run

在集群中运行一个特定的镜像。

kubectl run deployname --image=nginx:latest

在创建时指定运行的命令:

kubectl run deployname -image=busybox --command -- ping baidu.com

1.5 set在对象上设置特定功能

将一个deployname的image改为镜像为1.0的image:

kubectl set image deploy deployname containername=containername:1.0

1.6 edit

edit提供了另一种更新resource源的操作。

kubectl edit po po-nginx-btv4j

1.7 explain

查看文档或参考资料。

kubectl explain pod

1.8 delete

根据 resource名或label删除resource。

kubectl delete po podname --now

kubectl delete -f nginx.yaml

kubectl delete deployment deployname

二、部署命令

2.1 *rolling-update*

滚动更新,启动一个新的Pod,启动成功后删除旧的Pod,直到升级完毕。

kubectl rolling-update poname -f newfilename

kubectl rolling-update poname -image=image:v2

升级回滚

kubectl rolling-update poname -rollback

2.2 rollout 管理资源的发布

查看指定资源的部署状态:

kubectl rollout status deployment/deployname

查看指定资源的发布历史:

kubectl rollout history deployment/deployname

回滚指定资源,默认回滚至上一个版本:

kubectl rollout undo deployment/test-nginx

2.3 scale 副本扩容或缩容

kubectl scale deployment deployname --replicas=newnumber

2.4 autoscale

自动扩缩容设置

kubectl autoscale deployment deployname --min=minnumber --max=maxnumber

三、集群管理命令

3.1 cordon

标记Node不可调度

kubectl cordon nodename

3.2 drain

将Node上的Pod迁移

kubectl drain nodename --ignore-daemonsets --ignore-emptydir

3.3 uncordon*

解除Node不可调度

kubectl uncordon nodename

3.4 cluster-info

查看在集群中运行的插件:

kubectl cluster-info

查看详细信息:

kubectl cluster-info dump

四、故障诊断和调试命令

4.1 describe

descirbe与get类似,但不支持-o,get查询的是配置信息,describe查询的是集群信息(包括状态)。

4.2 logs

输出Pod内日志,如果要获得tail -f的方式,需使用-f选项。

kubectl logs -f podname

4.3 exec

与docker的exec指令类似。如果一个Pod中多个容器,需要-c指令指定容器。

kubectl exec -it podname bash

kubectl exec -it podname -c containername bash

4.4 *port-forward*

转发一个或多个本地端口至一个pod。示例:本地端口5000,映射Pod端口

kubectl port-forward podname 5000:6000

4.5 *proxy*

运行一个proxy到Kubernetes api server。示例:控制节点开启HTTP Rest接口:

kubectl proxy -accept-hosts='.*' -port=8001 -address='0.0.0.0'

4.6 cp

拷贝文件或目录到容器:

cp filename newfilename

4.7 auth

检查授权

4.8 *attach*

查看Pod内容器运行日志,类似-logs 指令,多个容器需要指定容器名称。

kubectl attach podname -c containername

五、高级指令

5.1 replace

对资源进行更新,如更新替换pod。

kubectl replace -f filename

5.2 apply

使用yaml中变更的配置,增量资源。apply不会删除原有resource,然后创建新的 。**apply直接在原有resource的基础上进行更新。**同时kubectl apply还会在resource中添加一条注释,标记当前的apply,类似于git操作。

kubectl apply -f

5.3 patch

对容器属性修改,但是不删除容器,直接对容器修改。

kubectl patch pod podname -p '{"metadata":{"labels":{"app":"nginx2"}}}'

六、设置命令

6.1 label

更新资源上的标签:

kubectl label pods my-pod new-label=newlabel

6.2 annotate

更新资源上的注释:

kubectl annotate pods my-pod icon-url=http://......

6.3 completion用于实现kubectl工具自动补全

相关推荐
杨DaB14 分钟前
【SpringBoot】Swagger 接口工具
java·spring boot·后端·restful·swagger
YA33314 分钟前
java基础(九)sql基础及索引
java·开发语言·sql
桦说编程34 分钟前
方法一定要有返回值 \ o /
java·后端·函数式编程
小李是个程序1 小时前
登录与登录校验:Web安全核心解析
java·spring·web安全·jwt·cookie
David爱编程1 小时前
Java 创建线程的4种姿势,哪种才是企业级项目的最佳实践?
java·后端
Agome991 小时前
Docker之自定义jkd镜像上传阿里云
阿里云·docker·容器
hrrrrb2 小时前
【Java Web 快速入门】十一、Spring Boot 原理
java·前端·spring boot
Java微观世界2 小时前
Object核心类深度剖析
java·后端
MrSYJ2 小时前
为什么HttpSecurity会初始化创建两次
java·后端·程序员
hinotoyk2 小时前
TimeUnit源码分享
java