kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行管理。本节内容将对kubectl的子命令和用法进行详细描述。

一、kubectl 用法概述

  • kubectl语法运行如下命令:

    kubectl [command] [TYPE] [NAME] [FLAGS]
    其中command、TYPE、NAME、FLAGS的含义如下:
  1. command:指定要在一个或多个资源执行的操作,例如操作create,get,describe,delete。
  2. TYPE:指定资源类型Resource types。Resource types会区分大小写,也可以指定单数,复数或缩写的形式。
    例如以下三种TYPE是等价的。
    kubectl get pod pod1
    kubectl get pods pod1
    kubectl get po pod1
  3. NAME:指定Resource的Name。Name区分大小写,如果省略Name,则显示所有资源的详细信息,例如:
    kubectl get pods
  4. FLAGS:kubectl 子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
  • kubectl可操作的资源对象类型如下表:
    在一个命令行也可可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下:
  1. 获取多个Pod 的信息
    kubectl get pods pod1 pod2 pod2
  2. 获取多种对象的信息
    kubectl get pod/pod1 rc/rc1
  3. 同时应用多个yaml文件,以多个-f file 参数表示
    kubectl get pod -f pod1.yaml -f pod2.yaml
    kubectl create -f pod1.yaml -f rc1.yaml -f servicel.yaml

二、kubectl 子命令详解

Kubernetes子命令非常丰富,涵盖了对Kubernetes集群的主要操作,包括资源对象的创建、查看、修改、配置、删除、运行等。详细的子命令如下列表所示。

Operation
Syntax
Description
kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
为一个或多个资源添加注释
api-versions
kubectl api-versions [flags]
列出支持的API版本。
apply
kubectl apply -f FILENAME [flags]
对文件或stdin的资源进行配置更改。
attach
kubectl attach POD -c CONTAINER [-i] [-t] [flags]
连接到一个运行的容器,既可以查看output stream,也可以与容器(stdin)进行交互。
autoscale
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
自动扩容/缩容由replication controller管理的一组pod。
cluster-info
kubectl cluster-info [flags]
显示有关集群中master和services的终端信息。
config
kubectl config SUBCOMMAND [flags]
修改kubeconfig文件。有关详细信息,请参阅各个子命令。
create
kubectl create -f FILENAME [flags]
从file或stdin创建一个或多个资源。
delete
kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]
从file,stdin或指定label 选择器,names,resource选择器或resources中删除resources。
describe
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]
显示一个或多个resources的详细状态。
kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]
使用默认编辑器编辑和更新服务器上一个或多个定义的资源。
exec
kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]
对pod中的容器执行命令。
explain
kubectl explain [--include-extended-apis=true] [--recursive=false] [flags]
获取各种资源的文档。例如pod,node,services等
expose
kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [----external-ip=external-ip-of-service] [--type=type] [flags]
将 replication controller,service或pod作为一个新的Kubernetes service显示。
get
kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
列出一个或多个资源。
label
kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
添加或更新一个或多个资源的flags。
logs
kubectl logs POD [-c CONTAINER] [--follow] [flags]
在pod中打印容器的日志。
patch
kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]
使用strategic merge 补丁程序更新资源的一个或多个字段。
port-forward
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]
将一个或多个本地端口转发到pod。
proxy
kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]
在Kubernetes API服务器运行代理。
replace
kubectl replace -f FILENAME
从file或stdin替换资源。
rolling-update
kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags]
通过逐步替换指定的replication controller及其pod来执行滚动更新。
run
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]
在集群上运行指定的镜像。
scale
kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags]
更新指定replication controller的大小。
stop
kubectl stop
已弃用:请参阅kubectl delete
uncordon
kubectl uncordon NODE [flags]
将NODE设置为schedulable
version
kubectl version [--client] [flags]
显示客户端和服务器上运行的Kubernetes版本。
                                                                                                                                           表一 kubectl子命令详解
上表几乎包含kubectl对集群操作的所有子命令,当然还有一些新的命令没有更新上去,如convert、taint、set等。

三、kubectl 输出格式

kubectl 命令可以以多种格式对结果进行显示,输出的格式通过-o参数指定:
kubectl [command] [TYPE] [NAME] -o=
根据不同的命令的输出结果,可选的输出格式如表所示:
输出格式
描述
-o=custom-columns=<spec>
使用逗号分隔的custom columns列表打印一个表。
-o=custom-columns-file=<filename>
使用文件中的custom columns模板打印表<filename>。
-o=json
输出JSON格式的API对象。
-o=jsonpath=<template>
打印在jsonpath表达式中定义的字段。
-o=jsonpath-file=<filename>
打印由 file中的jsonpath表达式定义的字段<filename>。
-o=name
仅打印资源名称,而不打印其他内容。
-o=wide
以纯文本格式输出任何附加信息。对于pod,包括node名称。
-o=yaml
输出YAML格式的API对象。
                                   表二 kubectl命令的输出格式列表
 
  • 常见的输出格式如下:

  1. 显示Pod 的更多信息
    kubectl get pod [pod-name] -o wide
  2. 以yaml格式显示Pod 的更多信息
    kubectl get pod [pod-name] -o yaml
  3. 以json格式显示Pod 的更多信息
    kubectl get pod [pod-name] -o json
  4. 以自定义列名显示Pod信息:
    kubectl get pod -o=custom-
    columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
  5. 基于文件的自定义列名输出
    kubectl get pods -o=custom-columns-file=template.txt
     鉴于篇幅有点长,上面我就不一一举例了。

五、kubectl 操作示例

  • 创建资源对象

    根据yaml 配置文件一次性创建service 和 rc:
    kubectl create -f my-service.yaml -f my-rc.yaml
  • 查看资源对象

  1. 查看所有的Pod 列表
    kubectl get pods
  2. 查看rc 和 service 列表
    kubectl get rc,service
  • 描述资源对象

  1. 显示Node的详细信息
    kubectl describe nodes
  2. 显示Pod 的详细信息
    kubectl describe pods /
  3. 显示由RC管理的Pod 的信息
    kubectl describe pods
  • 删除资源对象

  1. 基于pod.yaml定义的名称删除Pod:
    kubectl delete -f pod.yaml
  2. 删除所有包含某个label的Pod 和Service
    kubectl delete pods,services -l name=
  3. 删除所有Pod
    kubectl delete pod --all
         生产环境,我们一般用kubectl delete pod pod-name 来重启某个pod
  • 执行容器的命令

  1. 执行Pod 的date 命令,默认使用Pod 中的第一个容器执行
    kubectl exec date
  2. 指定Pod 中某个容器执行date 命令
    kubectl exec -c date
  3. 通过/bin/bash 获得Pod 中某个容器的TTY,相当于登陆容器:
    kubectl exec -ti -c /bin/bash
  • 查看容器的日志

  1. 查看容器输出到stdout的日志
    kubectl logs
  2. 跟踪查看容器的日志,相当于tail -f 命令的结果
    kubectl logs -f -c
 
 
  
 

Kubernetes 实践指南之Kubernetes 的命令行工具详解的更多相关文章

  1. Java之jdk命令行工具详解

    JPS---虚拟机进程状况工具 常用的参数: -l 输出Java应用程序的main class的完整包 -q 仅显示pid,不显示其它任何相关信息 -m 输出传递给main方法的参数 -v 输出传递给 ...

  2. VLC命令行参数详解

    VLC命令行参数详解 2012-11-29 14:00 6859人阅读 评论(0) 收藏 举报 Usage: vlc [options] [stream] ...You can specify mul ...

  3. 【curl】Linux下命令行curl详解

    在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. 语法:# c ...

  4. Redis进阶实践之十四 Redis-cli命令行工具使用详解第一部分

    一.介绍       redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redis的东西要看的都差不多看完了.网上的东西也不多了.剩下来就看看官网的东西吧,一遍翻译,一遍测试. ...

  5. Redis进阶实践之十四 Redis-cli命令行工具使用详解

    转载来源:http://www.cnblogs.com/PatrickLiu/p/8508975.html 一.介绍 redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redi ...

  6. Redis进阶实践之十五 Redis-cli命令行工具使用详解第二部分(结束)

    一.介绍           今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完成第二部分.话不多说,开始我们今天的讲解.如果要想看第一篇文章,地址如下:http: ...

  7. memcached命令行操作详解,命令选项的详细解释

    连接到memcached命令行下:  telnet 127.0.0.1 11211 1.set / add / replace : 格式:<command> <key> < ...

  8. httprunner学习15-运行用例命令行参数详解

    前言 HttpRunner 在命令行中启动测试时,通过指定参数,可实现丰富的测试特性控制. 命令行参数CLI 使用 -h 查看相关命令行参数 hrun -h 参数名称 参数值 参数说明 -h, --h ...

  9. git命令行操作详解

    目录 1.常用操作 1.1 新建代码库 1.2 配置 1.3 remote管理 1.4 添加和撤销操作 1.5 代码提交 1.6 分支操作 1.7 查看信息 1.8 pull操作 1.9 push操作 ...

随机推荐

  1. linux使用vim打开乱码问题

    在windows中编辑好的汉字文本文档,上传到Linux下打开乱码. [root@localhost ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-36.el7.x ...

  2. 集束搜索beam search和贪心搜索greedy search

    贪心搜索(greedy search) 贪心搜索最为简单,直接选择每个输出的最大概率,直到出现终结符或最大句子长度. 集束搜索(beam search) 集束搜索可以认为是维特比算法的贪心形式,在维特 ...

  3. vs2013突然打不开项目,项目全部不兼容

    转载:https://forum.cocos.com/t/vs2013/40931 转载:https://jingyan.baidu.com/article/cdddd41c7c6b5353cb00e ...

  4. Android中的数据储存

    数据的储存是一个十分重要的功能,它涉及到各种类型的数据,各种的储存方式,今天就接触了Android中数据储存的简单应用,有一种方式是可以将存入的数据原封不动的存储起来,这里要用到openfileout ...

  5. IDEA 发布Api

    1.修改Main方法 代码: public class AlicsbapiApplication extends SpringBootServletInitializer { @Override pr ...

  6. javascript 之 函数

    注意:函数名仅仅是一个包含指针的变量而已 函数内部属性 arguments 和this 两个特殊对象 arguments:类数组对象,包含出入函数中的所有参数,主要用途是保存函数参数 callee:该 ...

  7. BUTXO详解

    在比原链中,每个交易消耗之前交易生成的BUTXO 然后生成新的 BUTXO,账户的余额即所有属于该地址的未花费 BUTXO 集合,BTM 的全局状态即当前所有未花费的BUTXO 集合.我们用一个具体的 ...

  8. C语言: 简易图书管理系统

    这只是一个简易的图书管理系统,虽然它有千余行代码,不过终究是个简单基本的东西. 在Linux系统下,用Vim编写,如要在Windows上运行则需要一些改动,主要是一些调用系统函数的改动.如Window ...

  9. 【python 3】 函数 进阶

    函数进阶 1.函数命名空间和作用域 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input , print , str ...

  10. 【GO】【LiteIDE】

    https://blog.csdn.net/qq_32034593/article/details/82986311 下载地址:https://www.golangtc.com/download/li ...