• k8s pod常用运维命令


    1. 概述

    kubectl 命令是操作 Kubernetes 集群的最直接和最高效的途径,熟练掌握命令的使用能起到事半功倍的效果,整理命令有助于加深记忆,该文仅记录关于pod常用的操作运维命令。


    2. 查看namespaces

    查看k8s集群中目前存在的namespaces

    kubectl get namespaces
    
    • 1

    输入如下
    在这里插入图片描述

    3. 查看pods

    3.1 查看所有的pods列表

    查看k8s集群中所有的pods

    kubectl get pods -A
    
    • 1

    在这里插入图片描述

    3.2 查看指定namespace的pods列表

    查看namespace为ceph的pods列表

    kubectl get pods -n ceph
    
    • 1

    在这里插入图片描述

    3.3 查看pods列表详细信息

    kubectl get pods -n ceph -o wide
    
    • 1

    在这里插入图片描述

    3.4 查看某一个pod详细信息

    kubectl describe pod rook-ceph-mon-a-7cc457848f-pzfbt -n ceph
    
    • 1

    在这里插入图片描述

    4. 查看 pod 中的容器

    4.1 此命令不包括 init 容器

    kubectl get pods POD_NAME_HERE -o jsonpath={.spec.containers[*].name} -n namespace
    
    • 1

    查看pod rook-ceph-mon-a-7cc457848f-pzfbt 不包含init 容器

    kubectl get pods rook-ceph-mon-a-7cc457848f-pzfbt -o jsonpath={.spec.containers[*].name} -n ceph
    
    • 1

    在这里插入图片描述

    4.2 查看 init 容器

    kubectl get pods POD_NAME_HERE -o jsonpath={.spec.initContainers[*].name} -n namespace
    
    • 1

    查看pod rook-ceph-mon-a-7cc457848f-pzfbt init 容器

    kubectl get pods rook-ceph-mon-a-7cc457848f-pzfbt -o jsonpath={.spec.initContainers[*].name} -n ceph
    
    • 1

    在这里插入图片描述

    4.3 查看所有容器

    kubectl get pod POD_NAME_HERE -o jsonpath="{.spec['containers','initContainers'][*].name}" -n namespace
    
    • 1

    查看pod rook-ceph-mon-a-7cc457848f-pzfbt 所有容器

    kubectl get pods rook-ceph-mon-a-7cc457848f-pzfbt -o jsonpath="{.spec['containers','initContainers'][*].name}"  -n ceph
    
    • 1

    在这里插入图片描述

    5. 在 pod 中的执行命令

    在容器内部执行命令

    kubectl exec POD [-c CONTAINER] -- COMMAND [args...]
    
    • 1

    5.1 进入一个容器的交互式 shell

    kubectl exec -it  -- /bin/bash
    
    • 1

    进入rook-ceph-tools pod容器执行命令

    kubectl exec  -it rook-ceph-tools-5dd99c4497-xmpkv -n ceph -- /bin/bash
    
    • 1

    在这里插入图片描述

    5.2 在指定命名空间的容器内执行命令

    kubectl exec -n   -- ceph -s
    
    • 1

    在指定命名空间的容器内执行命令

    kubectl exec  rook-ceph-tools-5dd99c4497-xmpkv -n ceph -- ceph -s
    
    • 1

    在这里插入图片描述

    5.3 在 Pod 中含有多个容器的情况下,指定容器执行命令

    kubectl exec  -c  -- ls /
    
    • 1
    kubectl exec rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph -- ls /
    
    • 1

    在这里插入图片描述

    5.4 查看容器内的环境变量

    kubectl exec  -- env
    
    • 1
    kubectl exec rook-ceph-tools-5dd99c4497-xmpkv -n ceph -- env
    
    • 1

    在这里插入图片描述

    5.5 与容器内的数据库进行交互(例如 MySQL)

    kubectl exec -it  -- mysql -u root -p
    
    • 1
    kubectl exec -it mariadb-server-0 -c mariadb -n openstack -- mysql -u root -p
    
    • 1

    在这里插入图片描述

    6. 查看pod的日志

    输出pod中一个容器的日志。如果pod只包含一个容器则可以省略容器名

    kubectl logs [-f] [-p] POD [-c CONTAINER]
    
    • 1

    6.1 返回仅包含一个容器的的日志快照

    kubectl logs rook-ceph-tools-5dd99c4497-xmpkv -n ceph
    
    • 1

    在这里插入图片描述

    6.2 在 Pod 中含有多个容器的情况下,返回指定容器执行命令日志快照

    kubectl logs rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
    
    • 1

    在这里插入图片描述

    6.3 持续输出容器的日志

    kubectl logs -f rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
    
    • 1

    在这里插入图片描述

    6.4 仅输出中最近的20条日志

    kubectl logs --tail=20 rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
    
    • 1

    在这里插入图片描述

    6.5 输出最近一小时内产生的所有日志

    kubectl logs --since=1h rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
    
    • 1

    在这里插入图片描述

    7. 参考文献

    https://www.kubernetes.org.cn/doc-64
    https://www.cnblogs.com/shenyuanhaojie/p/16455741.html
    https://cloud.tencent.com/developer/article/2353963

  • 相关阅读:
    [C++][算法基础]台阶-Nim游戏(博弈论)
    【黑马程序员】Python文件、异常、模块、包
    android 刷机时缺少驱动无法识别
    WebRTC系列-网络之带宽估计和码率估计(4)接收端带宽估计-发送端paced
    什么蓝牙耳机好用不贵?好用不贵的蓝牙耳机推荐
    Linux之DNS域名解析服务
    荐书 | 抑郁症的自助手册,觉察自我的钥匙
    从零开始学YC-Framework之鉴权
    Android-源码分析-MTK平台BUG解决:客户电池NTC功能(移植高低温报警,关机报警功能)---第二天分析与解决
    Python内置函数
  • 原文地址:https://blog.csdn.net/nanhai_happy/article/details/134433603