美文网首页
程序解Bug最常用的K8s命令,外加使用窍门

程序解Bug最常用的K8s命令,外加使用窍门

作者: 小二上酒8 | 来源:发表于2022-09-24 10:03 被阅读0次

K8s 是时下最流行的容器"操作系统",虽然已经流行了好几年了,不过作为开发人员想要熟练的使用它,除了理解它的各个组件的职责、行为特性之外,还得熟记它的 CLI 命令工具 kubectl 。

想要让 K8s 听从我们的调遣,我们就得通过 kubectl 给它发送指示才行,可是这么多操作我们全看一遍真的是挺耗费脑力的,更别提记下来了。

所以今天给大家总结了几个最常用也最实用的命令操作,以后实在忘了,翻开看看马上就能捡起来。嗯,平时用的 go mod 和 maven 那些命令,我就能记住常用的那两三个,解决依赖问题的时候每次都上搜索引擎,时候长了就搞了个笔记,用到了翻一翻。

感觉没了这些笔记和搜索引擎我已经不会干活了...

好了,闲话不多说,马上开始。

Kubectl 的语法结构
首先我们来理解一下K8s 的 CLI 命令工具 kubectl 它的语法结构是什么样的,不然就真得每个操作都靠抄了。

所有的 K8s 命令操作在 CLI 中都使用以下结构:

kubectl [command] [TYPE] [NAME] [flags]

这个命令语法中每个部分的顺序不能调换,否则 K8s 就不理解我们要干什么了。

command
command 部分描述了要执行的操作类型,主要的操作类型有:

create 从文件或命令行输入提供的配置,生成资源对象。
describe 检索资源对象的详细信息
get 获取各种资源在集群里的信息
delete 从集群中删除需要擦除的资源对象
apply 搭配声明文件使用,把资源对象的定义提交给集群,由集群进行应用。
TYPE
命令操作中的 TYPE 部分用于制定 kubectl 发起的操作,所针对的资源类型。常用的资源类型有 pod , service , deployment , statefulset , node 这些。

NAME
NAME 部分区分大小写,是K8s里资源对象的唯一标识,用于制定指定 TYPE 部分指明的相关资源的名称。将名称附加到命令操作上会将该命令操作只对该资源对象游泳。

flags
flags 部分表示对特定资源的特殊选项或请求。它们是用作覆盖默认值或环境变量。

比如任何 kubectl 发起的命令操作,都是在 default 这个命名空间下起作用的,想要作用到其他命名空间,可以通过在 flags 部分用 -n 选项指定命名空间,例如:

kubectl get pod -n web

就是查看 web 命名空间下有哪些 pod 资源。

好了下面列举几个非常实用的命令操作,建议收藏。

实用命令推荐

  1. 查看所有命名空间下的资源
    命名空间在 K8s 中非常重要。它们是一种在集群中隔离某些资源组,然后相应地管理它们的机制。命名空间提供的可见性隔离在 K8s 中也起着至关重要的作用。

默认我们所有命令生效的命名空间都是 default 。

kubectl get pods

那么有时候在查问题,看集群大体布局的时候,往往需要看某类资源在集群中整体的情况,这就需要能查出所有命名空间下的信息,这个时候我们可以在 flags 部分使用 --all-namespaces 选项:

kubectl get pods --all-namespaces
  1. 查询命名空间下所有在运行的pod
kubectl get pods --field-selector=status.phase=Running

这个就不多解释了,其实擅用 —field-selector 能根据资源的属性查出各种在某个状态、拥有某个属性值的资源。

那怎么知道某个类型的资源对象有哪些属性值呢,毕竟K8s资源的类型十几种,每种的属性就更多了,这个时候就可以看下个命令。

  1. 查询资源当下在集群中的属性
kubectl get pod pod-name -o=yaml

上面这个命令就能把指定名称的 pod 对象在集群中当前拥有的属性以 YAML 格式的形式全打印出来,也支持JSON格式。

这里例子里 TYPE 部分用的是 pod,可以替换成任何K8s支持的资源类型,查看他们的属性。

  1. 提交资源给集群应用,并记录版本
    提交资源定义,让集群进行应用调度,我们统一用的是
kubectl apply -f resources.yaml

不过,如果你想用K8s中-- Deployment资源的回滚能力的话,还得让K8s记住每个版本都提交了什么,这个功能可以通过 --record 选项开启。

kubectl apply -f resources.yaml --record
  1. 查看资源对象的事件信息
    有的时候,Pod 挂了,一直停在挂起状态,这个时候就需要看看它经理过哪些事件了,好做排查。
kubectl describe pod pod-name 

时候回打印出来这个 Pod 经历过的所有事件信息

Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Warning  Failed     20s (x4 over 2m4s)   kubelet            Failed to pull image "xxx
 ": rpc error: code = Unknown desc = Error response from daemon: manifest for xxx not found: manifest unknown: manifest unknown
  Warning  Failed     20s (x4 over 2m4s)   kubelet            Error: ErrImagePull
  Normal   BackOff    4s (x5 over 2m4s)    kubelet            Back-off pulling image "xxx"
  Warning  Failed     4s (x5 over 2m4s)    kubelet            Error: ImagePullBackOff

同样除了Pod外,用describe还能看其他资源的事件。

  1. 查看容器日志
    我们所有的应用在K8s运行前都是先封装在容器里,再以 Pod 为单位调度到集群上的,那么一旦不符合预期,有错的时候,肯定第一时间想到的是看日志,这时候就需要用到下面这个命令:
kubectl  logs <podname> -n <namespace>

如果恰巧这个 Pod 被重启了,查不出来任何东西,可以通过增加 — previous 参数选项,查看之前容器的日志。

kubectl logs <podname> --previous

总结
今天给大家总结了几个使用频率高的K8s命令操作,其实最主要的还是第一部分讲的命令语法结构,掌握了这个结构,我们只需要把各个资源类型、操作类型、资源名称这些变量填空到结构里就能指示 K8s 完成我们想要的操作啦。

相关文章

  • FFmpeg 工程之路-基础开发概述

    章节 熟练使用 Vim 编辑器Vim 编辑器核心理念、使用窍门Vim 处理模式Vim 常用命令Vim 基础命令 C...

  • kubeadmin安装k8s

    看完本篇能学到的知识点 k8s集群的安装 k8s的 kubectl 常用命令的使用 k8s发布一个简单的应用 k...

  • K8s一些常用命令合集

    本文旨在记录K8s使用过程中常用的CLI命令集,下面就针对K8s集群中各种资源对象的不同操作对其相关命令简单做以下...

  • 2016/12/9 周五

    GET 阅读Dream开发手册 解bug并更新git 1.解bug [0043337]:使用fragmentTra...

  • 【Linux入门第八天】-Linux常用基础命令全解

    04_Linux常用基础命令全解 常用命令: Linux文件系统:1、文件名严格区分字符大小写;2、文件可以使用除...

  • k8s常用命令

    包含了常用命令kubectl 操作k8s 常用命令 kubectl 输出格式 查看日志 创建资源对象 查看资源对...

  • K8S多集群管理(KubeCM)

    安装KubeCM 配置命令补全(非必需) 添加K8S集群配置 常用操作

  • Linux系统监控命令详解

    1. top命令 top命令经常用来监控 Linux 的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令...

  • K8S命令汇总

    常用命令 namespace命令(多租户管理) pv命令 查看token K8S污点机制 节点污点的变动会影响到新...

  • Shell终端命令行的重点知识

    对于程序员来说,命令行是常用的工具,在Mac和Linux系统中,命令行使用的是Shell语言,对于常用的工具,我都...

网友评论

      本文标题:程序解Bug最常用的K8s命令,外加使用窍门

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