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

从未有过的Kubectl指南

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

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

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

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

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

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

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

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

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

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

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

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

免责声明

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

开始之前

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

安装

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

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

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

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

brew install kubectl

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

choco install kubernetes-cli

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

kubectl version --client

kubectl 命令:

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

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

声明式工作

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

创建 YAML 文件

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

kubectl create -f glasskube-deployment.yaml

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

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

kubectl apply -f manifest.yaml

服务器端应用 (SSA)

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

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

插件和工具

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

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

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

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

可见性

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

k9s

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

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

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

kubectl tree

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

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

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

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

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

故障排除

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

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

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

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

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

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

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

日志记录

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

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

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

kubectl krew install stern

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

别名

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

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

Kubectl 速查表

没有速查表,任何指南都是不完整的,对吧?MnM28资讯网——每日最新资讯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/

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

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

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

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

标签:
  • 热门焦点
Top
Baidu
map