命令行工具(kubectl)
使用k8sAPI与k8s集群的容器编排进行通信的命令行工具
语法
kubectl [command] [TYPE] [NAME] [flags]
-
command
:指定要对一个或多个资源执行的操作,例如create
、get
、describe
、delete
。 -
TYPE
:指定资源类型。资源类型不区分大小写, 可以指定单数、复数或缩写形式。 -
NAME
:指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息。
对多个资源执行操作时,可以按类型和名称指定每个资源。TYPE1 name1 name2
TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>
用一个或多个文件指定资源:
-f file1 -f file2 -f file<#>
-
flags
: 指定可选的参数。
常见命令
apply | kubectl apply -f FILENAME [flags] | 从文件对资源应用配置更改。 |
---|---|---|
create | kubectl create -f FILENAME [flags] | 从文件创建一个或多个资源。 |
delete | kubectl delete (-f FILENAME | TYPE [NAME |
describe | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX |
edit | kubectl edit (-f FILENAME | TYPE NAME |
exec | kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args…]] | 对 Pod 中的容器执行命令。 |
get | kubectl get (-f FILENAME | TYPE [NAME |
label | kubectl label (-f FILENAME | TYPE NAME |
logs | kubectl logs POD [-c CONTAINER] [–follow] [flags] | 打印 Pod 中容器的日志。 |
taint | kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 … KEY_N=VAL_N:TAINT_EFFECT_N [options] | 更新一个或多个节点上的污点。 |
top | kubectl top (POD | NODE) [flags] [options] |
常见资源类型
资源名 | 缩写名 | API版本 | 资源类型 | 中文 |
---|---|---|---|---|
configmaps | cm | v1 | ConfigMap | 配置映射 |
endpoints | ep | v1 | Endpoints | 端点 |
events | ev | v1 | Event | 事件 |
namespaces | ns | v1 | Namespace | 命名空间 |
nodes | no | v1 | Node | 节点 |
persistentvolumeclaims | pvc | v1 | PersistentVolumeClaim | 持久卷声明 |
persistentvolumes | pv | v1 | PersistentVolume | 持久卷 |
pods | po | v1 | Pod | 容器组 |
secrets | v1 | Secret | 密钥 | |
serviceaccounts | sa | v1 | ServiceAccount | 服务账号 |
services | svc | v1 | Service | 服务 |
daemonsets | ds | apps/v1 | DaemonSet | 守护进程集 |
deployments | deploy | apps/v1 | Deployment | 部署 |
replicasets | rs | apps/v1 | ReplicaSet | 副本集 |
statefulsets | sts | apps/v1 | StatefulSet | 有状态副本集 |
cronjobs | cj | batch/v1 | CronJob | 定时任务 |
jobs | batch/v1 | Job | 任务 | |
ingresses | ing | networking.k8s.io/v1 | Ingress | 入口资源 |
storageclasses | sc | storage.k8s.io/v1 | StorageClass | 存储类 |
API 版本是 Kubernetes API 的一个重要组成部分,用于标识 API 对象的不同版本。Kubernetes API 允许用户通过声明式配置来管理集群中的资源,而 API 版本提供了一种机制,使得 Kubernetes 能够支持和维护不同版本的 API 对象。
API 版本通常由两部分组成,用 /
分隔:
- 组(Group):表示 API 对象所属的 API 组。如果组是核心 API 组,则此部分可以省略或为
core
或kube
。对于自定义资源和扩展 API,组名是必需的。 - 版本(Version):表示 API 的具体版本号,如
v1
、v1beta1
等。版本号可以是稳定的(如v1
)、不完全稳定的(如v2alpha1
、v1beta2
)或处于测试阶段的。
例如:
v1
表示核心 API 的稳定版本。apps/v1
表示apps
API 组的稳定版本。batch/v1beta1
表示batch
API 组的第一个测试版本。storage.k8s.io
API 组的 Kubernetes 存储相关资源类型
可选项
格式化输出
-o
或者--output
语法
kubectl [command] [TYPE] [NAME] -o <output_format>
-o json | 输出 JSON 格式的 API 对象 |
---|---|
-o wide | 以纯文本格式输出,包含所有附加信息。对于 Pod 包含节点名。 |
-o yaml | 输出 YAML 格式的 API 对象 |
常见操作
#使用yaml文件生成资源
kubectl apply -f xxx.yaml #可以更新旧的资源
kubectl create -f xxx.yaml #创建新的资源
# 以纯文本输出格式列出所有 Pod。
kubectl get pods
# 以纯文本输出格式列出所有 Pod,并包含附加信息(如节点名)。
kubectl get pods -o wide
显示名为 <pod-name> 的 Pod 的详细信息。
kubectl describe nodes <node-name>
# 显示名为 <pod-name> 的 Pod 的详细信息。
kubectl describe pods/<pod-name>
# 删除所有 Pod,包括未初始化的 Pod。
kubectl delete pods --all
# 返回 Pod <pod-name> 的日志快照。
kubectl logs <pod-name>
#以bash方式登陆到Pod中的某个容器里
kubectl exec -it <pod-name> -c <container-name> /bin/bash