1 介绍

kubectl是操作k8s集群的命令行工具,是 Kubernetes 用户和管理员必备的管理工具。

kubectl通过与apiserver交互可以实现对k8s集群中各种资源的增删改查。

kubernetes ep如何查_java

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被正确配置为访问您的集群。

kubernetes ep如何查_java_02

 若出现以下报错,则说明配置不正确。

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 命令集

kubernetes ep如何查_API_03

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

查看支持的参数列表