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命令行工具
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
24天前
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
30 0
|
24天前
|
运维 Kubernetes 容器
K8S运维命令必备kubectl命令总结
K8S运维命令必备kubectl命令总结
26 3
|
18天前
|
Kubernetes Linux Windows
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
233 0
|
6月前
|
Kubernetes 应用服务中间件 nginx
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
|
6月前
|
Kubernetes Linux iOS开发
使用kubectl连接远程Kubernetes(k8s)集群
在自己本机当中安装kubectl并远程连接Kubernetes(k8s)集群。覆盖了Windows、MacOS和Linux操作系统,步骤超详细,在后面还有关于MacOS和Linux命令自动补全
441 1
使用kubectl连接远程Kubernetes(k8s)集群
|
1月前
|
Kubernetes Shell Docker
容器服务ACK常见问题之容器服务ACK kubectl命令写到shell脚本失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
2月前
|
Kubernetes 安全 API
K8S 实用工具之四 - kubectl 实用插件
K8S 实用工具之四 - kubectl 实用插件
|
3月前
|
Kubernetes Linux 网络安全
百度搜索:蓝易云【K8s在centos7安装及kubectl教程】
希望以上教程对你有所帮助!Kubernetes是一个强大的容器编排平台,能够帮助你更轻松地管理容器化应用程序。如果你有其他问题,请随时继续提问。
57 1
|
3月前
|
Kubernetes 容器
Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-manager、kube-scheduler
Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-manager、kube-scheduler
|
4月前
|
Kubernetes Ubuntu Linux
k8s学习-CKA真题-k8s升级(kubeadm、kubelet、kubectl等)
k8s学习-CKA真题-k8s升级(kubeadm、kubelet、kubectl等)
42 0

推荐镜像

更多