在列出、描述、修改或删除其他命名空间中的对象时,需要给kubect1命令传递--namespace(或-n)选项。如果不指定命名空间,kubect1将在当前上下文中配置的默认命名空间中执行操作。而当前上下文的命名空间和当前上下文本身都可以通过kubect1 config命令进行更改。
  要想快速切换到不同的命名空间,可以设置以下别名:alias kcd='kubectl config set-context $(kubectl config current-context)--namespace'。然后,可以使用kcd some-namespace在命名空间之间进行切换。

  ***

  kubectl中的双横杠

    kubectl中的双横杠(--)代表着kubectl命令项的结束,在两个横杠之后的内容是指在pod内部里需要执行的命令,如果不使用双横杠则可能会导致结果异常和歧义错误。如果需要执行的命令并没有以横杠开始的参数,则横杠不是必需的。

 
⒈ 展示k8s集群信息
kubectl cluster-info
⒉列出所有集群节点
kubectl get nodes
⒊查看节点详细信息
kubectl describe node {nodeName}
⒋使用alias k = kubectl创建命令行别名,并添加到~/.bashrc中永久保存
⒌为kubectl配置tab自动补全,需要安装一个叫做bashcompletion的包来启动bash的自动补全,然后运行一系列命令配置,书中40(59/590)中详细描述
⒍集群中部署应用
kubectl run {applicationName} --image=fanqisoft/coreqi --port=8080 --generator=run/v1 replicationcontroller "{applicationName}" created
  --image:指定要运行的容器镜像
  --port:告诉kubernetes应用监听的端口
  --generator:通常不会使用到它,它让kubernetes创建一个ReplicationController而不是Deployment
⒎列出所有pod
kubectl get pods
列出所有pod并携带pod的IP及所在节点
kubectl get pods -o wide
列出所有pod并展示pod所携带的标签
kubectl get po --show-labels
如果只是对某些标签感兴趣,可以使用-L选项指定它们并将它们分别显示在自己的列中,而不是列出所有标签。
kubectl get po -L creation_method,env
列出指定命名空间下的pod(如未指定则默认为default命名空间)
kubectl get po --namespace {namespaceName}
#-n为--namespace的简写形式
kubectl get po -n {namespaceName}
  READY: 显示pod的就绪情况
⒏ 查看pod的详细信息
kubectl describe pod {podName}
⒐ 每个pod都有自己的IP地址,然而这个IP地址在集群内部进行访问的,要让pod能够从外部访问,需要通过服务对象公开它,要创建一个特殊的LoadBalancer类型的服务。因为如果你创建一个常规服务(一个ClusterIP服务),比如pod,它也只能从集群内部访问,通过创建LoadBalancer类型的服务,将创建一个外部的负载均衡,可以通过负载均衡的公共IP访问pod
创建一个服务对象
kubectl expose rc {applicationName} --type=LoadBalancer --name {serviceName} service "{serviceName}" exposed
  rc:ReplicationController的缩写。大多数资源类型都有这样的缩写,省去输入全名的繁琐,pods缩写po,service缩写svc等等
⒑列出集群中所有服务
kubectl get services
使用minikube的时候,可以通过minikube service {serviceName} 获取可以访问服务的IP和端口
⒒ReplicationController,ReplicationController用于复制pod(即创建pod的多个副本)并让它们保持运行,如果没有指定要运行多少个副本,则默认一个副本在运行,如果你的pod因为任何原因消失了,那么ReplicationController将会创建一个新的副本来替代它。
⒓列出所有的ReplicationController
kubectl get replicationcontrollers
kubectl get rc
  DESIRED:显示希望ReplicationController保持的pod副本数
  CURRENT:显示当前运行的pod副本数
增加副本数,也可以通过 kubectl edit rc {rcName}命令编辑replicationcontroller描述文件的spec.replicas字段来变更副本数
kubectl scale rc[replicationcontroller] {podName} --replicas=3
查看ReplicationController的附加信息
kubectl describe rc {rcName}
⒔访问minikube的dashboard
minikube dashboard

⒕从已有的pod获取YAML或JSON描述文件

kubectl get po {podName} -o yaml
kubectl get po {podName} -o json

⒖使用kubectl获取描述文件帮助

kubectl explain pods
kubectl explain pod.spec

⒗使用YAML描述文件创建pod

kubectl create -f kubia-manual.yaml
#kubectl create -f 命令用于从YAML或JSON文件创建任何资源(不只是pod)
#使用YAML描述文件创建pod并指定命名空间
kubectl create -f kubia-manual.yaml -n custom-namespace

⒘查看pod日志(更准确的说是查看容器的日志)

kubectl logs {podName}
#每天或者每次日志文件达到10M大小时,容器日志都会自动轮替。
#kubectl logs命令仅显示最后一次轮替后的日志条目
#如果我们的pod包含多个容器,在运行kubectl logs命令时则必须通过包含-c {containerName}选项来显式指定容器名称。
kubectl logs {podName} -c {containerName}
#我们只能获取存在pod的日志,当pod被删除后,它的日志也会被删除。
#如果我们希望在pod删除之后仍然可以获取其日志,则需要设置中心化的、集群范围的日志系统,将所有日志存储到中心存储中。 #kubectl logs显示的是当前容器的日志,那么当前容器上一次奔溃的日志是无法通过该命令显示出来的,通过添加--previous选项来完成
#必要时通过kubectl describe po {podName}查看上次奔溃原因
kubectl logs {podName} --previous

⒙端口转发(用于主机和pod之间通信),也可以使用暴露服务进行通信

kubectl port-forward kubia-manual 8888:8080

⒚pod标签

为已创建的pod添加标签

kubectl label po {podName} labelKey=labelValue

为已创建的pod修改标签【--overwrite参数是必要的,否则kubectl将只打印出警告并不会更改标签,这样是为了防止我们在想要添加新标签时无意中更改了现有标签的值】

kubectl label po {podName} labelKey=labelValue --overwrite

⒛使用标签选择器列出指定标签的pod

#列出指定标签值的pod
kubectl get po -l labelKey=labelValue
#列出在指定标签值范围内的pod
kubectl get po -l labelKey in (labelValue1,labelValue2)
#列出不在指定标签值范围内的pod
kubectl get po -l labelKey notin (labelValue1,labelValue2)
#列出不等于指定标签值的pod
kubectl get po -l labelKey!=labelValue
#列出包含指定标签的pod,无论其值如何
kubectl get po -l labelKey
#列出不包含指定标签的pod(确保使用单引号来包含!labelKey,这样bash shell才不会解释感叹号,感叹号在bash中有特殊含义,表示事件指示器)
kubectl get po -l '!labelKey'
#使用多条件
kubectl get po -l labelKey1=labelValue1,labelKey2=labelValue2

21.node(节点)标签

#向节点添加标签
kubectl label node {nodeName} labelKey=labelValue
#获取指定标签值的节点
kubectl get nodes -l labelKey=labelValue

22.pod注解

#向pod中添加注解
kubectl annotate pod {podName} annotateKey="annotateValue"
#查看注解使用describe命令即可
kubectl describe pod {podName}

23.命名空间

#列出所有的命名空间
kubectl get ns
#创建命名空间

#创建一个custom-namespace.yaml
apiVersion: v1 #指定当前描述文件遵循v1版本的KubernetesAPI
kind: Namespace #表示我们正在定义一个命名空间
metadata:
name: custom-namespace #定义命名空间的名称 #使用kubectl执行命令
kubectl create -f custom-namespace.yaml #还可以直接使用kubectl命令创建命名空间(命名空间名称不允许包含点号)
kubectl create namespace custom-namespace

24.删除命名空间

#删除命名空间(pod将会伴随命名空间的删除而自动删除)
kubectl delete ns {namespaceName}
#删除命名空间中的(几乎)所有资源【ReplicationController、pod、service等将会被删除,而一些资源例如Secret等不会被删除,它们需要被明确的指定删除】
kubectl delete all --all
#命令中的第一个all指定正在删除所有资源类型,而--all选项指定将删除所有资源示例而非按照名称指定它们
#kubectl delete all --all命令也会删除名为kubernetes的service,但它将在几分钟后自动重新创建

24.删除pod

#删除pod
#根据pod名称删除pod
kubectl delete po {podName1} {podName2}
#根据pod标签输出pod
kubectl delete po -l labelKey=labelValue
#删除当前命名空间下的所有pod(不会删除命名空间)
kubectl delete po --all

25.编辑ReplicationController

kubectl edit rc {rcName}

  这将在你的默认文本编辑器中打开ReplicationController的YAML配置。保存更改并退出编辑器后,kubectl将更新ReplicationController并打印以下消息:replicationcontroller "kubia" edited

  配置kubectl edit 使用不同的文本编辑器可以通过设置KUBE_EDITOR环境变量来告诉kubect1使用你期望的文本编辑器。例如,如果你想使用nano编辑Kubernetes资源,请执行以下命令(或将其放入~/.bashrc或等效文件中):export KUBE_EDITOR="/usr/bin/nano"

  如果未设置KUBEEDITOR环境变量,则kubect1edit会回退到使用默认编辑器(通常通过EDITOR环境变量进行配置)。

26.删除ReplicationController

  当你通过kubect1 delete 删除ReplicationController时,pod也会被删除。

  但是由于由ReplicationController创建的pod不是ReplicationController的组成部分, 只是由其进行管理,因此可以只删除ReplicationController并保持pod运行。

#使用kubectl delete 删除ReplicationController时,可以通过给命令增加--cascade=false选项保持pod的运行,此时这些pod将独立,它们不再被管理,但我们始终可以使用适当的标签选择器创建新的ReplicationController并再次将它们管理起来
kubectl delete rc {rcName} --cascade=false

kubectl相关指令的更多相关文章

  1. AnjularJS系列2 —— 表单控件功能相关指令

    第二篇,表单控件功能相关指令. ng-checked控制radio和checkbox的选中状态 ng-selected控制下拉框的选中状态 ng-disabled控制失效状态 ng-multiple控 ...

  2. Linux相关指令

    Linux相关指令 1.find文件搜索功能 find [目录列表] [匹配参数] [匹配标准] -name :按文件名称进行搜索 -group :按文件所属组进行搜索 -user :按文件拥有者进行 ...

  3. Linux指令--性能监控和优化命令相关指令

    原文出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html.感谢作者无私分享 性能监控和优化命令相关指令有:top,free,v ...

  4. 常见压缩格式分析,及 Linux 下的压缩相关指令

    可先浏览加粗部分 一.常见压缩档 *.zip | zip 程式壓縮打包的檔案: (很常见,但是因为不包含文件名编码信息,跨平台可能会乱码) *.rar | winrar 程序压缩打包的档案:(在win ...

  5. adb相关指令 笔记

      adb相关指令 笔记 1.adb devices 查看物理测试设备或模拟器的相关信息,有三个状态: (1)device 设备已连接到adb服务器上,但该状态并不代表设备已启动完毕可以进行操作: ( ...

  6. 汇编 OD 标志位 置位相关指令

    知识点: l 标志位 置位相关指令   l 标志寄存器PSW 标志寄存器PSW(程序状态字寄存器PSW)    标志寄存器PSW是一个16为的寄存器.它反映了CPU运算的状态特征并且存放某些控制标志. ...

  7. AllowOverride以及Options相关指令

    AllowOverride以及Options相关指令      httpd.conf是Apache的主要配置文件,但是针对每个目录,apache还允许在它们各自的目录下放置一个叫做.htacess的文 ...

  8. ADB相关指令实例详解

    1.获取物理设备相关信息: adb devices 2.apk安装 2.1 新的应用(该应用未安装) adb -s 设备序列号 install apk路径 2.2 应用已安装,重安装覆盖 adb -s ...

  9. 【AnjularJS系列2 】— 表单控件功能相关指令

    第二篇,表单控件功能相关指令. ng-checked控制radio和checkbox的选中状态 ng-selected控制下拉框的选中状态 ng-disabled控制失效状态 ng-multiple控 ...

随机推荐

  1. 逆向bfs搜索打表+康拓判重

    HDU 1043八数码问题 八数码,就是1~8加上一个空格的九宫格,这道题以及这个游戏的目标就是把九宫格还原到从左到右从上到下是1~8然后最后是空格. 没了解康托展开之前,这道题怎么想都觉得很棘手,直 ...

  2. 【线性代数】3-5:独立性,基和维度(Independence,Basis and Dimension)

    title: [线性代数]3-5:独立性,基和维度(Independence,Basis and Dimension) categories: Mathematic Linear Algebra ke ...

  3. 转:获取时间点前后一定间隔的时间 __timeShift()

    接口获取时间点前后一定间隔的时间函数: __timeShift(时间格式, 特定时间点(缺省当前时间),时间间隔,地区格式(默认),变量名( 可不填,填写后其他地方用${变量名}引用 )) 举例: 1 ...

  4. 0079 Ehcache 3.x应用入门及通过JCache与Spring整合

    基本要素:版本.概念与抽象 Ehcache 3.x是一个用Java语言实现的缓存库,并且实现了 JSR107规范 Ehcache从2.x升级到3.x后,Maven依赖从 net.sf.ehcache: ...

  5. 死磕Java之聊聊HashMap源码(基于JDK1.8)

    死磕Java之聊聊HashMap源码(基于JDK1.8) http://cmsblogs.com/?p=4731 为什么面试要问hashmap 的原理

  6. 2016 NEERC, Moscow Subregional Contest K. Knights of the Old Republic(Kruskal思想)

    2016 NEERC, Moscow Subregional Contest K. Knights of the Old Republic 题意:有一张图,第i个点被占领需要ai个兵,而每个兵传送至该 ...

  7. Java线程优先级及守护线程(二)

    简述 在操作系统中,线程是可以划分优先级的,优先级较高的线程,得到CPU优先执行的几率就较高一些.设置线程的优先级,有助于帮助线程规划期选择下一个哪一个线程优先执行,但是线程优先级高不代表一定会优先执 ...

  8. idea2018.3.2版本如何破解

    IntelliJ IDEA2018破解教程(2019.1.11更新)破解方法:下载破解补丁→修改配置文件→输入激活码→激活成功 由于JetBrains封杀,大部分激活服务器已经不能使用,使用下面的比较 ...

  9. Linux设备驱动程序 之 顺序锁

    当要保护的资源很小,很简单,会频繁的被访问而且写入访问很少的且必须快速时(即读不允许让写饥饿),就可以使用顺序锁(seqlock):从本质上讲,顺序锁会允许读取者对资源的自由访问,但需要读取者检查是否 ...

  10. CSS3 新特性

    ~平时喜欢逛博客,看别人的学习总结和遇到的问题解决办法,恰好最近在做书签整理,翻到了之前一个前辈移动前端的总结,所以我就按他的总结模块对自己的知识进行了梳理,不过由于都是手写的,为了方便,下面的都是平 ...