Kubernetes 上对应用程序进行故障排除的 6 个技巧
我今天分享下我认为最有用的5条故障排除技巧,以及一些其他的使用技巧。
kubectl –“瑞士军刀”
1.kubectl get deployment/pods
如果要为工作负载使用部署,则有两种选择:
kubectl get deploy
kubectl get deploy -n 名称空间
kubectl get deploy –all-namespaces [或“ -A”]
2. kubectl get events
$ kubectl get events --sort-by=.metadata.creationTimestamp
kubectl get事件的另一个接近的命令是是kubectl describe,就像get deploy / pod一样,它与对象的名称一起工作:
kubectl describe deploy/figlet -n openfaas
3. kubectl logs
这个命令肯定经常大家经常使用,但很多人使用了错误的方式。
如果您进行了部署,比方说cert-manager命名空间中的cert-manager,那么很多人认为他们首先必须找到Pod的长(唯一)名称并将其用作参数。不对。
kubectl logs deploy/cert-manager -n cert-manager
要跟踪日志,请添加-f
kubectl logs deploy/cert-manager -n cert-manager -f
您可以将所有三个结合起来。
如果您的 Deployment 或 Pod 有任何标签,则可以使用 -l app = name 或任何其他标签集来附加到一个或多个匹配Pod的日志中。
kubectl logs -l app=nginx
4.kubectl get -o yaml
当您开始使用由另一个项目或诸如Helm之类的其他工具生成的YAML时,您将很快需要它。在生产中检查镜像的版本或您在某处设置的注释也很有用。
kubectl run nginx-1 --image=nginx --port=80 --restart=Always
输出yaml
kubectl get deploy/nginx-1 -o yaml
现在我们知道了。而且,我们可以添加–export并将YAML保存在本地以进行编辑并再次应用。
实时编辑YAML的另一个选项是kubectl edit,如果您对vim感到困惑,不知道如何使用,请在命令前加上VISUAL = nano,使用这个简化编辑器。
5. kubectl scale 您打开和关闭它了吗?
kubectl scale deploy/nginx-1 --replicas=0
kubectl scale deploy/nginx-1 --replicas=1
6. Port forwarding
我们需要这个技巧, 通过kubectl进行的端口转发使我们可以在我们自己计算机上的本地或远程群集上公开一项服务,以便在任何已配置的端口上访问它,而无需在Internet上公开它。
以下是在本地访问Nginx部署的示例:
kubectl port-forward deploy/nginx-1 8080:80
有人认为这仅适用于部署或Pod,这是错误的。服务间是公平的,通常是转发的选择,因为它们将模拟生产集群中的配置。
如果您确实想在Internet上公开服务,通常会使用LoadBalancer服务,或运行kubectl暴露:
kubectl expose deployment nginx-1 --port=80 --type=LoadBalancer
- END -
往期推荐:
订阅,一起成长
K8s生态圈
点在看,K8s一年不出问题 👇