前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Kubernetes(k8s)-常用命令(kubectl命令)

Kubernetes(k8s)-常用命令(kubectl命令)

作者头像
运维小路
发布2025-03-03 22:06:17
发布2025-03-03 22:06:17
2700
代码可运行
举报
文章被收录于专栏:运维小路
运行总次数:0
代码可运行

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们到目前为止已经将了很多Kubernetes的资源,对于我们操作这些资源的命令也很多,今天就来给大家一个总结。

获取资源信息

kubectl get <resource>: 列出某种类型的所有资源。例如,kubectl get pods 会列出默认命名空间所有的 Pods。

当然这个查询只能查询到最一些名字,时间等比较简单的信息。如果想要查询比较详细的信息则可以使用 -o yaml(也可以是json) 参数,我们前面讲过的备份也是通过这个参数。

代码语言:javascript
代码运行次数:0
复制
kubectl get pod  etcd-master01 -n kube-system  -o yaml

我们在查询Pod的时候,有的时候并知道他在哪个命名空间,则我们可以使用-A参数(早期的版本还需要必须使用--all-namespaces参数),然后使用grep方式进行过滤。

代码语言:javascript
代码运行次数:0
复制
kubectl get pod -A |grep apiserver

还有的是需要确定Pod对应的节点等信息,可以添加-o wide参数。

代码语言:javascript
代码运行次数:0
复制
kubectl get pod -o wide

kubectl describe <resource> <name>:显示某个具体资源的详细信息。例如,kubectl describe pod my-pod。这个主要用于查询资源的event事件,进行检查资源状态。

以上无论是get还是describe,后面的资源类型我们前面讲过的大部分资源都可以使用。具体哪些资源可以使用 kubectl api-resources获取。

创建和更新资源

kubectl apply -f <file>: 根据指定的 YAML 或 JSON 文件创建或更新资源。例如,kubectl apply -f deployment.yaml,可用于创建和更新。

kubectl create -f <file>: 根据指定的 YAML 或 JSON 文件创建资源。与 apply 不同,create 仅用于创建操作。

kubectl edit <resource> <name>: 编辑集群中的资源。这将打开一个文本编辑器供您修改当前资源的配置。

kubectl patch <resource> <name>: 更新某部分资源,这里的资源一般是这个更新这个资源的局部信息,比如更新副本数量:

代码语言:javascript
代码运行次数:0
复制
kubectl patch deployment/my-deployment --type='merge' -p '{"spec":{"replicas":3}}'

删除资源

kubectl delete <resource> <name>: 删除某个具体资源。例如,kubectl delete pod my-pod

kubectl delete -f <file>: 根据指定的 YAML 或 JSON 文件删除资源。

与 Pod 和容器交互

kubectl exec <pod> -- <command>: 在指定的 Pod 中执行命令,也可以使用bash进入容器。例如,kubectl exec my-pod -- ls / 会在 my-pod 中执行 ls /

kubectl logs <pod>: 获取 Pod 中容器的日志。如果 Pod 有多个容器,则需使用 -c <container> 指定容器。

kubectl attach <pod>: 附加到正在运行的容器以查看输出流或交云控制台。

kubectl port-forward <pod> <local-port>:<pod-port>: 将本地端口转发到 Pod 中的端口。

管理集群

kubectl config view: 查看 kubectl 的配置信息,包括集群、用户和上下文。

kubectl cluster-info: 获取集群的端点信息。

kubectl top <node|pod>: 显示节点或 Pod 的 CPU 和内存使用情况,需要安装监控组件才可以用。

管理节点

kubectl cordon:隔离节点,避免新Pod调度过来,用于维护服务器前准备工作。

kubectl uncordon:取消隔离,重新开放调度,维护结束以后恢复服务器。

kubectl drain:驱逐Pod,用于移除当前节点的Pod,才能对节点进行操作具体的维护操作。

kubectl taint:污点操作,用于控制节点的污点添加与删除,合理的进行调度。

kubeclt label:标签操作,用于操作资源的标签添加或者删除。

代码语言:javascript
代码运行次数:0
复制
#添加标签
kubectl label <resource-type> <resource-name> <label-key>=<label-value>
#删除标签
kubectl label <resource-type> <resource-name> <label-key>-

其他命令

kubectl rollout status <resource>/<name>: 查看资源的部署状态。例如,kubectl rollout status deployment/my-deployment

kubectl rollout undo <resource>/<name>: 回滚资源到之前的状态。例如,kubectl rollout undo deployment/my-deployment

kubectl scale <resource>/<name> --replicas=<num>: 缩放资源的副本数。例如,kubectl scale deployment/my-deployment --replicas=3

代码语言:javascript
代码运行次数:0
复制
#更新镜像,使用较多的命令
kubectl set image <resource>/<name> <container_name>=<new_image>:<tag>
kubectl set image deployment/my-deployment my-container=nginx:1.19

kubectl命令和KVM命令类似,都是把命令进行分类,有兴趣可以去对比下。

其实Kubernetes讲到这里,基本上的中小集群都已经可用正常使用,但是后面还有20+小节的内容会继续讲解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取资源信息
  • 以上无论是get还是describe,后面的资源类型我们前面讲过的大部分资源都可以使用。具体哪些资源可以使用 kubectl api-resources获取。
  • 创建和更新资源
  • 删除资源
  • 与 Pod 和容器交互
  • 管理集群
  • 其他命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档