在从Docker迁移到DockerSwarm再到Kubernetes之后,然后处理了多年来所有各种API更改,我非常乐意发现部署问题并修复它们。今天,我分享了我认为最有用的5个故障排除技巧,以及使用它们的一些其他技巧。kubectl–“瑞士军刀”kubectl是我们的瑞士军刀,我们经常在出错时使用它们,出错时如何使用它们非常重要,让我们从5个“实际用例”开始,看看如何使用他们在出现问题时。情况将是:我的YAML被接受,但我的服务没有启动,它启动了但不起作用。1、kubectlgetdeployment/pods命令之所以这么重要,是因为它不需要显示很多内容就可以显示有用的信息。如果你想为你的工作负载使用部署,你有两个选择:kubectlgetdeploykubectlgetdeploy-nnamespaceskubectlgetdeploy--all-namespaces[or"-A"]理想情况下你想看到的是1/1或者2/2的当量,依此类推。这表示您的部署已被接受并且已尝试部署。接下来,您可能想查看kubectlgetpods以查看部署的后备pod是否正确启动。2.kubectlgetevents我很惊讶我不得不经常向遇到Kubernetes问题的人解释这个小技巧。此命令将打印出给定命名空间中的事件,非常适合查找崩溃的pod或无法拉取容器映像等关键问题。Kubernetes中的日志是“无序的”,因此您需要添加以下内容,这些内容取自OpenFaaS文档。$kubectlgetevents--sort-by=.metadata.creationTimestampkubectlgetevents的另一个关闭命令是kubectldescribe,与getdeploy/pod一样,它与对象的名称一起工作:kubectldescribedeploy/figlet-nopenfaasYou'您将在这里获得非常详细的信息。你可以描述大多数东西,包括节点,这将显示由于资源限制或其他问题而无法启动Pod。3、kubectllogs这个命令想必大家都经常用到,但是很多人用错了。如果您进行部署,比如说cert-manager命名空间中的cert-manager,许多人认为他们首先必须找到pod的长(唯一)名称并将其用作参数。错误的。kubectllogsdeploy/cert-manager-ncert-manager要跟踪日志,请添加-fkubectllogsdeploy/cert-manager-ncert-manager-f您可以将这三者结合起来。如果您的Deployment或Pod有任何标签,您可以使用-lapp=name或任何其他标签集附加到一个或多个匹配Pod的日志中。kubectllogs-lapp=nginx有像stern和kail这样的工具可以帮助你匹配模式并节省你的输入时间,但我发现它们会让人分心。4.kubectlget-oyaml当您开始使用由另一个项目或其他工具(如Helm)生成的YAML时,您很快就会需要它。在生产中检查图像的版本或您在某处设置的注释也很有用。kubectlrunnginx-1--image=nginx--port=80--restart=Always输出yamlkubectlgetdeploy/nginx-1-oyaml现在我们知道了。并且,我们可以添加--export并将YAML保存到本地,以便再次编辑和应用。实时编辑YAML的另一个选项是kubectledit,如果您对vim感到困惑并且不知道如何使用它,请在命令前加上VISUAL=nano以使用这个简化的编辑器。5.kubectlscale是否开启关闭?Kubectlscale可用于将Deployment及其Pod缩减为零副本,从而有效地杀死所有副本。当您将其缩小到1/1时,将创建一个新的pod,并重新启动您的应用程序。语法非常简单,您可以重新启动代码并再次测试。kubectlscaledeploy/nginx-1--replicas=0kubectlscaledeploy/nginx-1--replicas=16.端口转发我们需要这个trick,通过kubectl的端口转发可以让我们在本地或者自己的电脑上暴露一个服务远程集群,以便可以在任何配置的端口上访问它,而无需将其暴露在Internet上。下面是在本地访问Nginx部署的示例:kubectlport-forwarddeploy/nginx-18080:80有些人认为这仅适用于部署或pod,这是错误的。服务之间的公平性通常是转发的选择,因为它们将模仿生产集群中的配置。如果你真的想在互联网上暴露你的服务,你通常使用LoadBalancer服务,或者运行kubectl来暴露:kubectlexposedeploymentnginx-1--port=80--type=LoadBalancer技巧已经结束,你可以试试现在,我希望你发现这6个命令和技巧有效,现在你可以在你的真实集群上测试它。以上是良序教程网为各位小伙伴分享的关于Kubernetes上应用排错的小技巧。以上就是良序教程网为各位小伙伴们分享的Linux相关知识。
