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. How to using Piwis Tester II code Porsche rear end electronics

    V18.100 Piwis Tester II Diagnostic Tool For Porsche With CF30 Laptop High Quality Top 7 Reasons to G ...

  2. 4.JAVA基础复习——JAVA中的构造函数与this关键字

    构造函数:构建创造对象时调用的函数 特点: 1.函数名与类名相同. 2.不用定义返回值类型. 3.没有具体的返回值. public class Demo { private int age; priv ...

  3. Josephina and RPG HDU - 4800

    A role-playing game (RPG and sometimes roleplaying game) is a game in which players assume the roles ...

  4. Java锁与CAS

    一.加锁与无锁CAS 在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发 ...

  5. 在linux和windows用c++编写c接口的动态库

    linux 动态的头文件api.h #ifndef _API_H #define _API_H #ifdef DLL_IMPLEMENT #define DLL_EXPORT extern " ...

  6. 详解docker中容器devicemapper设备的挂载流程

    事故起因 版本说明:本文中docker版本主要基于1.10版本,操作系统为centos7.devicemapper在文中缩写为dm. 某个用户的容器启动不起来,启动时候一直报错.通过docker lo ...

  7. jQuary学习の四の遍历

    向上遍历DOM树: parent():返回被选元素的直接父元素 parents():返回被选元素的所有祖先元素(当后边参数存在时则表示其中与参数相同的祖先元素) parentsUntil()返回介于两 ...

  8. Qt Designer问题(挖坑)

    同时用两个VS的Qt Designer打开.ui文件,关闭Qt Designer之后再打开发现Qt Designer不在打开方式了.要重启VS才行.

  9. Cent OS & Windows 双系统自定义引导菜单

    系统环境 系统:Windows 10 (64-bit) & Cent OS 7 (64-bit) 引导程序:Grub2 编辑 grub.cfg 为了方便,在终端使用命令 su 输入密码进入超级 ...

  10. React点击操作自动定位到另外一个元素

    使用Ref 方式一 使用ScrollIntoView方法 import React from 'react' export default class ScrollToElement extends ...