网站首页 > 基础教程 正文
之前的文章分别介绍了k8s里面常用对象和架构,这篇文章主要从实战的角度,详细说一下kubectl 常用命令。kubectl 是资源管理的命令行工具,所有能力都是通过HTTP调用kube-apiserver 实现。
下面介绍一些工作中经常使用的kubectl 命令。
create
create是创建资源,主要是通过 yaml 文件(也支持json文件)创建Kubernetes资源。如下命令:
# kubectl create -f 指定yaml文件
如果资源名称出现冲突将会产生错误。create 也支持快速创建,比如直接创建一个deployment。
# kubectl create deployment nginx --image=nginx
get
get命令是获取资源状态,如获取dev命名空间内所有Pod列表
# kubectl get pods -n dev -owide
其中-owide会显示Pod IP以及所在宿主机等详细信息。除此之外还可以get 其他资源比如:service、pv、secret ,第三篇文章里面所有的资源都可以被get。
describe
get命令是获取资源的概览信息,如果想要了解资源的详细情况,可以通过describe命令。如获取一个Pod详细情况
# kubectl describe pod eded-1553526000-g29kx -ndev
从describe结果可以清楚地了解到当前Pod配置详情以及当前所处状态,在故障排查中非常重要。
delete
delete是删除资源,如删除某一个Pod
# kubectl delete pods eded-1553526000-7v8lr -n dev --grace-period=0 --force=true
其中grace-period指定优雅关闭时间,force表示是否强制删除。如果非强制删除,kubectl会一直同步等待Pod被删除后才结束,如果希望异步删除可以添加--wait=false参数。
我们还可以删除namespace下指定的所有资源,比如删除dev空间下所有pod。
# kubectl delete pod -ndev --all
exec
exec和docker的exec非常相似,都是进入容器内部执行命令。
# kubectl exec -it eded-1553526000-g29kx sh -ndev
这里sh是进入容器后执行的命令,此时必须保证容器内安装了shell,否则将抛出容器内没有对应命令的错误。
cp
cp是拷贝指令,可以将本地文件拷贝到容器里面,也可以支持反向拷贝。如果希望将本地文件a拷贝到Pod的tmp目录下,可以执行
# kubectl cp a.txt eded-1553526000-g29kx:/tmp/ -n dev
cp方法的本质是通过exec执行tar命令,所以容器必须内置tar,否则将无法完成拷贝,如果是从容器内拷贝文件到本地,首先在容器内执行”tar cf - 文件“,将文件归档后直接通过标准输出发送到本地,相反的,如果是上传文件到容器则是在容器内执行”tar -xf - -C 文件“解压归档文件。
log
如果希望查看容器的标准输出,和docker logs命令相似,可以通过kubectl logs查看,具体命令如下:
# kubectl logs -f --tail=200 eded-1553526000-g29kx -ndev
其中-f是指通过流的方式持续获取日志,tail则是显示最后多少行日志。
edit
edit命令可以修改资源的yaml文件,如果想对一个deployment的yaml进行修改可以执行,会进入一个vi的编辑页面
# kubectl edit deploy testdeploy -ndev
编辑完执行:wq保存并退出后,deployment将会立刻生效。
除了edit命令以外还可以通过patch、replace、apply等方式修改资源配置文件,其中patch是以打补丁的方式修改(提供一个yaml或者json的补丁文件),并且支持merge操作;replace命令相对于patch命令提供的补丁文件,replace则需要提供全量的更新文件;apply则更加灵活,如果生命的资源不存在则创建,如果已存在则更新资源。
scale 和 autoscale
上面的edit 命令可以编辑 spec 里面定义的各种属性,当然也包括副本数 replicas。除此之外,我们还可以通过scale 单独指定副本数。甚至可以通过autoscale 自动弹性伸缩,关于自动伸缩后续文章详细介绍。
kubectl scale deployment mysql --replicas=3
# kubectl autoscale deployment foo --min=2 --max=10 --cpu-percent=80
cordon和uncordon
cordon和uncordon是一对互逆操作,分别将节点置为”非调度“和”允许调度“状态。当我们在维护主机时,通常需要将节点设置为”非调度“状态,避免新的Pod分配到该主机上。如果需要立刻驱逐本节点上的Pod可以通过drain将主机标记为维护状态,那么这个上面的运行的Pod将会被驱逐到其他节点重新创建。
label 和 annotation
可以为指定的资源添加标签和注解。比如下面的命令为pod 添加标签和注解
# kubectl label pods my-pod new-label=awesome # 添加标签
# kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # 添加注解
我们还可以通过label 为特殊用途的Node 添加标签。
猜你喜欢
- 2024-10-10 Linux系统常用命令大全 linux系统常用命令大全详解
- 2024-10-10 Redis数据类型与常用指令示例 redis数据类型和用法
- 2024-10-10 深入理解Redis原理与应用,总结10个必定掌握要点,5分钟彻底看懂
- 2024-10-10 sqlserver数据库中的高级知识点有哪些?
- 2024-10-10 程序员的福音 - Apache Commons Exec
- 2024-10-10 Linux常用命令分类详解|文件搜索 linux命令分类总结
- 2024-10-10 linux性能工具perf工作原理简析 linux perl
- 2024-10-10 Python-调用系统命令或脚本,快速完成任务
- 2024-10-10 「Docker」命令使用大全,全集一览
- 2024-10-10 DOS常用命令集合 dos所有命令的命令格式
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)