问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Kubernetes常用命令大全(非常详细)零基础入门到精通,收藏这一篇就够了

创作时间:
作者:
@小白创作中心

Kubernetes常用命令大全(非常详细)零基础入门到精通,收藏这一篇就够了

引用
CSDN
1.
https://blog.csdn.net/leah126/article/details/138858307

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。掌握Kubernetes的基本命令对于运维人员和开发人员来说至关重要。本文将详细介绍Kubernetes的常用命令,帮助读者快速入门并精通Kubernetes的使用。

基本命令

create

用于根据文件或标准输入(stdin)创建资源。

  • 创建资源

    kubectl create -f ./nginx.yaml
    
  • 创建当前目录下的所有yaml资源

    kubectl create -f .
    
  • 使用多个文件创建资源

    kubectl create -f ./nginx1.yaml -f ./mysql2.yaml
    
  • 使用目录下的所有清单文件来创建资源

    kubectl create -f ./dir
    
  • 使用 url 来创建资源

    kubectl create -fxxx.git.io/vxxzso.yaml
    

run

在集群中运行特定镜像。

  • 创建带有终端的pod

    kubectl run -i --tty busybox --image=busybox
    
  • 启动一个 nginx 实例

    kubectl run nginx --image=nginx
    
  • 启动多个pod实例

    kubectl run mybusybox --image=busybox --replicas=5
    

explain

获取资源的文档。

  • 获取 pod 和 svc 的文档
    kubectl explain pods,svc
    

get

获取所有的resources,包括node、pod、namespace、service、deployment等,可以展示一个或者多个资源。

  • 查看nodes节点

    kubectl get nodes
    
  • 通过yaml文件查询资源

    kubectl get -f xxx.yaml
    
  • 查询资源

    kubectl get resourcequota
    
  • 查询endpoints

    kubectl get endpoints
    
  • 查看pods

    kubectl get pods
    
  • 查看指定空间kube-system的pods

    kubectl get po -n kube-system
    
  • 查看所有空间的pods的详细信息

    kubectl get pods -o wide --all-namespaces
    
  • 查看指定空间kube-system的pods的详细信息

    kubectl get pod -o wide --namespace=kube-system
    
  • 获取指定namespace信息

    kubectl get namespaces
    
  • 获取指定namespace的yaml格式和json格式信息

    kubectl get namespaces kube-system -o yaml
    kubectl get namespaces kube-system -o json
    
  • 获取service(svc)

    kubectl get svc --all-namespaces
    
  • 查看所有命令空间的service的其他写法

    kubectl get services --all-namespaces
    
  • 通过 yaml 方式导出所有 service

    kubectl get service -o yaml > backup.yaml
    
  • 通过 yaml 方式导出单个 service

    kubectl get service serviceName -o yaml > backup.yaml
    
  • 查询事件(Event)

    kubectl get events --all-namespaces
    
  • 查看某个命名空间下的事件

    kubectl get events -n kube-system
    
  • 查看某个命名空间下的事件,并根据关键字过滤

    kubectl get events -n kube-system | grep “name”
    
  • 通过lable查询

    kubectl get pods -l app=nginx -o yaml|grep podIP
    
  • 查看所有pod对于指定标签的key是否有value,有则显示,没有则空白

    kubectl get pods -L apps,run
    
  • 获取含有指定标签key的pod

    kubectl get pods -l apps --show-labels
    
  • 获取含有指定标签key=value的pod

    kubectl get pods -l release=stable --show-labels
    

edit

在服务端编辑资源。

  • 编辑名为 docker-registry 的 service
    kubectl edit svc/docker-registry
    

delete

根据文件、标准输入(stdin)、资源名或者资源标签删除资源。

  • 删除 pod.json 文件中定义的类型和名称的pod

    kubectl delete -f ./pod.json
    
  • 删除名为“baz”的 pod 和名为“foo”的 service

    kubectl delete pod,service baz foo
    
  • 删除具有 name=myLabel 标签的 pod 和 serivce

    kubectl delete pods,services -l name=myLabel
    
  • 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的

    kubectl delete pods,services -l name=myLabel --include-uninitialized
    
  • 删除 my-ns 命名空间下的所有 pod 和 serivce,包括尚未初始化的

    kubectl -n my-ns delete po,svc --all
    
  • 强制删除pod(如,prometheus-7fcfcb9f89-qkkf7)

    kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force
    

cp

容器内与宿主机之间进行文件拷贝

  • 拷贝容器内的文件或目录到本地

    kubectl cp default/venus-registry-web-8cd94fc99-fws4b:demo.txt demo.txt
    kubectl cp default/venus-registry-web-8cd94fc99-fws4b:/home/xxx /home/yyy
    
  • 拷贝本地文件或目录到容器内

    kubectl cp demo.txt default/venus-registry-web-8cd94fc99-fws4b:demo.txt
    kubectl cp /home/yyy default/venus-registry-web-8cd94fc99-fws4b:/home/xxx
    

部署命令

rollout

用于管理部署的滚动更新和回滚。

  • 查看修订版本(revison)的历史记录

    kubectl rollout history deployment nginx-deployment
    
  • 回退到指定的某个版本

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

scale

用于程序在负载加重或缩小时副本进行扩容或缩小。

  • 扩展副本数到4

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

    kubectl scale rc rc-nginx-3 —replicas=2
    

autoscale

提供自动根据pod负载对其副本进行扩缩的功能。

  • 如前面创建的nginx,可以用如下命令指定副本范围在1~4。
    kubectl autoscale rc rc-nginx-3 —min=1 —max=4
    

集群管理命令

cluster-info

用于查看集群信息。

  • 查看集群信息

    kubectl cluster-info
    
  • 查看更详细的集群信息。

    kubectl cluster-info dump
    

top

显示CPU、内存、存储资源的使用情况。

  • 显示节点(k8s-node)资源的使用情况

    kubectl top node k8s-node
    
  • 显示集群所有节点的资源的使用情况

    kubectl top node
    
  • 显示指定命名空间(如,logging)的pod的资源的使用情况

    kubectl top pod -n logging
    

cordon

标记节点不可调度。

  • 标记k8s-node节点不可调度
    kubectl cordon k8s-node
    

uncordon

标记节点可调度。

  • 标记k8s-node节点可调度
    kubectl uncordon k8s-node
    

drain

排除某节点,准备进行维护。

  • 排除k8s-node节点,准备进行维护
    kubectl drain k8s-node
    

故障排查和诊断命令

describe

显示特定资源或资源组的详细信息。

  • 当我们发现一个pod迟迟无法创建时,展示一个pod的描述

    kubectl describe pod xxx
    
  • 显示集群节点资源(CPU/GPU/内存)的使用情况。

    kubectl describe nodes
    
  • 显示集群具体某个节点(如,node-work-2)资源的使用情况。

    kubectl describe node node-work-2
    

logs

打印Pod中一个容器的日志。

  • 查看指定Pod的日志

    kubectl logs -f kube-dns-699984412-vz1q6 -n kube-system
    
  • 查看指定pod的最后10行日志

    kubectl logs --tail=10 nginx
    
  • 指定Pod的其中一个容器查看日志

    kubectl logs kube-dns-699984412-n5zkz -c kubedns --namespace=kube-system
    
  • 查看指定Pod指定容器的最后10行的滚动日志

    kubectl logs -f --tail=10 kube-dns-699984412-vz1q6 -c manager -n kube-system
    

exec

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

  • 进入容器

    kubectl exec -it codeleak-github-cron-1567581840-zsqpc /bin/bash
    
  • 在指定命名空间(如,ns)已存在的容器中执行命令(只有一个容器的情况下)

    kubectl exec nginx-pod -n ns – ls /
    
  • 在已存在的容器中执行命令(pod 中有多个容器的情况下,需要指定具体那个容器)

    kubectl exec nginx-pod -c my-container – ls /
    

高级命令

apply

按文件名或标准输入(stdin)将配置应用于资源。

  • 更新资源

    kubectl apply -f rc-nginx.yaml
    
  • 将控制台输入的JSON配置应用到Pod

    cat pod.json | kubectl apply -f -
    

设置命令

label

更新(增加、修改或删除)资源上的标签。

  • Label命名规范:
    label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。

  • 操作节点标签:

    # 查看所有节点和lable
    kubectl get nodes --show-labels
    # 为某个节点增加lable
    kubectl label nodes 10.126.72.31 points=test
    # 给节点node01添加disk标签
    kubectl label nodes node01 disk=ssd
    # 修改节点node01的标签
    kubectl label nodes node01 disk=sss –overwrite
    # 删除节点node01的disk标签
    kubectl label nodes node01 disk-
    
  • 操作pod标签:

    # 给名为 tomcat 的 Pod 添加 label app=tomcat。
    kubectl label pods tomca app=tomcat
    # 把名为 tomcat 的Pod修改label 为 app=tomcat1,且覆盖现有的value
    kubectl label --overwrite pods tomcat app=tomcat1
    # 把 namespace 中的所有 pod 添加 label
    kubectl label pods --all test=test
    # 删除名为“app”的 label 。(使用“ - ”减号相连)
    kubectl label pods tomcat app-
    

annotate

更新资源的Annotations信息。

  • 更新pod(如,foo),设置其注解’description’的值为’my frontend’。
    kubectl annotate pods foo description=‘my frontend’
    

其他命令

version

查看客户端和服务端的版本信息。

kubectl version

api-versions

以“组/版本”的格式输出服务端支持的API版本。

kubectl api-versions

api-resources

输出服务端API支持的资源类型。

kubectl api-resources
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号