Kubernetes 实践指南之Kubernetes 的命令行工具详解
kubectl作为客户端CLI工具,可以让用户通过命令行的方式对Kubernetes集群进行管理。本节内容将对kubectl的子命令和用法进行详细描述。
一、kubectl 用法概述
kubectl语法运行如下命令:
kubectl [command] [TYPE] [NAME] [FLAGS]其中command、TYPE、NAME、FLAGS的含义如下:
- command:指定要在一个或多个资源执行的操作,例如操作create,get,describe,delete。
- TYPE:指定资源类型Resource types。Resource types会区分大小写,也可以指定单数,复数或缩写的形式。例如以下三种TYPE是等价的。kubectl get pod pod1kubectl get pods pod1kubectl get po pod1
- NAME:指定Resource的Name。Name区分大小写,如果省略Name,则显示所有资源的详细信息,例如:kubectl get pods
- FLAGS:kubectl 子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
- kubectl可操作的资源对象类型如下表:在一个命令行也可可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下:
- 获取多个Pod 的信息kubectl get pods pod1 pod2 pod2
- 获取多种对象的信息kubectl get pod/pod1 rc/rc1
- 同时应用多个yaml文件,以多个-f file 参数表示kubectl get pod -f pod1.yaml -f pod2.yamlkubectl 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 输出格式
输出格式
|
描述
|
-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对象。
|
常见的输出格式如下:
- 显示Pod 的更多信息kubectl get pod [pod-name] -o wide
- 以yaml格式显示Pod 的更多信息kubectl get pod [pod-name] -o yaml
- 以json格式显示Pod 的更多信息kubectl get pod [pod-name] -o json
- 以自定义列名显示Pod信息:kubectl get pod -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
- 基于文件的自定义列名输出kubectl get pods -o=custom-columns-file=template.txt
五、kubectl 操作示例
创建资源对象
根据yaml 配置文件一次性创建service 和 rc:kubectl create -f my-service.yaml -f my-rc.yaml查看资源对象
- 查看所有的Pod 列表kubectl get pods
- 查看rc 和 service 列表kubectl get rc,service
描述资源对象
- 显示Node的详细信息kubectl describe nodes
- 显示Pod 的详细信息kubectl describe pods /
- 显示由RC管理的Pod 的信息kubectl describe pods
删除资源对象
- 基于pod.yaml定义的名称删除Pod:kubectl delete -f pod.yaml
- 删除所有包含某个label的Pod 和Servicekubectl delete pods,services -l name=
- 删除所有Podkubectl delete pod --all
执行容器的命令
- 执行Pod 的date 命令,默认使用Pod 中的第一个容器执行kubectl exec date
- 指定Pod 中某个容器执行date 命令kubectl exec -c date
- 通过/bin/bash 获得Pod 中某个容器的TTY,相当于登陆容器:kubectl exec -ti -c /bin/bash
查看容器的日志
- 查看容器输出到stdout的日志kubectl logs
- 跟踪查看容器的日志,相当于tail -f 命令的结果kubectl logs -f -c
Kubernetes 实践指南之Kubernetes 的命令行工具详解的更多相关文章
- Java之jdk命令行工具详解
JPS---虚拟机进程状况工具 常用的参数: -l 输出Java应用程序的main class的完整包 -q 仅显示pid,不显示其它任何相关信息 -m 输出传递给main方法的参数 -v 输出传递给 ...
- VLC命令行参数详解
VLC命令行参数详解 2012-11-29 14:00 6859人阅读 评论(0) 收藏 举报 Usage: vlc [options] [stream] ...You can specify mul ...
- 【curl】Linux下命令行curl详解
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. 语法:# c ...
- Redis进阶实践之十四 Redis-cli命令行工具使用详解第一部分
一.介绍 redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redis的东西要看的都差不多看完了.网上的东西也不多了.剩下来就看看官网的东西吧,一遍翻译,一遍测试. ...
- Redis进阶实践之十四 Redis-cli命令行工具使用详解
转载来源:http://www.cnblogs.com/PatrickLiu/p/8508975.html 一.介绍 redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redi ...
- Redis进阶实践之十五 Redis-cli命令行工具使用详解第二部分(结束)
一.介绍 今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完成第二部分.话不多说,开始我们今天的讲解.如果要想看第一篇文章,地址如下:http: ...
- memcached命令行操作详解,命令选项的详细解释
连接到memcached命令行下: telnet 127.0.0.1 11211 1.set / add / replace : 格式:<command> <key> < ...
- httprunner学习15-运行用例命令行参数详解
前言 HttpRunner 在命令行中启动测试时,通过指定参数,可实现丰富的测试特性控制. 命令行参数CLI 使用 -h 查看相关命令行参数 hrun -h 参数名称 参数值 参数说明 -h, --h ...
- git命令行操作详解
目录 1.常用操作 1.1 新建代码库 1.2 配置 1.3 remote管理 1.4 添加和撤销操作 1.5 代码提交 1.6 分支操作 1.7 查看信息 1.8 pull操作 1.9 push操作 ...
随机推荐
- IPv4的编址方法
重难点: 1.IP地址有3位标识符,由ICANN进行分配. 2.两级的IP地址分为 ::={<网络号>,<主机号>}. 3.在同一个局域网上的主机或路由器的IP地址中的网络号必 ...
- 【模板】ST表
给定一个长度为 \(N\) 的数列,和 \(M\) 次询问,求出每一次询问的区间\([l,r]\)内数字的最大值. 说明 对于30%的数据,满足: \(1 \leq N, M \leq 10 , 1≤ ...
- 【题解】Luogu P1344 [USACO4.4]追查坏牛奶Pollutant Control
原题传送门 看到这种题,应该一眼就能知道考的是最小割 没错这题就是如此简单,跑两遍最大流(最小割=最大流),一次边权为题目所给,一次边权为1 还有一种优化,优化后只需跑一次最大流,把每条边的权值改成w ...
- 腾讯这套SpringMvc面试题你了解多少?(面试必备)
1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答: 1)它是基于组件技术的. ...
- 对于SQL注入的理解
从网上搜索的资料,结合自己的理解整理了一下,网友们在查看时若有发现问题,还请不吝指正,谢谢! 1.什么是SQL注入? ——官方说法:把SQL命令插入到web表单验证的输入框中,提交到服务器,以达到越过 ...
- Django路由控制
本文目录 一 Django中路由的作用 二 简单的路由配置 三 有名分组 四 路由分发 五 反向解析 六 名称空间 七 django2.0版的path 回到目录 一 Django中路由的作用 URL配 ...
- 毕业设计 Makefile 编写
一天下来,Makefile终于完成了,可以实现c文件和头文件不同目录,并将输出文件输出到其他如output目录,将执行文件和makefile文件并列: 源码如下: # ================ ...
- ssh 框架整合事,使用注解,action提示找不到
There is no Action mapped for namespace [/] and action name [/select] associated with context path [ ...
- 201806 数据处理 SQL、python、shell 哪家强...速度PK(上篇)
最近在工作中,进行大量的数据处理,使用的是mysql5.7.22,发现当数据量级达到几十万之后,SQL执行速度明显变慢.尤其是当多个表join时,于是就尝试用python pandas进行数据处理,发 ...
- 决策树算法原理(CART分类树)
决策树算法原理(ID3,C4.5) CART回归树 决策树的剪枝 在决策树算法原理(ID3,C4.5)中,提到C4.5的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处理分类不 ...