当前位置:首页 > 科技  > 软件

从未有过的Kubectl指南

来源: 责编: 时间:2024-05-09 09:28:26 264观看
导读你是哪种工程师?光看外表,有人能猜出来吗?很可能猜不出来。译自The guide to kubectl I never had.,作者 Jake Page。如果有人通过观察你的键盘就能猜出来呢?现在可能稍微容易一点了。当键盘上的“k”键已经磨损时,你就知道

你是哪种工程师?光看外表,有人能猜出来吗?很可能猜不出来。nMr28资讯网——每日最新资讯28at.com

译自The guide to kubectl I never had.,作者 Jake Page。nMr28资讯网——每日最新资讯28at.com

如果有人通过观察你的键盘就能猜出来呢?现在可能稍微容易一点了。nMr28资讯网——每日最新资讯28at.com

当键盘上的“k”键已经磨损时,你就知道自己正在与一位Kubernetes工程师打交道。nMr28资讯网——每日最新资讯28at.com

在Glasskube办公室,你会发现到处都是备用的 “k” 键,以备不时之需。nMr28资讯网——每日最新资讯28at.com

当然,我是在开玩笑。nMr28资讯网——每日最新资讯28at.com

我并不确定磨损的键盘能说明其主人的什么情况。但我确实知道,对于任何想要成为一名熟练的Kubernetes管理员的人来说,kubectl 有多重要。nMr28资讯网——每日最新资讯28at.com

kubectl 是用于与 Kubernetes API 通信的 CLI 工具,它乍一看似乎很简单,但很快就会变得复杂。nMr28资讯网——每日最新资讯28at.com

因此,在这篇博文中,我的目标是编写我刚开始时希望拥有的指南。首先关注命令语法和有用的命令,然后再转向插件和工具的充满活力的生态系统,这些插件和工具旨在扩展 kubectl 和 Kubernetes 的功能。nMr28资讯网——每日最新资讯28at.com

同时分享一些提示和技巧,以及一份有用的 kubectl 速查表。nMr28资讯网——每日最新资讯28at.com

让我们开始吧。nMr28资讯网——每日最新资讯28at.com

免责声明

这不是一篇关于 Kubernetes 的文章。K8s 是一项极其庞大的技术,涵盖了众多概念,例如各种类型的 Kubernetes 对象及其交互。对于此讨论,我假设你熟悉这些概念。相反,我将专门关注 kubectl、它的用法以及围绕它构建的工具。nMr28资讯网——每日最新资讯28at.com

开始之前

如果你支持让 Kubernetes 软件包管理对每个人都更好的开源项目,那么请考虑支持Glasskube,在 GitHub 上给我们一颗星。nMr28资讯网——每日最新资讯28at.com

安装

要安装 kubectl,你可以根据你的操作系统选择一些不同的选项。以下是如何在一些常见平台上安装它:nMr28资讯网——每日最新资讯28at.com

Linux (Ubuntu/Debian)nMr28资讯网——每日最新资讯28at.com

sudo apt-get update && sudo apt-get install -y kubectl

使用 Homebrew 的 MacOSnMr28资讯网——每日最新资讯28at.com

brew install kubectl

使用 Chocolatey 的 WindowsnMr28资讯网——每日最新资讯28at.com

choco install kubernetes-cli

安装后,你可以通过运行以下命令来验证 kubectl 是否已正确安装:nMr28资讯网——每日最新资讯28at.com

kubectl version --client

kubectl 命令:

kubectl 是一个命令行界面 (CLI) 工具,用于与 Kubernetes API 通信。命令有很多,多到无法记住。nMr28资讯网——每日最新资讯28at.com

图片图片nMr28资讯网——每日最新资讯28at.com

声明式工作

Kubernetes 资源的声明性管理涉及使用 YAML 清单文件指定资源的所需状态,并将这些清单应用到集群。nMr28资讯网——每日最新资讯28at.com

创建 YAML 文件

无论 Kubernetes 对象是由您自己编写的还是由其他人编写的,所有对象均定义在 YAML 文件中。Kubernetes API 就是通过 YAML 文件定义来了解集群状态的:nMr28资讯网——每日最新资讯28at.com

apiVersion: apps/v1kind: Deploymentmetadata:  name: glasskube-deploymentspec:  replicas: 3  selector:    matchLabels:      app: glasskube      env: prod  template:    metadata:      labels:        app: glasskube        env: prod    spec:      containers:      - name: glasskube-container        image: your-glasskube-image:latest

若要从头开始创建此部署,请使用 kubectl create 命令:nMr28资讯网——每日最新资讯28at.com

kubectl create -f glasskube-deployment.yaml

应用 YAML 文件(客户端应用)

运用 YAML 文件是管理 Kubernetes 资源的标准方法。您可以用 YAML 格式定义您资源的所需状态,并将这些 YAML 文件应用于该集群。nMr28资讯网——每日最新资讯28at.com

kubectl apply -f manifest.yaml

服务器端应用 (SSA)

服务器端应用是将配置更改应用到 Kubernetes 资源的一种较新方法。使用 SSA,变更会直接应用于服务器端,这意味着 Kubernetes API 服务器负责确保实现所需状态。nMr28资讯网——每日最新资讯28at.com

kubectl apply --server-side -f manifest.yaml

插件和工具

每当我看到一些来回讨论 Kubernetes 的内容时,它到底是什么。它最适合哪些用例以及如何最好地思考它,Kelsey Hightower的同一条推文会浮现在我脑海里。nMr28资讯网——每日最新资讯28at.com

图片图片nMr28资讯网——每日最新资讯28at.com

值得称赞的:nMr28资讯网——每日最新资讯28at.com

kubectl-cf:一种在 kubeconfig 文件(而不是上下文)之间切换的更快方法。nMr28资讯网——每日最新资讯28at.com

可见性

Kubernetes 集群是复杂的系统,包含许多相互依赖的活动部分,以使您的应用得以运行。始终清晰地了解正在发生的事情至关重要。nMr28资讯网——每日最新资讯28at.com

k9s

K9s是一个方便、轻量级的交互式 Kubernetes 仪表盘,运行在终端中。除了可视化你的 k8s 资源外,你还可以轻松的进入 pods 中,编辑清单,并且在一处管理你的工作负载。这或许是我最喜欢的 Kubernetes 管理工具之一。nMr28资讯网——每日最新资讯28at.com

安装说明在这里。nMr28资讯网——每日最新资讯28at.com

图片图片nMr28资讯网——每日最新资讯28at.com

kubectl tree

一个 kubectl 插件,用于通过对象上的 ownersReferences 探索 Kubernetes 对象之间的所有权关系。nMr28资讯网——每日最新资讯28at.com

图片图片nMr28资讯网——每日最新资讯28at.com

安装说明此处。nMr28资讯网——每日最新资讯28at.com

值得一提:nMr28资讯网——每日最新资讯28at.com

kubectl-watch:另一个观察工具,可视化查看 Kubernetes 资源的增量更改。nMr28资讯网——每日最新资讯28at.com

故障排除

Inspektor-Gadget:nMr28资讯网——每日最新资讯28at.com

Inspektor-gadget是用于调试和检查 Kubernetes 资源和应用程序的工具(或小工具)集合。nMr28资讯网——每日最新资讯28at.com

Inspektor Gadget 工具称为小工具。您可以部署一个、两个或多个小工具。nMr28资讯网——每日最新资讯28at.com

图片图片nMr28资讯网——每日最新资讯28at.com

安装说明此处。nMr28资讯网——每日最新资讯28at.com

值得一提:nMr28资讯网——每日最新资讯28at.com

kubectl node-shell:直接在正在运行的节点的主机操作系统中启动根 shell。nMr28资讯网——每日最新资讯28at.com

日志记录

Stern:nMr28资讯网——每日最新资讯28at.com

Stern允许您跟踪 Kubernetes 上的多个 Pod 和 Pod 中的多个容器。每个结果都使用颜色编码,以便更快速地进行调试。nMr28资讯网——每日最新资讯28at.com

安装:nMr28资讯网——每日最新资讯28at.com

kubectl krew install stern

使用 kubectl 插件的一些安全影响包括可能的漏洞、权限提升和无意的数据泄露。请确保仅使用积极维护的插件,并且最好在它们周围有一个活跃的社区。nMr28资讯网——每日最新资讯28at.com

别名

有如此多的 kubectl 命令需要记住,通过使用键盘快捷键或别名来简化您的生活。nMr28资讯网——每日最新资讯28at.com

您将在此处找到一个存储库,其中包含一个脚本,用于生成数百个方便的 shell 别名 kubectl。问题是许多别名很长,可能难以回忆。不过不用担心,我找到了Benoit Couetil 撰写的这篇非常实用的博客文章,介绍如何处理上述脚本生成的众多别名。nMr28资讯网——每日最新资讯28at.com

Kubectl 速查表

没有速查表,任何指南都是不完整的,对吧?nMr28资讯网——每日最新资讯28at.com

# Basic Commands# List API Resourceskubectl api-resources# List Resourceskubectl get [name]# Explain Resourceskubectl explain# Working with Pods# Create a new deployment named "nginx-deployment" with the nginx imagekubectl run nginx-deployment --image=nginx# Show Resource Usage of a Podkubectl top pod -n [namespace] [pod-name]# Run Command in Podkubectl run -it [pod-name] --image [image-name] --rm -- [command]# Show Resource Labelskubectl get pods -n [namespace] -L [label1] -L [label2]# Execute Command in Podkubectl exec -it [pod-name] -- [command]# Port Forwardingkubectl port-forward [pod-name] [local-port]:[remote-port]# Filtering Pods by Node Namekubectl get pods --field-selector spec.nodeName=[node-name]# Filtering Pods by Phasekubectl get pods --field-selector status.phase=Running# Delete a pod named "my-pod" in the default namespacekubectl delete pod my-pod# Working with Nodes# Watch Nodes (Old School)watch kubectl get nodes -o wide# Watch Nodes (New School)kubectl get nodes -w# Node Resource Utilizationkubectl top node [node-name]# Get Node Resourcekubectl describe node [node-name]# Working with Deployments, Daemonsets, and StatefulSets# Restart Workloadkubectl rollout restart -n [namespace] [kind]/[name]# Rollout Statuskubectl rollout status [kind]/[name]# Rollout Historykubectl rollout history [kind]/[name]# Scale Deploymentkubectl scale deployment/[name] --replicas=[replica-count]#Update Deployment Imagekubectl set image deployment/[deployment-name] [container-name]=new-image:tag# Watch events related to a deploymentkubectl events -n glasskube-system --for=deployment/glasskube-controller-manager  # Delete DaemonSetkubectl delete daemonset [daemonset-name]# Working with Jobs# Run CronJob Manuallykubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]# Working with Secrets# Get Value from Secretkubectl get secret -n [namespace] [secret-name] -o=jsnotallow='{.data.[key]}' | base64 --decode# Create Secretkubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa# Get a value from a secretkubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'# Working with Containers# Show Container Logskubectl logs -n [namespace] [pod-name] kubectl logs -n [namespace] deployment/[deployment-name]# Run Command in Containerkubectl exec -it -n [namespace] [pod-name] -- [command]# Working Imperatively# Modify Resourcekubectl edit -n [namespace] [resource-kind]/[resource-name]# Delete Resourcekubectl delete [resource-kind]/[resource-name]# Create Resourcekubectl create -f [resource-file]# Working Declaratively# Use Server-Side Apply (SSA)kubectl apply --server-side -f [resource-file]# Events and Logs# Show Events for Resourcekubectl get events -n [namespace] --field-selector involvedObject.kind=[kind] --field-selector involvedObject.name=[name]# Filtering Events by Typekubectl get events --field-selector type=Warning# Filtering Events by Involved Object Namekubectl get events --field-selector involvedObject.name=[resource-name]# Show Resource Usagekubectl top

其他资源

  • 精选插件列表:https://github.com/ishantanu/awesome-kubectl-plugins
  • 别名列表:https://github.com/ahmetb/kubectl-aliases
  • Krew 插件仓库:https://krew.sigs.k8s.io/plugins/

本文链接:http://www.28at.com/showinfo-26-87504-0.html从未有过的Kubectl指南

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: JS世界的新星:探索除了Vue和React之外的“后起之秀”

下一篇: 压力很大吗?可以考虑移动下 WAL 日志目录

标签:
  • 热门焦点
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    7月20日消息,据外媒报道,研究机构的报告显示,在全球智能手机出货量同比仍在下滑的大背景下,印度这一有潜力的市场也未能幸免,出货量同比也有下滑,多家厂
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
Top