美文网首页
k8s集群故障排查和调试命令

k8s集群故障排查和调试命令

作者: 小圆圈Belen | 来源:发表于2020-08-27 00:20 被阅读0次

    具体命令详解:

    1.基础命令:
    https://www.jianshu.com/p/d2fe32fd4675
    2.设置命令:
    https://www.jianshu.com/p/97f71c8ec720
    3.部署命令:
    https://www.jianshu.com/p/43a5d6bd1b67
    4.集群管理命令:
    https://www.jianshu.com/p/f7a0b418eeac
    5.集群故障排查和调试命令:
    https://www.jianshu.com/p/c03f3799e3ab
    6.其他命令:
    https://www.jianshu.com/p/c069c799a6c1

    1.describe命令:显示特定资源的详细信息

    # 语法
    kubectl describe TYPE NAME_PREFIX
    (首先检查是否有精确匹配TYPE和NAME_PREFIX的资源,如果没有,将会输出所有名称以NAME_PREFIX开头的资源详细信息)
    支持的资源包括但不限于(大小写不限):pods (po)、services (svc)、 replicationcontrollers (rc)、nodes (no)、events (ev)、componentstatuses (cs)、 limitranges (limits)、persistentvolumes (pv)、persistentvolumeclaims (pvc)、 resourcequotas (quota)和secrets。
    #查看my-nginx pod的详细状态
    kubectl describe po my-nginx
    

    2.logs命令:用于在一个pod中打印一个容器的日志,如果pod中只有一个容器,可以省略容器名

    # 语法
    kubectl logs [-f] [-p] POD [-c CONTAINER]
    
    # 返回仅包含一个容器的pod nginx的日志快照
    $ kubectl logs nginx
    # 返回pod ruby中已经停止的容器web-1的日志快照
    $ kubectl logs -p -c ruby web-1
    # 持续输出pod ruby中的容器web-1的日志
    $ kubectl logs -f -c ruby web-1
    # 仅输出pod nginx中最近的20条日志
    $ kubectl logs --tail=20 nginx
    # 输出pod nginx中最近一小时内产生的所有日志
    $ kubectl logs --since=1h nginx
    # 参数选项
      -c, --container="": 容器名。
      -f, --follow[=false]: 指定是否持续输出日志(实时日志)。
          --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
          --limit-bytes=0: 输出日志的最大字节数。默认无限制。
      -p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
          --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
          --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
          --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
          --timestamps[=false]: 在日志中包含时间戳。
    

    3.exec命令:进入容器进行交互,在容器中执行命令

    # 语法
    kubectl exec POD [-c CONTAINER] -- COMMAND [args...]
    #命令选项
      -c, --container="": 容器名。如果未指定,使用pod中的一个容器。
      -p, --pod="": Pod名。
      -i, --stdin[=false]: 将控制台输入发送到容器。
      -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
    # 进入nginx容器,执行一些命令操作
    kubectl exec -it nginx-deployment-58d6d6ccb8-lc5fp bash
    

    4.attach命令:连接到一个正在运行的容器。

    #语法
    kubectl attach POD -c CONTAINER
    # 参数选项
    -c, --container="": 容器名。如果省略,则默认选择第一个 pod
      -i, --stdin[=false]: 将控制台输入发送到容器。
      -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
    
    # 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器
    kubectl attach 123456-7890
    # 获取pod 123456-7890中ruby-container的输出
    kubectl attach 123456-7890 -c ruby-container
    # 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
    # 错误控制台的信息发送回客户端。
    kubectl attach 123456-7890 -c ruby-container -i -t
    

    5.cp命令:拷贝文件或者目录到pod容器中
    用于pod和外部的文件交换,类似于docker 的cp,就是将容器中的内容和外部的内容进行交换。

    相关文章

      网友评论

          本文标题:k8s集群故障排查和调试命令

          本文链接:https://www.haomeiwen.com/subject/lwfqsktx.html