使用kubectl管理k8s集群(二十九)

前言

在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理。命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用。

在下一篇,我们将讲述使用Kubeadm来创建k8s集群。


目录

使用kubectl管理k8s集群

  • 概述
  • 语法
  • 主要命令(command)说明
  • 资源类型(TYPE)说明
  • 命令标准(flags)说明
  • 格式化输出

使用kubectl管理k8s集群

###

概述

Kubectl是一个命令行界面,用于运行针对Kubernetes集群的命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命令参数–kubeconfig来指定其他位置的kubeconfig文件。

###

语法

我们可以使用以下语法kubectl从终端窗口运行命令:

kubectl [command] [TYPE] [NAME] [flags]

其中command,TYPE,NAME,和flags分别是:

  • command:指定要在一个或多个资源进行的操作,例如create,get,describe,delete。例如“kubectl get cs”。

  • TYPE:指定资源类型。资源类型不区分大小写,可以指定单数,复数或缩写形式。例如,以下命令产生相同的输出:

    kubectl get pod pod1

    kubectl get pods pod1

    kubectl get po pod1

  • NAME:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息,如“kubectl get pods”。

在对多个资源执行操作时,我们可以按类型和名称指定每个资源,或指定一个或多个文件:

1) 要按类型和名称指定资源:

    • 如果资源类型相同,则对资源进行分组:TYPE1 name1 name2 name<#>。
      例:kubectl get pod example-pod1 example-pod2
    • 分别指定多种资源类型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>。
      例:kubectl get pod/example-pod1 replicationcontroller/example-rc1

2) 要使用一个或多个文件指定资源: -f file1 -f file2 -f file<#>

    • 注意使用YAML而不是JSON,因为YAML往往更加用户友好,特别是对于配置文件。
      例:kubectl get pod -f ./pod.yaml
  • flags:指定的可选标志,不过值得注意的是,使用命令行指定参数会覆盖默认值以及相关的环境变量。例如,我们可以使用-s或–server标志来指定Kubernetes API服务器的地址和端口。

###

主要命令(command)说明

Kubectl的主体操作命令如下表所示:

操作 描述
annotate 添加或更新一个或多个资源的注释。
api-versions 列出可用的API版本。
apply 通过文件名或标准输入流(stdin)对资源进行配置,例如“kubectl apply –prune -f manifest.yaml -l app=nginx”
attach 附加到一个正在运行的容器,以查看输出流或与容器(stdin)交互。
autoscale 自动缩放由Replication Controller管理的pod集。
cluster-info 显示有关群集中主服务器和服务的端点信息。
config 指定kubeconfig文件。
create 从文件或标准输入流(stdin)创建一个或多个资源。例如使用pod.json创建pod“kubectl create -f ./pod.json”。
delete 通过文件,标准输入、指定标签选择器,名称,资源选择器或资源来删除资源。例如删除所有的pod“kubectl delete pods –all”。
describe 显示一个或多个资源的详细。例如查看pod“coredns-5c98db65d4-h5v9h”的详情“kubectl describe pod coredns-5c98db65d4-h5v9h -n kube-system”,这里使用了“-n”指定了命名空间。
edit 在服务器上编辑一个资源。
exec 在Pod容器中执行命令。
explain 查看资源的文档。例如pod,节点,服务等。例如“kubectl explain pods”。
expose 将复制控制器,服务或pod公开为新的Kubernetes服务。
get 列出一个或多个资源。例如“kubectl get pods -n kube-system -o wide”命令将列出“kube-system”命名空间下的所有pod并且以表格状输出pod的相关附加信息(节点名称)。
label 添加或更新一个或多个资源的标签。
logs 输出容器在pod中的日志。例如执行以下命令“kubectl logs etcd-k8s-master -n kube-system”将在终端中输出该容器的日志。
patch 使用patch策略更新资源的字段。
port-forward 将一个或多个本地端口转发到pod。
proxy 运行代理指定到Kubernetes API server。
replace 从文件或标准输入中替换资源。
rolling-update 通过逐步替换指定的Replication Controller及其pod来执行滚动更新。
run 在群集上运行指定的映像。例如运行Nginx“kubectl run nginx –image=nginx”。
scale 设置新的Deployment, ReplicaSet, Replication Controller 或者 Job副本数量。例如“ubectl scale –replicas=3 -f foo.yaml”。
version 显示客户端和服务器上运行的Kubernetes版本。
api-resources 输出服务端支持的所有的API资源类型。
api-versions 输出服务端支持的API版本。

更多命令,我们可以执行“kubectl help”来查看当前所有支持的命令,也可以访问官方地址“https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands”来查看所有的命令说明。在使用的过程中,如果我们不了解单个命令的具体语法,我们可以使用“kubectl –help”来获取详细介绍,如:

kubectl scale –help

img

###

资源类型(TYPE)说明

我们可以使用“kubectl api-resources”命令来获取服务端目前支持的所有的资源类型,如下图所示:

img

###

命令标准(flags)说明

同样的,我们可以使用命令“kubectl options”来输出当前支持的所有可选标志:img

其中,在前面我们说过,“-s”可以指定Kubernetes API 服务器地址,“-n”可以指定命名空间,“–kubeconfig”可以指定kubeconfig配置文件。主要的一些说明如下所示:img

格式化输出

默认情况下,所有的kubectl命令默认输出格式是可读的纯文本格式。要以特定格式将详细信息输出到终端窗口,我们需要使用“-o”或多个“-output”标志。

语法:

kubectl [command] [TYPE] [NAME] -o=

支持的输出格式如下表所示:

输出格式 描述
-o=custom-columns= 输入指定的逗号分隔的列名列表来打印表格 。
-o=custom-columns-file= 使用文件中的自定义列模板来打印表。
-o=json 输出JSON格式的API对象。
-o=jsonpath= 打印在jsonpath表达式中定义的字段
-o=jsonpath-file= 打印由文件中的jsonpath表达式定义的字段。
-o=name 仅打印资源名称。
-o=wide 以纯文本格式输出任何附加信息。对于pod,包括节点名称。
-o=yaml 输出YAML格式的API对象。

例如:

kubectl get pods -n kube-system -o wideimg


 上一篇
使用Kubeadm创建k8s集群之部署规划(三十) 使用Kubeadm创建k8s集群之部署规划(三十)
前言上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群。 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲)。因此本教程会在部署的过程中穿插讲解一些部署相关
下一篇 
使用WebDeploy部署远程IIS网站 使用WebDeploy部署远程IIS网站
使用WebDeploy部署远程IIS网站后台服务部署服务器配置 打开IIS管理器(开始->控制面板->管理工具->IIS管理器) 添加网站(右键网站->添加网站)如下图 选择添后的网站,并赋予相应的IIS用户权
  目录