还将展示如何使用 kubectl 命令获取最近(tail)和实时跟踪(follow) Pod 中的日志。 使用 Kubectl 获取 Pod 日志 要从 Kubernetes 中的 Pod 获取日志,首先需要找出 Pod 的名称或与 Pod 关联的标签: $ kubectl get pods --show-labels 从 Pod 获取日志: $ kubectl logs <podName> 如果 Pod 之前发生过崩溃,您可以通过以下方式访问上一个 Pod 的日志: $ kubectl logs --previous 我可以只获取 Pod 的最近 100 行日志: $ kubectl logs --tail=100 <podName> 要显示最近一小时写入的 Pod 日志: $ kubectl logs --since =1h <podName> 在最近 15 分钟内: kubectl logs --since=15m <podName> 实时跟踪日志 实时跟踪来自 Pod 的日志: $ kubectl logs -f
是否有过因为使用 kubectl 经常需要重复输入命名空间而苦恼?是否觉得应该要有个记住命名空间的功能,自动记住上次使用的命名空间,不需要每次都输入? $nsarg $@" echo "$cmd" $cmd return done cmd="kubectl $@" echo "$ 就可以将 k 命令注册到当前终端,dash snippets 配置如图所示: image.png 将 k 当作 kubectl 来用,只是不需要输入命名空间,它会调用 kubectl 并自动加上上次使用的非默认的命名空间 ,如果想切换命名空间,再常规的使用一次 kubectl 就行,下面是示范: image.png 哈哈,是否感觉可以少输入很多字符,提高 kubectl 使用效率了? 这是目前我探索解决 kubectl 重复输入命名空间的最好方案,一开始是受 fuck命令 的启发,想用 go 语言开发个 k 命令,但是发现两个缺点: 需要安装二进制才可以使用(对于需要在多个地方用kubectl
例如,要获取命名空间,可以使用 kubectl get ns 命令: $ kubectl get ns NAME STATUS AGE charts $ KUBE_EDITOR="nano" kubectl edit cronjob/my-existing-cron Kubectl delete 学会了以上命令后,下面我们将进行删除操作。 # 二、使用kubectl对kubernetes进行故障排除 Kubectl describe describe 命令可以查看资源的详细信息。 :/# Kubectl cp Kubectl cp 命令与 Linux cp 命令类似,用于容器之间复制文件和目录。 # kubectl客户端快捷使用 ##kubectl curl -L https://dl.k8s.io/release/v1.24.2/bin/linux/amd64/kubectl -o /usr
kubectl exec 是 Kubernetes 的命令行工具 kubectl 中的一个子命令。它的主要功能是在指定的 Pod 中执行命令。 也就是说,您可以通过 kubectl exec 与 Pod 中的容器进行交互,执行命令。 使用场景: 调试:如果你想知道容器内部的情况,可以使用 kubectl exec 进入容器内部进行查看。 数据拷贝:与 kubectl cp 配合,可以在本地与容器之间拷贝文件。 使用技巧 指定命名空间:如果要对不在默认命名空间的 Pod 进行操作,可以使用 -n 或 --namespace 参数。 使用案例 进入一个容器的交互式 shell: kubectl exec -it <POD_NAME> -- /bin/bash 在指定命名空间的容器内执行命令: kubectl exec -n <NAMESPACE /etc/hosts 查看容器内的环境变量: kubectl exec <POD_NAME> -- env 与容器内的数据库进行交互(例如 MySQL): kubectl exec -it <POD_NAME
熟悉了这些流程概念后会在很大程度上帮助我们更好地理解 kubectl 并利用它。接下来,我们来看一下具体的技巧,来帮助你提升 kubectl 的生产力。 命令补全 命令补全是提高 kubectl 生产率的最有用但经常被忽略的技巧之一。命令补全功能使你可以使用 Tab 键自动完成 kubectl 命令的各个部分。 Kubectl 可以使用以下命令为 Bash 和 Zsh 自动生成并 print out 补全脚本: kubectl completion bash # or kubectl completion zsh ns 安装完成后,可以使用 kubectl ctx 和 kubectl ns 命令进行操作。 kubectl 插件 从1.12版开始,kubectl 就提供了插件机制,可让你使用自定义命令扩展 kubectl,Kubectl 插件作为简单的可执行文件分发,名称形式为 kubectl-x,前缀 kubectl
kubectl debug 是 Kubernetes 中的一个命令,主要用于故障排查。 而 kubectl debug 提供了这样的机会。 使用场景: 当 Pod 中的容器崩溃或无法正常启动时,进行故障排查。 为了诊断网络、存储或其他相关问题,需要临时在 Pod 中运行一些特定工具。 使用技巧 使用 --image 参数可以指定 kubectl debug 使用的镜像。默认情况下,它使用 busybox。 你可以使用以下命令在该 Pod 内创建一个 debug 容器: kubectl debug broken-pod -c debug-container --image=busybox 在有多个容器的 总之,kubectl debug 是 Kubernetes 中非常有用的诊断工具,尤其在处理困难和复杂的故障排查问题时。
为什么使用 kubectl autocompletion? 提高效率: 不必记住每个命令或参数,只需输入部分命令,然后按 Tab 键即可。 如何启用 kubectl autocompletion? 1. Zsh 中的自动完成 对于 Zsh 用户,执行以下命令启用自动补全: source <(kubectl completion zsh) 要永久启用,你可以将上述命令添加到 ~/.zshrc 文件中。 注意: 在某些系统中,你可能需要安装 bash-completion 包才能使用 kubectl 的自动补全功能。 如何使用 kubectl autocompletion? 一旦启用了 kubectl 的自动补全,你只需在命令行中部分输入命令,然后按 Tab 键。 例如,键入 kubectl get p 然后按 Tab,它会自动补全为 kubectl get pods。
使用技巧 使用 kubectl rollout status 命令时,可以持续观察部署的状态,直到完成或失败。 如果部署出现问题,你可以使用 kubectl rollout undo 快速回滚到之前的版本。 实际使用案例 查看 Deployment 的部署状态 kubectl rollout status deployment/my-deployment 查看 Deployment 的版本历史 kubectl =2 暂停和恢复 Deployment 暂停: kubectl rollout pause deployment/my-deployment 恢复: kubectl rollout resume deployment /my-deployment 重新启动 Deployment kubectl rollout restart deployment/my-deployment 使用 kubectl rollout
kubectl get events 是 Kubernetes 中的一个命令,用于获取集群内部发生的事件 (Events)。这些事件可以包括 Pod 的启动和停止、配置更改、资源不足、错误状况等。 使用技巧 使用 -w 或 --watch 参数实时查看新事件。 可以结合命名空间使用,例如 kubectl get events -n <namespace> 来查看指定命名空间的事件。 使用 --sort-by 对事件进行排序,例如按时间排序:kubectl get events --sort-by='.metadata.creationTimestamp'。 使用 --field-selector 进行过滤,例如只查看 Pod 事件:kubectl get events --field-selector involvedObject.kind=Pod。 使用案例 实时监控事件 kubectl get events -w 查看指定命名空间的事件 kubectl get events -n my-namespace 按时间排序查看最近的事件 kubectl
kubectl port-forward 命令允许用户将本地端口映射到一个运行在 Kubernetes 集群中的 Pod 的端口。 基本命令: kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT TYPE/NAME: 指定要转发的 Pod。 高级用法: 转发到 Deployment 或 Service: 虽然最常见的用法是直接转发到 Pod,但 kubectl port-forward 也支持转发到 Deployment 或 Service kubectl port-forward deployment/my-deployment 5000:80 转发多个端口: 你可以一次转发多个端口。 当你完成转发操作后,记得关闭 kubectl port-forward 命令以释放端口。
集群节点与pods 获取集群中所有non-running的pods(k是kubectl的命令别名) ☸️ CloudnativeEcosystem? default ~ ? ? : 8 }, { "nodeName": "node2.devopsman.cn", "count": 11 } ] pods资源限制limits与requests 使用Kubectl bash -c "kubectl get pods --sort-by=.status.containerStatuses[0].restartCount" NAME
kubectl作为我们主要的操作K8S的工具,其具备非常丰富的功能,但是如果不经过打磨,使用起来还是存在诸多不便,今天我们来看看如何将我们的kubectl打磨的更加易用。 echo "source <(kubectl completion bash)" >> ~/.bashrc Zsh: source <(kubectl completion zsh) echo "[[ $commands[kubectl] ]] && source <(kubectl completion zsh)" >> ~/.zshrc 配置后就可以通过Tab键自动补全命令啦! 二、配置kubectl别名 我们可以通过设置别名简化kubectl命令,编辑.bashrc文件,添加如下内容: alias sudo='sudo ' alias k='kubectl' alias ka ='kubectl apply --recursive -f' alias kex='kubectl exec -i -t' alias klo='kubectl logs -f' alias kg='
kubectl apply 通过文件名或控制台输入,对资源进行配置。 摘要 通过文件名或控制台输入,对资源进行配置。 接受JSON和YAML格式的描述文件。 kubectl apply -f FILENAME 示例 # 将pod.json中的配置应用到pod $ kubectl apply -f . /pod.json # 将控制台输入的JSON配置应用到Pod $ cat pod.json | kubectl apply -f - 选项 -f, --filename=[]: 包含配置信息的文件名 --schema-cache-dir="/tmp/kubectl.schema": 如果不为空,将API schema缓存为指定文件,默认缓存到“/tmp/kubectl.schema”。
kubectl 在管理工具界面使用kubectl语法运行如下命令: kubectl [command] [TYPE] [NAME] [flags] 下表包括了所有kubectl操作简短描述和通用语法: exec kubectl exec POD 对pod中的容器执行命令。 explain kubectl explain 获取各种资源的文档。 get kubectl get 列出一个或多个资源。 label kubectl label 添加或更新一个或多个资源的flags。 logs kubectl logs POD 在pod中打印容器的日志。 proxy kubectl proxy 在Kubernetes API服务器运行代理。 run kubectl run 在集群上运行指定的镜像。 scale kubectl scale 更新指定replication controller的大小。
作者:imuxin 灵雀云后端工程师 今天给大家推荐一个插件:kubectl-watch kubectl-watch:一个可以监听 kubernetes 资源的变更信息的 kubectl 插件。 拷贝 script 目录下的 kubectl-watch 脚本到环境的 $PATH 其中的一个目录下,比如 /usr/local/bin。 cp script/kubectl-watch /usr/local/bin/ chmod +x /usr/local/bin/kubectl-watch 方式二:从 release assets[6 cargo install kubectl-watch --locked Cmd 帮助 USAGE: kubectl-watch [OPTIONS] [ARGS] ARGS: <RESOURCE 资源 kubectl-watch deployment -n {namespace} {name} 追加 --skip-delta 选项,仅监听变动资源,同 kubectl get -w kubectl-watch
在上一篇blogs中,我详细的解释了CompletionService的使用方法和ExecutorCompletionService的详细实现,这篇blogs中,我就介绍使用它的一个小技巧,算是对上一篇
我们在使用git作为项目中版本控制工具的时候 1. 对于不需要提交的文件例如IDE自动生成的非代码文件或者编译生成的二进制文件我们可以放在 .gitignore 文件中。 2. 对于已经在版本跟踪里面的文件例如一些数据库配置文件,服务器上需要,每个人又有不同的配置,那么我们可以执行下列命令
in method : .testAssertion(LogonTest:43) at com.testcase.LogonTest.testAssertion(LogonTest.java:43) 小技巧 执行结果如下,判断不错误信息: FAILED: testSoftAssertjava.lang.AssertionError: The following asserts failed:null, null 小技巧
项目中经常会设置一个全局变量来控制log的打印,可以再gradle作如下配置,就可以在debug版本中输出日志,在release版本中关闭日志,避免忘记自己去手动更改
http://gehantao.blog.51cto.com/231569/43042 Blog小技巧之一-用MSN Push你的Blog! Blog小技巧之三-在地图上显示访问Blog读者的分布信息 我们写Blog的一个重要目的是与读者分享我们的经验和感受,但是每天访问自己Blog的读者来自哪里?本地还是外地? Blog小技巧之六-在Blog上加上图书秀 你想与朋友分享你读过的书籍吗?想让别人了解你的兴趣所在吗? Blog小技巧之九-看看你的博客值多少钱 刚一个朋友发过一个网站,是说有个叫的提供了一个博客价值评估工具。 Blog小技巧之十-博客个人地图 这是一个显示在Blog公告栏目的个人定位功能,能标识出你所在的位置.