加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 云计算 > 正文

调试 Kubernetes 最简单技巧

发布时间:2022-07-16 14:13:46 所属栏目:云计算 来源:互联网
导读:调试容器化工作负载和 Pod 是每位使用 Kubernetes 的开发人员和 DevOps 工程师的日常任务。通常情况下,我们简单地使用 kubectl logs 或者 kubectl describe pod 便足以找到问题所在,但有时候,一些问题会特别难查。这种情况下,大家可能会尝试使用 kubectl
  调试容器化工作负载和 Pod 是每位使用 Kubernetes 的开发人员和 DevOps 工程师的日常任务。通常情况下,我们简单地使用 kubectl logs 或者 kubectl describe pod 便足以找到问题所在,但有时候,一些问题会特别难查。这种情况下,大家可能会尝试使用 kubectl exec,但有时候这样也还不行,因为 Distroless 等容器甚至不允许通过 SSH 进入 shell。那么,如果以上所有方法都失败了,我们要怎么办?
 
  调试 Kubernetes 最简单方法
 
  更好的方法
  其实我们只需要使用更合适的工具。如果在 Kubernetes 上调试工作负载,那么合适的工具就是 kubectl debug。这是不久前添加的一个新命令(v1.18),允许调试正在运行的 pod。它会将名为 EphemeralContainer(临时容器)的特殊容器注入到问题 Pod 中,让我们查看并排除故障。kubectl debug 看起来非常不错,但要使用它需要临时容器,临时容器到底是什么?
 
  临时容器其实是 Pod 中的子资源,类似普通 container。但与普通容器不同的是,临时容器不用于构建应用程序,而是用于检查。我们不会在创建 Pod 时定义它们,而使用特殊的 API 将其注入到运的行 Pod 中,来运行命令并检查 Pod 环境。除了这些不同,临时容器还缺少一些基本容器的字段,例如 ports、resources。
 
  Configuring Feature Gates
  现在如果确定要试用 kubectl debug,那么如何启用临时容器的功能门?这取决于集群设置。例如,现在使用kubeadm启动创建集群,那么可以使用以下集群配置来启用临时容器:
 
  调试 Kubernetes 最简单方法
  在以下示例中,为了简单和测试目的,我们使用 KinD(Docker 中的 Kubernetes)集群,这允许我们指定要启用的功能门。创建我们的测试集群:
  调试 Kubernetes 最简单方法随着集群的运行,我们需要验证其有效性。最简单方法是检查 Pod API,它现在应该包含临时容器部分以及通常容器:
  调试 Kubernetes 最简单方法
  现在都有了,可以开始使用 kubectl debug。从简单的例子开始:调试 Kubernetes 最简单方法
  我们首先启动一个名为 some-app 的 Pod 来进行“调试”。然后针对这个 Pod 运行 kubectl debug,指定 busybox 为临时容器的镜像,并作为原始容器的目标。此外,还需要包括 -it 参数,以便我们立即附加到容器获得 shell 会话。
 
  在上面的代码中可以看到,如果我们在 Pod 上运行 kubectl debug 后对其进行描述,那么它的描述将包括具有之前指定为命令选项值的临时容器部分。
 
  上面的代码表明,通过进程共享,我们可以看到 Pod 中另一个容器内的所有内容,包括其进程和文件,这对于调试来说非常方便。另外,除了 --share-processes 还包括了 --copy-to=new-pod-name,这是因为我们需要创建一个新的 Pod,其名称由该 flag 指定。如果我们从另一个终端列出正在运行的 Pod,我们将看到以下内容:
 
  调试 Kubernetes 最简单方法

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读