Kubernetes
简介
Kubectl是Kubernetes的命令行工具,用于与Kubernetes API进行交互,管理Kubernetes集群中的应用程序和资源。它可以管理Kubernetes集群中的各种资源,包括Pod、Deployment、Service、ConfigMap、Secret等。它提供了丰富的命令行选项和子命令,可以用于创建、更新、删除和查看Kubernetes资源的状态。它还支持Kubernetes的命名空间(Namespace)和上下文(Context)功能,可以用于管理多个Kubernetes集群和命名空间之间的切换。Kubectl是Kubernetes集群管理的重要工具之一,对于Kubernetes的使用和学习都是必不可少的。
kubectl用法详解
kubectl语法,使用以下语法从终端窗口运行 kubectl 命令:
kubectl [command] [TYPE] [NAME] [flags]
其中 command、TYPE、NAME 和 flags 分别是:
command:指定要对一个或多个资源执行的操作,例如 create、get、describe、delete。TYPE:指定资源类型。资源类型不区分大小写, 可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1NAME:指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息。例如:kubectl get pods。在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件。#分别指定多个资源类型:
kubectl get pod/example-pod1 replicationcontroller/example-rc1
#用一个或多个文件指定资源
kubectl get -f ./pod.yamlflags: 指定可选的参数。例如,可以使用 -s 或 –server 参数指定 Kubernetes API 服务器的地址和端口。
kubectl 子命令详解
kebectl的子命令非常丰富,涵盖了对kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等。
下表包含所有 kubectl 操作的简短描述和普通语法:
kubectl annotate – 更新资源所关联的注解
kubectl api-resources – 打印服务器上所支持的 API 资源
kubectl api-versions – 以“组/版本”的格式输出服务端所支持的 API 版本
kubectl apply – 基于文件名或标准输入,将新的配置应用到资源上
kubectl attach – 连接到一个正在运行的容器
kubectl auth – 检查授权信息
kubectl autoscale – 对一个资源对象(Deployment、ReplicaSet 或 ReplicationController )进行扩缩
kubectl certificate – 修改证书资源
kubectl cluster-info – 显示集群信息
kubectl completion – 根据已经给出的 Shell(bash 或 zsh),输出 Shell 补全后的代码
kubectl config – 修改 kubeconfig 配置文件
kubectl convert – 在不同的 API 版本之间转换配置文件
kubectl cordon – 标记节点为不可调度的
kubectl cp – 将文件和目录拷入/拷出容器
kubectl create – 通过文件或标准输入来创建资源
kubectl debug – 创建用于排查工作负载和节点故障的调试会话
kubectl delete – 通过文件名、标准输入、资源和名字删除资源,或者通过资源和标签选择算符来删除资源
kubectl describe – 显示某个资源或某组资源的详细信息
kubectl diff – 显示目前版本与将要应用的版本之间的差异
kubectl drain – 腾空节点,准备维护
kubectl edit – 修改服务器上的某资源
kubectl events – 列举事件
kubectl exec – 在容器中执行相关命令
kubectl explain – 显示资源文档说明
kubectl expose – 给定副本控制器、服务、Deployment 或 Pod,将其暴露为新的 kubernetes Service
kubectl get – 显示一个或者多个资源信息
kubectl kustomize – 从目录或远程 URL 中构建 kustomization
kubectl label – 更新资源的标签
kubectl logs – 输出 Pod 中某容器的日志
kubectl options – 打印所有命令都支持的共有参数列表
kubectl patch – 基于策略性合并修补(Stategic Merge Patch)规则更新某资源中的字段
kubectl plugin – 运行命令行插件
kubectl port-forward – 将一个或者多个本地端口转发到 Pod
kubectl proxy – 运行一个 kubernetes API 服务器代理
kubectl replace – 基于文件名或标准输入替换资源
kubectl rollout – 管理资源的上线
kubectl run – 在集群中使用指定镜像启动容器
kubectl scale – 为一个 Deployment、ReplicaSet 或 ReplicationController 设置一个新的规模值
kubectl set – 为对象设置功能特性
kubectl taint – 在一个或者多个节点上更新污点配置
kubectl top – 显示资源(CPU/内存/存储)使用率
kubectl uncordon – 标记节点为可调度的
kubectl version – 打印客户端和服务器的版本信息
kubectl wait – 实验性:等待一个或多个资源达到某种状态
kubectl参数列表
在使用Kubernetes命令行工具Kubectl时,有很多不同的参数可以用来控制命令的行为。这里是一些常见的参数介绍:
–add-dir-header 设置为 true 表示添加文件目录到日志信息头中
–alsologtostderr 表示将日志输出到文件的同时输出到 stderr
–as string 以指定用户的身份执行操作
–as-group stringArray 模拟指定的组来执行操作,可以使用这个标志来指定多个组。
–azure-container-registry-config string 包含 Azure 容器仓库配置信息的文件的路径。
–cache-dir string 默认值: “$HOME/.kube/cache” 默认缓存目录
–certificate-authority string 指向证书机构的 cert 文件路径
–client-certificate string TLS 使用的客户端证书路径
–client-key string TLS 使用的客户端密钥文件路径
–cloud-provider-gce-l7lb-src-cidrs cidrs 默认值: 130.211.0.0/22,35.191.0.0/16 在 GCE 防火墙中开放的 CIDR,用来进行 L7 LB 流量代理和健康检查。
–cloud-provider-gce-lb-src-cidrs cidrs 默认值: 130.211.0.0/22,209.85.152.0/22,209.85.204.0/22,35.191.0.0/16 在 GCE 防火墙中开放的 CIDR,用来进行 L4 LB 流量代理和健康检查。
–cluster string 要使用的 kubeconfig 集群的名称
–context string 要使用的 kubeconfig 上下文的名称
—default–not-ready-toleration-seconds int 默认值: 300 表示 `notReady` 状态的容忍度秒数:默认情况下,`NoExecute` 被添加到尚未具有此容忍度的每个 Pod 中。
—default-unreachable-toleration-seconds int 默认值: 300 表示 `unreachable` 状态的容忍度秒数:默认情况下,`NoExecute` 被添加到尚未具有此容忍度的每个 Pod 中。
-h, –help kubectl 操作的帮助命令
–insecure-skip-tls-verify 设置为 true,则表示不会检查服务器证书的有效性。这样会导致你的 HTTPS 连接不安全。
–kubeconfig string CLI 请求使用的 kubeconfig 配置文件的路径。
—log-backtrace-at traceLocation 默认值: 0 当日志机制运行到指定文件的指定行(file:N)时,打印调用堆栈信息
—log-dir string 如果不为空,则将日志文件写入此目录
—log-file string 如果不为空,则将使用此日志文件
—log-file-max-size uint 默认值: 1800 定义日志文件的最大尺寸。单位为兆字节。如果值设置为 0,则表示日志文件大小不受限制。
—log-flush-frequency duration 默认值: 5s 两次日志刷新操作之间的最长时间(秒)
–logtostderr 默认值: true 日志输出到 stderr 而不是文件中
–match-server-version 要求客户端版本和服务端版本相匹配
-n, —namespace string 如果存在,CLI 请求将使用此命名空间
–one-output 如果为 true,则只将日志写入初始严重级别(而不是同时写入所有较低的严重级别)。
–password string API 服务器进行基本身份验证的密码
–profile string 默认值: “none” 要记录的性能指标的名称。可取 (none|cpu|heap|goroutine|threadcreate|block|mutex) 其中之一。
–profile-output string 默认值: “profile.pprof” 用于转储所记录的性能信息的文件名
–request-timeout string 默认值: “0” 放弃单个服务器请求之前的等待时间,非零值需要包含相应时间单位(例如:1s、2m、3h)。零值则表示不做超时要求。
-s, –server string Kubernetes API 服务器的地址和端口
–skip-headers 设置为 true 则表示跳过在日志消息中出现 header 前缀信息
–skip-log-headers 设置为 true 则表示在打开日志文件时跳过 header 信息
–stderrthreshold severity 默认值: 2 等于或高于此阈值的日志将输出到标准错误输出(stderr)
–token string 用于对 API 服务器进行身份认证的持有者令牌
–user string 指定使用 kubeconfig 配置文件中的用户名
–username string 用于 API 服务器的基本身份验证的用户名
-v, –v Level 指定输出日志的日志详细级别
–version version[=true] 打印 kubectl 版本信息并退出
–vmodule moduleSpec 以逗号分隔的 pattern=N 设置列表,用于过滤文件的日志记录
4.Kubectl 输出格式
所有 kubectl 命令的默认输出格式都是人类可读的纯文本格式。要以特定格式在终端窗口输出详细信息, 可以将 -o 或 –output 参数添加到受支持的 kubectl 命令中。
-o custom-columns=<spec> 使用逗号分隔的自定义列列表打印表。
-o custom-columns-file=<filename> 使用 <filename> 文件中的自定义列模板打印表。
-o json 输出 JSON 格式的 API 对象
-o jsonpath=<template> 打印 jsonpath 表达式定义的字段
-o jsonpath-file=<filename> 打印 <filename> 文件中 jsonpath 表达式定义的字段。
-o name 仅打印资源名称而不打印任何其他内容。
-o wide 以纯文本格式输出,包含所有附加信息。对于 Pod 包含节点名。
-o yaml 输出 YAML 格式的 API 对象。
语法
kubectl [command] [TYPE] [NAME] -o <output_format>
kubectl操作示例
以下是kubectl的一些常用用法:1. 查看集群信息
kubectl cluster-info
该命令将显示集群的一些基本信息,例如Kubernetes API服务器的地址、Kubernetes Dashboard的地址等。2. 查看节点信息
kubectl get nodes
该命令将显示集群中所有节点的信息,例如节点名称、IP地址、状态等。3. 查看Pod信息
kubectl get pods
该命令将显示集群中所有Pod的信息,例如Pod名称、所在节点、状态等。4. 创建或更新资源
kubectl apply -f <filename>
该命令将根据指定的YAML文件创建或更新Kubernetes资源。例如,可以使用该命令创建一个Deployment或Service。5. 删除资源
kubectl delete <resource_type> <resource_name>
该命令将删除指定的Kubernetes资源。例如,可以使用该命令删除一个Pod或Service。6. 查看日志
kubectl logs <pod_name>
该命令将显示指定Pod的日志。
7. 进入Pod
kubectl exec -it <pod_name> — /bin/bash
该命令将进入指定Pod,并打开一个bash终端。
总结
以上是kubectl的一些常用用法,还有很多其他命令和选项,可以使用以下命令查看kubectl的帮助文档:
kubectl —help
暂无评论内容