Junki
Junki
Published on 2025-04-02 / 44 Visits
0
0

Kubernetes 常用命令解析

Kubernetes(常简称为k8s)作为开源容器编排平台,在容器化应用的自动化部署、扩展与管理方面,发挥着举足轻重的作用。无论是运维工程师,还是开发人员,熟练掌握Kubernetes命令都是有效管理集群的必备技能。下面,将从多个维度为大家梳理Kubernetes的常用命令。

一、集群信息查询

  1. 查看集群版本
kubectl version

该命令能获取集群的版本信息,帮助运维人员确认集群的Kubernetes版本,判断是否需要进行版本升级。
2. 获取API组及版本

kubectl api-versions

输出一系列API组及其对应的版本号,让使用者了解集群支持的API版本,以便编写符合规范的配置文件。
3. 查看服务端支持的资源类型

kubectl api-resources

通过此命令可获取服务端API支持的资源类型,在操作各类资源时做到心中有数。
4. 查询集群信息

kubectl cluster-info

执行后显示集群的基本信息,如Kubernetes控制平面的地址等。如需更详细的信息,可使用

kubectl cluster-info dump

全面了解集群状态。

二、资源详细信息查看

  1. 查看特定资源详细信息
kubectl describe <资源类型,如:deployments> <资源名称>

能获取指定资源的详细配置、运行状态等信息,帮助排查资源运行过程中出现的问题。
2. 查看指定命名空间下的Pod详情

kubectl -n <命名空间> describe pod <pod-name>

配合-o wide参数,能显示更全面的Pod信息,如IP地址、节点信息等。
3. 查看集群节点资源使用情况

kubectl describe nodes

该命令展示集群节点的资源使用情况,包括CPU、GPU、内存的使用以及标签信息。若要查看特定节点,在nodes后加上具体节点名即可。

三、资源创建

  1. 更新和创建资源
kubectl apply -f <文件名>

此命令既能创建新资源,也能更新已存在的资源,是日常操作中推荐使用的方式。
2. 创建资源

kubectl create -f <文件名>

根据指定的文件创建资源。若要创建当前目录下的所有YAML资源,可使用

kubectl create -f.

此外,

kubectl create -f./app1.yaml -f./app2.yaml

支持批量创建多个资源文件。

四、资源删除

4.1 删除指定资源

  • 删除指定Pod
kubectl delete pod <pod-name>
  • 删除指定Service
kubectl delete service <service-name>
  • 通用删除命令
kubectl delete <资源类型> <资源名称>

4.2 根据文件删除资源

kubectl delete -f./pod.json

删除文件中定义的Pod。

4.3 删除命名空间下的所有资源

  • 删除指定命名空间下的所有Pod
kubectl delete pods --all -n <命名空间>

pods替换为services,则可删除所有服务。

4.4 强制删除Pod

kubectl delete pod <pod-name> -n <命名空间> --force --grace-period=0

用于强制删除处于异常状态的Pod。

4.5 按标签删除资源

kubectl delete pods,services -l name=<标签名>

可删除指定标签的Pod和Service,加上--include-uninitialized参数,能删除尚未初始化的资源。

五、资源扩缩容

5.1 手动扩缩容

  • 扩展副本数
kubectl scale <资源类型,如rc> <资源名称,如rc-nginx-2> --replicas=5

将指定资源的副本数扩展到5。

  • 缩减副本数
kubectl scale rc rc-nginx-2 —replicas=3

将副本数缩减到3。

5.2 自动扩缩容

kubectl autoscale deployment my-app --min=3 --max=10

自动扩缩容my-app的部署,确保副本数在3到10之间。若加上--cpu-percent=80,当CPU使用率达到80%时,触发自动扩缩容操作。

六、资源使用情况查询

6.1 查看节点资源使用情况

  • 查看特定节点
kubectl top node k8s-node

显示指定节点的资源使用情况。

  • 查看所有节点
kubectl top node

展示集群所有节点的资源使用情况。

6.2 查看命名空间下Pod的资源使用情况

kubectl top pod -n logging

输出指定命名空间(如logging)下Pod的资源使用情况。

七、资源注解更新

更新Pod注解

kubectl annotate pods <pod-name> description='my frontend'

将指定Pod的description注解值更新为my frontend

八、容器操作

8.1 登录容器

kubectl -n <命名空间> exec -it <Pod名称> -- bash

进入指定命名空间下的Pod容器,方便进行调试和管理。

8.2 文件复制

  • 从本地复制到Pod
kubectl -n <命名空间> cp /opt/sql <Pod名称>:/tmp/

将本地文件复制到Pod的指定路径。

  • 从Pod复制到本地
kubectl -n <命名空间> cp <Pod名称>:/tmp/app_bak ./mysql_bak/

将Pod内的文件复制到本地。

九、回滚和历史查看

9.1 应用配置

cat pod.json | kubectl apply -f -

将控制台输入的JSON配置应用到Pod。

9.2 查看修订历史

kubectl rollout history deployment nginx-deployment

查看指定Deployment的修订版本历史记录。

9.3 回滚操作

kubectl rollout undo deployment nginx-deployment --to-revision=1

回滚到指定版本。若不加–to-revision=版本号,则回退到上一个版本。

十、资源配额与限制查看

10.1 查看资源配额

kubectl describe quota

获取集群的资源配额信息,了解各命名空间的资源使用限制。

10.2 查看资源限制

kubectl describe limitrange

查看集群的资源限制配置,确保资源的合理使用。

十一、日志查看

11.1 实时查看日志

kubectl logs -f <Pod名称> -n <命名空间>

实时跟踪指定Pod的日志输出。

11.2 查看指定行数日志

kubectl logs --tail=10 <Pod名称>

获取指定Pod的最后10行日志。

11.3 按关键字筛选日志

kubectl logs <Pod名称> -n <命名空间> | grep关键字

根据指定关键字筛选日志信息。

十二、节点与标签操作

12.1 查看节点和标签

kubectl get nodes --show-labels

获取所有节点及其标签信息。

12.2 标签管理

  • 增加标签
kubectl label nodes <节点名> <标签键>=<标签名>
  • 删除标签
kubectl label nodes <节点名> <标签键>-

12.3 污点管理

  • 增加污点
kubectl taint nodes <节点名> <标签键>=true:NoSchedule
  • 删除污点
kubectl taint nodes <节点名> <标签键>:NoSchedule-
  • 删除所有节点的指定污点
kubectl taint nodes --all <标签键>:NoSchedule-

十三、服务编辑

编辑Service

kubectl edit svc/docker-registry

对指定的Service进行编辑操作,修改配置信息。

十四、资源列表查看

14.1 查看Pod列表

  • 查看所有Pod
kubectl get pods -A
  • 查看特定命名空间下的Pod
kubectl get pods -n <命名空间>
  • 查看异常Pod
kubectl get po -A|grep -Ev '1/1|2/2|3/3|4/4|Com'
  • 按关键字查询Pod
kubectl get pods -o wide | grep <需查询Pod的关键字>

并输出详细信息。

14.2 查看命名空间列表

kubectl get namespaces

14.3 查看节点列表

kubectl get nodes

加上--show-labels可查看标签,加上-o wide可查看IP。

14.4 查看服务列表

kubectl get services
kubectl get svc

后者可指定-A参数查看所有命名空间中的服务。

14.5 查看StatefulSet列表

kubectl get statefulset

14.6 查看DaemonSet列表

kubectl get daemonset

14.7 查看Deployment列表

kubectl get deployments

14.8 查看域名列表

kubectl get ingress -A

14.9 查看自定义资源列表

kubectl get crd -A

14.10 查看网络策略

kubectl get networkpolicies

14.11 查看存储类

kubectl get storageclass

十五、资源格式信息获取

15.1 获取YAML格式信息

kubectl get <资源类型,如deployment> <资源名称,如my-deployment> -o yaml

获取指定资源的YAML格式配置信息。

15.2 获取JSON格式信息

kubectl get <资源类型,如deployment> <资源名称,如my-deployment> -o json

获取指定资源的JSON格式配置信息。

十六、节点调度管理

16.1 标记节点不可调度

kubectl cordon k8s-node

阻止新的Pod调度到指定节点。

16.2 标记节点可调度

kubectl uncordon k8s-node

恢复节点的可调度状态。

16.3 排除节点进行维护

kubectl drain k8s-node

将指定节点上的Pod驱逐,准备进行维护操作。


Comment