常用的kubectl命令
本文主要介绍kubernetes排查问题时经常用到的命令。这里主要借助kubectl命令来实现。以下列出常用命令,后面会对每个命令进行详细解释,并举例:
kubectl核心命令
get 获取列出一个或多个资源的信息。(资源分为pod、instance、service等很多种)
describe 输出指定的一个/多个资源的详细信息。(一般describe状态有问题节点,如Pending等)
logs 输出pod中一个容器的日志。(如果pod只包含一个容器则可以省略容器名)
apply 指定Yaml或Json,创建资源。(通过文件或者控制台输入)
edit
编辑服务器上定义的资源。(文件默认输出格式为YAML。要以JSON格式编辑,请指定“-o json”选项。)
rolling-update 执行指定ReplicationController的滚动更新。(不中断业务的更新方式)
delete 删除一个资源(可以是pod、instance等)
exec 在容器内部执行命令
一、get
获取所有namespace:
kubectl get ns
在指定的namespace下获取资源:
kubectl -n {$nameSpace} get pods
以yaml格式输出资源:
kubectl -n {$nameSpace} -o yaml
通用格式:
kubectl get {$sourceType} --all-namespaces
常用的资源类型({$resourceType})有:
- po(pod)
- ns(命名空间namespace)
- instance(实例)
- svc(service服务):定义了一个 Pod 的逻辑分组,一种可以访问它们的策略(微服务)。
- cm(configMap):存储全局配置变量的,将分布式系统中不同模块的环境变量统一到一个对象中管理。
- ds(deamonSet):在每台计算节点上运行一个守护进程(如日志采集等),有时pod处于pending可能是因为某个deamonSet没起来。
- deploy(deployment):用于启动(上线/部署)一个Pod或者ReplicaSet。这个如果有问题,那么其他依赖它来部署的资源就肯定不会正常了。
-o支持的格式有
custom-columns=<spec> 根据自定义列名进行输出,逗号分隔
custom-columns-
file
=<filename> 从文件中获取自定义列名进行输出
json 以JSON格式显示结果
jsonpath=<template> 输出jasonpath表达式定义的字段信息
jasonpath-
file
=<filename> 输出jsonpath表达式定义的字段信息,来源于文件
name 仅输出资源对象的名称
wide 输出更多信息,比如会输出node名
yaml 以yaml格式输出
二、describe
描述一个资源:
kubectl -n {$nameSpace} describe {$resourceType} {$resourceName}
三、logs
查看日志,--tail指定只看最后1000行:
kubectl -n {$nameSpace} logs --tail= {$podName} | less
五、apply
通过配置文件名创建一个集群资源对象。
kubectl apply -f {$yamlorJsonFilePath}
六、edit
编辑一个资源文件,这里以编辑configMap资源对象为例(yaml格式):
kubectl -n {$nameSpace} edit {$resourceType} {$resourceName} -o yaml
七、rolling-update
执行指定ReplicationController的滚动更新。该命令会创建一个新的RC,等新pod完全起来后删除一个旧的pod,之后重复操作,直到替换掉所有的pod。
kubectl rolling-update {$resourceName} -f {$yamlFile}
八、delete
指定资源类型和名字删除一个资源:
kubectl -n {$nameSpace} delete {$resourceType} {$resourceName}
批量删除资源:
kubectl -n {$nameSpace} delete {$resourceType} -l {$label}={$labelValue}
九、exec
exec主要作用是在容器内部执行命令(一般为查看容器内部日志),这里以一个小例子说明kubectl exec命令的作用。
场景描述:当我们用命令行,以root用户身份登录机器,要修改HDFS某个目录权限。
此情况一般是不允许的,因为在HDFS中,最高权限并不是root用户,而是hdfs用户,这个时候如果更改,会提示权限不足。如下我们以root用户登录机器,想修改HDFS的/tmp/jbw目录权限为777,发现此目录并不属于root组,没权限修改。
查看/tmp/jbw目录,发现其属于hdfs组的hadoop用户。
尝试着用hdfs用户去执行命令,发现本机上并没有hdfs用户,因为真正的hdfs用户只存在于真实部署HDFS的容器内部。
但我们如果非要想改其权限应该怎么办呢?那就用kubectl的exec命令,进入HDFS的任意一个namenode容器内部去更改就好(前提是以容器化方式部署HDFS)。
1、获取namenode的pod
kubectl get pods | grep namenode
结果如图所示:
2、任选一个pod进入(利用kubectl exec命令)
kubectl exec -it hadoop-hdfs-namenode-hdfs1--21mft bash
如下已经进入所选pod:
若看到~,表示进入成功(因为当前目录有所变化,若是在不放心df -h看一下文件系统是否有变化也可)。
如果进入部署HDFS的容器pod内部(这里是进入了部署namenode的一个pod,理论上datenode也可以),这些pod里当然就有hdfs用户了,接下来以hdfs用户执行相应修改目录权限命令即可。
sudo -u hdfs hadoop fs -chmod /tmp/jbw
下图即执行修改目录权限命令结果:
exit退出当前pod,再查看一下HDFS上的/tmp/jbw目录,就会发现,权限已修改!如下图所示:
常用的kubectl命令的更多相关文章
- Kubernetes集群管理工具kubectl命令技巧大全
一. kubectl概述 Kubectl是用于控制Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署. kubectl命令的语法如下 ...
- 前端常用的WindowsCMD命令
前面的话 在网上找了一些关于命令提示符CMD的资料,但是很多资料都是把所有的功能罗列出来,大部分都不会用到.所以,自己把常用的CMD命令总结如下,方便查阅 操作类 help 列出所有支持的指令及说 ...
- Android之什么是Activity和常用的ADB命令以及Android项目结构的认识
总结一下之前学习Android的一些内容 一: Android常用的ADB命令(adb android调试桥) 1.adb devices 查看模拟器设备并重新连接. 2.adb ki ...
- linux配置网卡IP地址命令详细介绍及一些常用网络配置命令
linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...
- Linux 视频设备驱动V4L2最常用的控制命令
http://blog.csdn.net/shaolyh/article/details/6583226 Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02) 命令 功能 VIDIOC ...
- FPGA综合工具--Synplify Pro的常用选项及命令
最近要用到Synplify,但以前没使用过,无基础,找到一篇帖子,隧保存下来. 本文转自:http://blog.sina.com.cn/s/blog_65fe490d0100v8ax.html Sy ...
- 每天一个linux命令(61):vi命令 /企业常用的linux命令清单
vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是一般模式.编辑模式与指令列命令模式. 这三种模式的作用分别是: 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式) ...
- 几个最常用的git命令
之前在Windows下一直用可视化的tortoise git,在Linux下最好是用命令行,以下是常用的git命令: git status:显示当前已修改的文件,新增的文件 git checkout ...
- 工作中常用的Linux命令:mkdir命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...
随机推荐
- React Native框架如何白盒测试-HIPPY接口测试架构篇
本文转载自腾讯TMQ团队 ,侵权删. 1.开天辟地 Hippy是什么呢?简单点,能用JavaScript来写Android和iOS应用的框架, 类似业界的React Native. 好吧,我们还是严谨 ...
- hadoop+spark集群搭建
1.选取三台服务器(CentOS系统64位) 114.55.246.88 主节点 114.55.246.77 从节点 114.55.246.93 从节点 之后的操作如果是用普通用户操作的话也必须知道r ...
- linux firewall
一.查看防火墙状态1.首先查看防火墙是否开启,如未开启,需要先开启防火墙并作开机自启 systemctl status firewalld 开启防火墙并设置开机自启 systemctl start f ...
- python代码整体左移或右移
IDE 是 PyCharm 选中代码块: 1)右移:直接 Tab 2)左移:Shift + Tab
- react-jsx和数组
JSX: 1.全称:JavaScriptXML, 2.react定义的一种类似于XML的JS扩展语法:XML+JS 3.作用:用来创建react虚拟DOM(元素)对象 var ele=<h1&g ...
- sublime text3 手动安装插件package control
好久没写了,今天换了新电脑,先安装前端神器“sublime” 一,安装 下载sublime,官方网址:http://www.sublimetext.com/: 二.插件包安装( Package Con ...
- 百度小程序-form表单点击提交,input框内容不会清空
百度小程序与微信小程序相似度90%.微信小程序转换为百度小程序,部分还是需要人工修改! 做了一个form留言表单,点击提交之后,input框第一次会清空,但是第二次就不会清空了! 不多说直接上代码! ...
- Fmx在android下InputBox输入框点击Cancel取消按钮后报异常
在网上搜索半天也没有找到相关信息,估计遇到这个问题的相当少, 解决办法: 找到FMX.Dialogs.Android.pas, 将121行中 FValues[I] := FDefaultValues ...
- 【Dart学习】--之Runes与Symbols相关方法总结
一,Runes 在Dart中,Runes代表字符串的UTF-32字符集, 另一种Strings Unicode为每一个字符.标点符号.表情符号等都定义了 一个唯一的数值 由于Dart字符串是UTF-1 ...
- 【CF1210B】Marcin and Training Camp(贪心)
题意:有n个人,60种技能点,如果第i个人会第j种技能a[i]的二进制表示的第j位就是1,第i个人的价值是b[i] 如果有若干种技能i会j不会,i就会鄙视j 求一种至少两个人的选人方案使得价值和最大, ...