前言
在搭建 k8s 集群之前, 我们需要先了解下 kubectl 的使用, 以便在集群部署出现问题时进行检查和处理. 命令和语法记不住没有关系, 但是请记住主要的语法和命令以及帮助命令的使用.
在下一篇, 我们将讲述使用 Kubeadm 来创建 k8s 集群.
目录
使用 kubectl 管理 k8s 集群
概述
语法
主要命令 (command) 说明
资源类型 (TYPE) 说明
命令标准 (flags) 说明
格式化输出
使用 kubectl 管理 k8s 集群
概述
Kubectl 是一个命令行界面, 用于运行针对 Kubernetes 集群的命令. Kubectl 的配置文件在 $HOME/.kube 目录. 我们可以通过设置 KUBECONFIG 环境变量或设置命令参数 --kubeconfig 来指定其他位置的 kubeconfig 文件.
语法
我们可以使用以下语法 kubectl 从终端窗口运行命令:
kubectl [command] [TYPE] [NAME] [flags]
其中 command,TYPE,NAME, 和 flags 分别是:
command: 指定要在一个或多个资源进行的操作, 例如 create,get,describe,delete. 例如 "kubectl get cs".
TYPE: 指定资源类型. 资源类型不区分大小写, 可以指定单数, 复数或缩写形式. 例如, 以下命令产生相同的输出:
- kubectl get pod pod1
- kubectl get pods pod1
- kubectl get po pod1
NAME: 指定资源的名称. 名称区分大小写. 如果省略名称, 则显示所有资源的详细信息, 如 "kubectl get pods".
在对多个资源执行操作时, 我们可以按类型和名称指定每个资源, 或指定一个或多个文件:
1) 要按类型和名称指定资源:
如果资源类型相同, 则对资源进行分组: TYPE1 name1 name2 name<#>.
例: kubectl get pod example-pod1 example-pod2
分别指定多种资源类型: TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>.
例: kubectl get pod/example-pod1 replicationcontroller/example-rc1
2) 要使用一个或多个文件指定资源: -f file1 -f file2 -f file<#>
注意使用 YAML 而不是 JSON, 因为 YAML 往往更加用户友好, 特别是对于配置文件.
例: kubectl get pod -f ./pod.YAML
flags: 指定的可选标志, 不过值得注意的是, 使用命令行指定参数会覆盖默认值以及相关的环境变量. 例如, 我们可以使用 - s 或 --server 标志来指定 Kubernetes API 服务器的地址和端口.
主要命令 (command) 说明
Kubectl 的主体操作命令如下表所示:
操作
| 描述
|
annotate
| 添加或更新一个或多个资源的注释。
|
api-versions
| 列出可用的 API 版本。
|
apply
| 通过文件名或标准输入流 (stdin) 对资源进行配置,例如“kubectl apply --prune -f manifest.yaml -l app=nginx”
|
attach
| 附加到一个正在运行的容器,以查看输出流或与容器(stdin)交互。
|
autoscale
| 自动缩放由 Replication Controller 管理的 pod 集。
|
cluster-info
| 显示有关群集中主服务器和服务的端点信息。
|
config
| 指定 kubeconfig 文件。
|
create
| 从文件或标准输入流(stdin)创建一个或多个资源。例如使用 pod.json 创建 pod"kubectl create -f ./pod.json”。
|
delete
| 通过文件,标准输入、指定标签选择器,名称,资源选择器或资源来删除资源。例如删除所有的 pod"kubectl delete pods --all”。
|
describe
| 显示一个或多个资源的详细。例如查看 pod"coredns-5c98db65d4-h5v9h”的详情“kubectl describe pod coredns-5c98db65d4-h5v9h -n kube-system”,这里使用了 “-n” 指定了命名空间。
|
edit
| 在服务器上编辑一个资源。
|
exec
| 在 Pod 容器中执行命令。
|
explain
| 查看资源的文档。例如 pod,节点,服务等。例如“kubectl explain pods”。
|
expose
| 将复制控制器,服务或 pod 公开为新的 Kubernetes 服务。
|
get
| 列出一个或多个资源。例如“kubectl get pods -n kube-system -o wide”命令将列出 “kube-system” 命名空间下的所有 pod 并且以表格状输出 pod 的相关附加信息(节点名称)。
|
label
| 添加或更新一个或多个资源的标签。
|
logs
| 输出容器在 pod 中的日志。例如执行以下命令“kubectl logs etcd-k8s-master -n kube-system”将在终端中输出该容器的日志。
|
patch
| 使用 patch 策略更新资源的字段。
|
port-forward
| 将一个或多个本地端口转发到 pod。
|
proxy
| 运行代理指定到 Kubernetes API server。
|
replace
| 从文件或标准输入中替换资源。
|
rolling-update
| 通过逐步替换指定的 Replication Controller 及其 pod 来执行滚动更新。
|
run
| 在群集上运行指定的映像。例如运行 Nginx"kubectl run nginx --image=nginx”。
|
scale
| 设置新的 Deployment, ReplicaSet, Replication Controller 或者 Job 副本数量。例如“ubectl scale --replicas=3 -f foo.yaml”。
|
version
| 显示客户端和服务器上运行的 Kubernetes 版本。
|
api-resources
| 输出服务端支持的所有的 API 资源类型。
|
api-versions
| 输出服务端支持的 API 版本。
|
更多命令, 我们可以执行 "kubectl help" 来查看当前所有支持的命令, 也可以访问官方地址 ""来查看所有的命令说明. 在使用的过程中, 如果我们不了解单个命令的具体语法, 我们可以使用"kubectl <command> --help" 来获取详细介绍, 如:
kubectl scale --help
资源类型 (TYPE) 说明
我们可以使用 "kubectl api-resources" 命令来获取服务端目前支持的所有的资源类型, 如下图所示:
命令标准 (flags) 说明
同样的, 我们可以使用命令 "kubectl options" 来输出当前支持的所有可选标志:
其中, 在前面我们说过,"-s" 可以指定 Kubernetes API 服务器地址,"-n" 可以指定命名空间,"--kubeconfig" 可以指定 kubeconfig 配置文件. 主要的一些说明如下所示:
格式化输出
默认情况下, 所有的 kubectl 命令默认输出格式是可读的纯文本格式. 要以特定格式将详细信息输出到终端窗口, 我们需要使用 "-o" 或多个 "-output" 标志.
语法:
kubectl [command] [TYPE] [NAME] -o=<output_format>
支持的输出格式如下表所示:
输出格式
| 描述
|
-o=custom-columns=<spec>
| 输入指定的逗号分隔的列名列表来打印表格 & nbsp;。
|
-o=custom-columns-file=<filename>
| 使用文件中的 < a href="https://kubernetes.io/zh/docs/reference/kubectl/kubectl-overview/#custom-columns" ztid="277" ow="90" oh="20"> 自定义列模板 来打印表。
|
-o=json
| 输出 JSON 格式的 API 对象。
|
-o=jsonpath=<template>
| 打印在 < a href="https://kubernetes.io/docs/user-guide/jsonpath" ztid="288" ow="63" oh="20"> https://kubernetes.io/docs/user-guide/jsonpath 表达式中定义的字段
|
-o=jsonpath-file=<filename>
| 打印由文件中的 < a href="https://kubernetes.io/docs/user-guide/jsonpath" ztid="294" ow="63" oh="20"> https://kubernetes.io/docs/user-guide/jsonpath 表达式定义的字段。
|
-o=name
| 仅打印资源名称。
|
-o=wide
| 以纯文本格式输出任何附加信息。对于 pod,包括节点名称。
|
-o=yaml
| 输出 YAML 格式的 API 对象。
|
例如:
kubectl get pods -n kube-system -o wide
往期内容链接
Docker 最全教程 -- 从理论到实战(一)
Docker 最全教程 -- 从理论到实战(二)
Docker 最全教程 -- 从理论到实战(三)
Docker 最全教程 -- 从理论到实战(四)
Docker 最全教程 -- 从理论到实战(五)
Docker 最全教程 -- 从理论到实战(六)
Docker 最全教程 -- 从理论到实战(七)
Docker 最全教程 -- 从理论到实战(八)
Docker 最全教程之使用 Tencent Hub 来完成 CI(九)
Docker 最全教程 -- 数据库容器化(十)
Docker 最全教程 -- 数据库容器化之持久保存数据(十一)
Docker 最全教程 --MongoDB 容器化(十二)
Docker 最全教程 --Redis 容器化以及排行榜实战(十三)
Docker 最全教程之 Ubuntu 下安装 Docker(十四)
Docker 最全教程之树莓派和 Docker(十五)
Docker 最全教程之使用 TeamCity 来完成内部 CI,CD 流程(十六)
Docker 最全教程之使用 Docker 搭建 Java 开发环境(十七)
Docker 最全教程之 Go 实战, 墙裂推荐(十八)
Docker 最全教程之使用. NET Core 推送钉钉消息(十九)
Docker 最全教程之使用 Visual Studio Code 玩转 Docker(二十)
Docker 最全教程之 Python 爬网实战(二十一)
Docker 最全教程之使用 PHP 搭建个人博客站点(二十二)
Docker 最全教程之使用 Node.JS 搭建团队技术文档站(二十三)
Docker 最全教程之 MySQL 容器化 (二十四)
Docker+ Kubernetes 已成为云计算的主流(二十五)
容器化之后如何节省云端成本?(二十六)
了解 Kubernetes 主体架构(二十七)
使用 Minikube 部署本地 Kubernetes 集群(二十八)
来源: https://www.cnblogs.com/codelove/p/11198933.html