Kubernetes-kubectl命令行工具

简介: 1、kubectl概述 kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。运行kubectl命令的语法如下所示: $ kubectl [command] [TYPE] [NAME] [flags] 这里的command,TYPE、NAME和flags为: comand:指定要对资源执行的操作,例如create、get、describe和delete TYPE:指定资源类型,资源类型是大小学敏感的,开发者能够以单数、复数和缩略的形式。

1、kubectl概述


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

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

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

  • comand:指定要对资源执行的操作,例如create、get、describe和delete
  • TYPE:指定资源类型,资源类型是大小学敏感的,开发者能够以单数、复数和缩略的形式。例如:
$ 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支持的所有操作,以及这些操作的语法和描述信息:

操作 语法 描述
annotate 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] 连接到正在运行的容器上,以查看输出流或与容器交互(stdin)。
autoscale kubectl autoscale (-f FILENAME \| TYPE NAME \| TYPE/NAME) [–min=MINPODS] –max=MAXPODS [–cpu-percent=CPU] [flags] 自动扩宿容由副本控制器管理的Pod。
cluster-info kubectl cluster-info [flags] 显示群集中的主节点和服务的的端点信息。
config kubectl config SUBCOMMAND [flags] 修改kubeconfig文件。
create kubectl create -f FILENAME [flags] 从文件或stdin中创建一个或多个资源对象。
delete kubectl delete (-f FILENAME \| TYPE [NAME \| /NAME \| -l label \| –all]) [flags] 删除资源对象。
describe kubectl describe (-f FILENAME \| TYPE [NAME_PREFIX \| /NAME \| -l label]) [flags] 显示一个或者多个资源对象的详细信息。
edit 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和服务等资源对象的文档。
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] 为副本控制器、服务或Pod等暴露一个新的服务。
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] 添加或更新一个或者多个资源对象的标签。
logs kubectl logs POD [-c CONTAINER] [–follow] [flags] 显示Pod中一个容器的日志。
patch kubectl patch (-f FILENAME \| TYPE NAME \| TYPE/NAME) –patch PATCH [flags] 使用策略合并补丁过程更新资源对象中的一个或多个字段。
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 从文件或stdin中替换资源对象。
rolling-update kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] –image=NEW_CONTAINER_IMAGE \| -f NEW_CONTROLLER_SPEC) [flags] 通过逐步替换指定的副本控制器和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] 扩宿容副本集的数量。
version kubectl version [–client] [flags] 显示运行在客户端和服务器端的Kubernetes版本。

1.2 资源对象类型

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

资源对象类型 缩略别名
apiservices
certificatesigningrequests csr
clusters
clusterrolebindings
clusterroles
componentstatuses cs
configmaps cm
controllerrevisions
cronjobs
customresourcedefinition crd
daemonsets ds
deployments deploy
endpoints ep
events ev
horizontalpodautoscalers hpa
ingresses ing
jobs
limitranges limits
namespaces ns
networkpolicies netpol
nodes no
persistentvolumeclaims pvc
persistentvolumes pv
poddisruptionbudget pdb
podpreset
pods po
podsecuritypolicies psp
podtemplates
replicasets rs
replicationcontrollers rc
resourcequotas quota
rolebindings
roles
secrets
serviceaccounts sa
services svc
statefulsets
storageclasses

1.3 输出选项

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

$ kubectl [command] [TYPE] [NAME] -o=<output_format>
输出格式 描述
-o=custom-columns=<spec> 使用以逗号分隔的自定义列打印表格。
-o=custom-columns-file=<filename> 使用文件中自定义列打印表格。
-o=json 输出JSON格式的API对象
-o=jsonpath=<template> 打印在jsonpath表达式中定义的字段
-o=jsonpath-file=<filename> 打印文件中以jsonpath表达式定义的字段
-o=name 仅仅输出资源对象的名称。
-o=wide 输出带有附加信息的纯文本格式。对于Pod对象,将会包含Node名称。
-o=yaml 输出YAML格式的API对象

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
本文转自中文社区-Kubernetes-kubectl命令行工具
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
4704 0
|
Kubernetes Linux Windows
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
1239 0
|
运维 Kubernetes 容器
K8S运维命令必备kubectl命令总结
K8S运维命令必备kubectl命令总结
307 3
|
11月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
896 17
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】Kubernetes命令行管理工具:kubectl
kubectl 是 Kubernetes 的命令行工具,用于管理和操作 Kubernetes 集群。本文通过视频讲解和具体示例,介绍了 kubectl 的常用命令,包括显示 Pod 信息、创建 Deployment 和 Service、更新和回滚 Deployment、以及删除资源等操作。
256 0
|
Kubernetes 监控 API
在K8S中,什么是 Minikube、Kubectl、Kubelet?
在K8S中,什么是 Minikube、Kubectl、Kubelet?
|
Kubernetes 应用服务中间件 nginx
深入了解 `kubectl`:Kubernetes 命令行工具
深入了解 `kubectl`:Kubernetes 命令行工具
470 1
|
Kubernetes API 容器
在k8S中,使用kubectl logs无法查看日志是什么原因,如何让其能够查看?
在k8S中,使用kubectl logs无法查看日志是什么原因,如何让其能够查看?
|
Kubernetes 监控 API
在K8S中,Minikube、Kubectl、Kubelet是什么?
在K8S中,Minikube、Kubectl、Kubelet是什么?
|
Kubernetes 容器
Kubernetes(K8S) 安装 Metrics-Server kubectl top (metrics-server) node NotFound
Kubernetes(K8S) 安装 Metrics-Server kubectl top (metrics-server) node NotFound
202 0

热门文章

最新文章

推荐镜像

更多