Kubernetes-kubectl命令行工具

1、kubectl概述

kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。运行kubectl命令的语法如下所示:

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

这里的command,TYPE、NAME和flags为:

comand:指定要对资源执行的操作,例如create、get、describe和deleteTYPE:指定资源类型,资源类型是大小学敏感的,开发者能够以单数、复数和缩略的形式。例如:
$ kubectl get pod pod1 $ kubectl get pods pod1 $ kubectl get po pod1
NAME:指定资源的名称,名称也大小写敏感的。如果省略名称,则会显示所有的资源,例如:
$ kubectl get pods
flags:指定可选的参数。例如,可以使用-s或者–server参数指定Kubernetes API server的地址和端口。

另外,可以通过运行kubectl help命令获取更多的信息。

1.1 kubectl的操作

kubectl作为kubernetes的命令行工具,主要的职责就是对集群中的资源的对象进行操作,这些操作包括对资源对象的创建、删除和查看等。下表中显示了kubectl支持的所有操作,以及这些操作的语法和描述信息:

1.2 资源对象类型

在kubernetes中,提供了很多的资源对象,开发和运维人员可以通过这些对象对容器进行编排。在下表中,是kubectl所支持的资源对象类型,以及它们的缩略别名:

1.3 输出选项

kubectl默认的输出格式为纯文本格式,可以通过-o或者–output字段指定命令的输出格式。

$ kubectl [command] [TYPE] [NAME] -o=<output_format>

2、kubectl安装部署

2.1 安装kubectl

1)下载kubectl

此处是在windows下安装,因此下载kubectl.exe,下载地址:https://storage.googleapis.com/kubernetes-release/release/v1.9.0/bin/windows/amd64/kubectl.exe

并将kubectl.exe所在的地址添加至Windows的环境变量的Path中。

其他操作系统下安装kubectl,请参考:https://kubernetes.io/docs/tasks/tools/install-kubectl/#tabset-2

2)配置kubeconfig文件

RKE会在配置文件所在的目录下部署一个本地文件,该文件中包含kube配置信息以连接到新生成的群集。

默认情况下,kube配置文件被称为.kube_config_cluster.yml。将这个文件复制到你的本地~/.kube/config,就可以在本地使用kubectl了。

需要注意的是,部署的本地kube配置名称是和集群配置文件相关的。例如,如果您使用名为mycluster.yml的配置文件,则本地kube配置将被命名为.kube_config_mycluster.yml。

2.2 验证

执行kubectl命令,获取nodes的信息:

$ kubectl get nodes

3、kubectl的常用命令示例

在此部分将提供常用命令的示例,已帮助您快速了解和试用kubectl。

1)kubectl create命令

此命令通过文件或者stdin创建一个资源对象,假设这里存在一个nginx部署的YAML配置文件,可以通过执行下面的命令创建部署对象。

$ kubectl create -f nginx-deployment.yaml

nginx部署的YAML配置文件的示例代码如下:

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: nginx spec: replicas: 10 selector: matchLabels: app: nginx revisionHistoryLimit: 2 template: metadata: labels: app: nginx spec: imagePullSecrets: – name: dc-hspfd containers: # 应用的镜像 – image: nginx name: nginx imagePullPolicy: IfNotPresent # 应用的内部端口 ports: – containerPort: 80 name: nginx80 # 持久化挂接位置,在docker中 volumeMounts: – mountPath: /usr/share/nginx/html name: nginx-data – mountPath: /etc/nginx name: nginx-conf volumes: # 宿主机上的目录 – name: nginx-data nfs: path: /k8s-nfs/nginx server: 192.168.8.150 – name: nginx-conf nfs: path: /k8s-nfs/nginx/conf server: 192.168.8.150

2)kubectl get 命令

通过此命令列出一个或多个资源对象,在这里通过kubectl get命令获取default命名空间下的所有部署。

3)kubectl describe命令

此命令用于显示一个或多个资源对象的详细信息,在这里通过获取上述nginx部署的信息。

$ kubectl describe deployments/nginx

4)kubectl exec命令

此命令用于在Pod中的容器上执行一个命令,此处在nginx的一个容器上执行/bin/bash命令。

$ kubectl exec -it nginx-5847748bf9-49k5k /bin/bash

5)kubectl logs命令

此命令用于获取Pod中一个容器的日志信息,此处获取nginx一个容器的日志信息。

$ kubectl logs nginx-5847748bf9-49k5k

6)kubectl delete命令

此命令用于删除集群中已存在的资源对象,可以通过指定名称、标签选择器、资源选择器等。此处删除前面创建的nginx部署。

$ kubectl delete deployments/nginx

参考资料

1.《kubectl Usage Conventions》地址:https://kubernetes.io/docs/reference/kubectl/conventions/

2.《kubectl Commands》地址:https://kubernetes.io/docs/reference/kubectl/kubectl-cmds/

3.《Overview of kubectl》地址:https://kubernetes.io/docs/reference/kubectl/overview/

作者简介:

季向远,北京神舟航天软件技术有限公司产品经理。本文版权归原作者所有。

    THE END
    喜欢就支持一下吧
    点赞14 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容