1 介绍
kubectl是操作k8s集群的命令行工具,是 Kubernetes 用户和管理员必备的管理工具。
kubectl通过与apiserver交互可以实现对k8s集群中各种资源的增删改查。
2 安装部署
2.1 linux安装方式
2.1.1 安装最新版本
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
2.1.2 安装特定版本
下载特定版本请使用特定版本替换$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt),将其换成固定版本
比如要在Linux上下载v1.20.0版本,命令如下:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/amd64/kubectl
2.1.3 全局配置
mv ./kubectl /usr/bin
2.2 macOS安装方式
2.2.1 安装最新版本
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
2.2.2 安装特定版本
下载特定版本请使用特定版本替换$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt),将其换成固定版本。
比如要在MacOS上下载v1.20.0版本,命令如下:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/darwin/amd64/kubectl
2.3 设置环境变量
$ chmod +x ./kubectl
$ mv kubectl /usr/bin
3 配置kubectl
kubectl安装在k8s的master节点,通过调用在$HOME/.kube目录下config的文件来操作k8s资源, 也可以通过设置Kubeconfig环境变量或设置--kubeconfig来指定其他的kubeconfig文件。
3.1 检查kubectl配置
通过获取集群状态来检查kubectl是否正确配置
$ kubectl cluster-info
如果看到一个URL响应,kubectl被正确配置为访问您的集群。
若出现以下报错,则说明配置不正确。
The connection to the server <server-name:port> was refused - did you specify the right host or port?
需要确认config文件的正确性以及kubectl加载config的环境变量是否一致。
4 kubectl命令
4.1 语法
kubectl [command] [TYPE] [NAME] [flags]
- command:指定要对一个或多个资源执行的操作,例如create、get、describe、delete等;
- TYPE:指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果;
- NAME:资源名称。
- flags:指定可选的参数。例如,可以使用-s或-server参数指定 Kubernetes API服务器的地址和端口。
4.2 命令集
4.3 帮助命令
-
kubectl -h
查看子命令列表 -
kubectl options
查看全局选项 -
kubectl <command> --help
查看子命令的帮助 -
kubectl [command] [PARAMS] -o=<format>
设置输出格式(如 json、yaml、jsonpath 等) -
kubectl explain [RESOURCE]
查看资源的定义
4.4 子命令
kubectl -h
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
Basic Commands (Beginner):
create Create a resource from a file or from stdin.
expose Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
run Run a particular image on the cluster
set Set specific features on objects
Basic Commands (Intermediate):
explain Documentation of resources
get Display one or many resources
edit Edit a resource on the server
delete Delete resources by filenames, stdin, resources and names, or by resources and label selector
Deploy Commands:
rollout Manage the rollout of a resource
scale Set a new size for a Deployment, ReplicaSet or Replication Controller
autoscale Auto-scale a Deployment, ReplicaSet, or ReplicationController
Cluster Management Commands:
certificate Modify certificate resources.
cluster-info Display cluster info
top Display Resource (CPU/Memory/Storage) usage.
cordon Mark node as unschedulable
uncordon Mark node as schedulable
drain Drain node in preparation for maintenance
taint Update the taints on one or more nodes
Troubleshooting and Debugging Commands:
describe Show details of a specific resource or group of resources
logs Print the logs for a container in a pod
attach Attach to a running container
exec Execute a command in a container
port-forward Forward one or more local ports to a pod
proxy Run a proxy to the Kubernetes API server
cp Copy files and directories to and from containers.
auth Inspect authorization
Advanced Commands:
diff Diff live version against would-be applied version
apply Apply a configuration to a resource by filename or stdin
patch Update field(s) of a resource using strategic merge patch
replace Replace a resource by filename or stdin
wait Experimental: Wait for a specific condition on one or many resources.
convert Convert config files between different API versions
kustomize Build a kustomization target from a directory or a remote url.
Settings Commands:
label Update the labels on a resource
annotate Update the annotations on a resource
completion Output shell completion code for the specified shell (bash or zsh)
Other Commands:
alpha Commands for features in alpha
api-resources Print the supported API resources on the server
api-versions Print the supported API versions on the server, in the form of "group/version"
config Modify kubeconfig files
plugin Provides utilities for interacting with plugins.
version Print the client and server version information
Usage:
kubectl [flags] [options]
Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).
4.4.1 基础命令
子命令 | 功能 |
create | 创建资源 |
get | 获取资源信息 |
expose | 取一个复制控制器、服务或pod,并将其expose为一个新的Kubernetes服务。 |
run | 在集群中运行一个指定的景象 |
set | 更改当前资源信息 |
explain | 获取资源及其字段的文档 |
edit | 编辑修改资源 |
delete | 删除资源 |
4.4.2 部署命令
子命令 | 功能 |
rollout | 管理资源的发布 |
scale | 扩缩容pod的数量 |
autoscale | 自动调整pod的数量 |
4.4.3 集群管理命令
子命令 | 功能 |
certificate | 修改证书资源 |
cluster-info | 显示集群信息 |
top | 显示资源(CPU/内存)使用情况 |
cordon | 将节点标记为不可调度 |
uncordon | 安全驱逐节点上面所有的 pod |
drain | 将节点标记为可调度的状态 |
taint | 给某个Node节点设置taint,Node被设置上taint之后就和Pod之间存在一种相斥的关系,可以让Node拒绝Pod的调度执行,也能将Node已经存在的Pod驱逐出去。 |
4.4.4 问题排查命令
子命令 | 功能 |
describe | 描述资源内部信息 |
logs | 输出pod中一个容器的日志 |
attach | 直接查看容器中以daemon形式运行的进程的输出 |
exec | 在一个已经运行的容器中执行一条shell命令 |
port-forward | 通过端口转发映射本地端口到指定的应用端口,从而访问集群中的应用程序(Pod). |
proxy | 运行Kubernetes API服务器的代理 |
cp | 用于pod和外部的文件交换,将文件和目录复制到容器或从容器复制到容器。 |
auth | 检查授权 |
debug | k8s pod 诊断工具,能够帮助进行 Pod 的排障诊断 |
4.4.5 高级命令
子命令 | 功能 |
diff | 对比本地json/yaml文件与kube-apiserver中运行的配置文件是否有差异 |
apply | 通过json/yaml文件 标准输入对资源进行配置更新或者创建 |
patch | 通过patch方式修改资源对象字段(补丁式) |
replace | 通过json/yaml文件或者标准输入来替换资源对象 |
wait | 在一个或者多个资源上等待条件达成 |
kustomize | 定制kubernetes配置 |
4.4.6 设置命令
子命令 | 功能 |
label | 增删改资源的标签 |
annotate | 更新一个或者多个资源对象的注释(annotaion)信息 |
completion | 命令自动补全 |
4.4.7 其他命令
子命令 | 功能 |
api-resources | 管理kubeconfig配置文件 |
api-versions | 运行命令行插件功能 |
config | 查看客户端服务端的系统版本信息 |
plugin | 列出当前kubernetes系统支持的资源组和资源版本表现形式为/ |
version | 列出当前kubernetes系统支持的resource资源列表 |
options | 查看支持的参数列表 |