kubernetes的kubectl命令介绍
kubectl是Kubernetes命令行工具,用于与Kubernetes集群进行交互。它允许用户执行各种操作,包括管理容器、部署应用程序、查看集群状态等。kubectl是操作k8s集群的命令行工具,安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeconfig环境变量或设置–kubeconfig来指定其他的kube
前言:
kubectl是Kubernetes命令行工具,用于与Kubernetes集群进行交互。它允许用户执行各种操作,包括管理容器、部署应用程序、查看集群状态等。kubectl是操作k8s集群的命令行工具,安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeconfig环境变量或设置–kubeconfig来指定其他的kubeconfig文件。可参考官方文档:https://kubernetes.io/docs/reference/kubectl/kubectl/
kubectl语法
kubectl语法格式如下:
kubectl [command] [TYPE] [NAME] [flags]
command:指定要对一个或多个资源执行的操作,例如create、get、describe、delete等。
type:指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式。例如pod、svc
NAME:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息:kubectl get pods。
flags: 指定可选的参数。例如,可以使用-s或-server参数指定 Kubernetes API服务器的地址和端口。
一、在对多个资源执行操作时,可以按类型、名称、一个或者多个文件指定每个资源
1.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 deployment/example-rc1
1.2、用一个或多个文件指定资源:-f file1 -f file2 -f file (yaml文件)
例:kubectl get pod -f ./pod.yaml
二、kubectl操作相关的命令和语法
2.1、annotate
语法格式:
kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
添加或更新一个或多个资源的注释。
例如:kubectl describe pod kube-flannel-ds-6wh2p -n kube-flannel
查看flannel查看的信息Annotations: <none>
修改:kubectl annotate pod kube-flannel-ds-6wh2p description="This is a node01 flannel" -n kube-flannel
再使用kubectl describe pod kube-flannel-ds-6wh2p -n kube-flannel查看资源信息
Annotations: description: This is a node01 flannel
2.2、api-versions
命令用于查看 Kubernetes API Server 支持的 API 版本。它会列出所有已安装的 API 组及其版本。
[root@master .kube]# kubectl api-versions
admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
...
rbac.authorization.k8s.io/v1
scheduling.k8s.io/v1
storage.k8s.io/v1
v1
yaml文件中应用:
apiVersion: v1
//yaml文件中的apivision
kind: Pod
metadata:
name: poststart-pod
namespace: default
spec:
containers:
- name: poststart-container
image: nginx
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
command: ["/bin/bash","-c","echo home >> /usr/share/nginx/html/index.html"]
ports:
- name: http
containerPort: 80
2.3、apply
apply是kubectl命令的一个子命令,用于将配置文件中定义的资源应用到 Kubernetes 集群中。它可以用来创建、更新或删除资源。
例:kubectl apply -f deployment.yaml
2.4、autoscale
autoscale是Kubernetes的一种特性,用于自动调整部署的副本数量,以满足应用程序的负载需求。通过自动扩展,Kubernetes能够根据配置的指标自动增加或减少 Pod 的副本数量,以保持应用程序的稳定性和可用性。
语法格式:kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
1、目标资源:指定要自动扩展的Deployment、ReplicaSet或者StatefulSet的名称。
2、目标CPU利用率或者其他指标HPA使用Metrics Server收集指标,并根据这些指标自动调整Pod的副本数量。
3、最小和最大副本数:指定在自动扩展过程中允许的最小和最大副本数量。
2.5、cluster-info
cluster-info是kubectl命令的一部分,用于获Kubernetes集群中的主服务器和服务的端点信息,对于连接到Kubernetes集群、管理和监控集群以及进行故障排除都非常有用
语法格式:kubectl cluster-info [flags]
2.6、config
kubectl config 命令用于管理 Kubernetes 配置文件,允许您管理多个 Kubernetes 集群、用户和上下文,修改kubeconfig文件。
语法格式:kubectl config SUBCOMMAND [flags]
2.7、delete
从文件、标准输入或指定标签选择器、名称、资源选择器或资源中删除资源。
语法格式:kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]
2.8、describe
用于显示 Kubernetes 资源的详细信息。
语法格式:kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]
2.9、edit
edit是kubectl的一个子命令,用于编辑资源的配置。使用edit命令可以在默认编辑器中打开指定资源的配置文件,并允许您对其进行修改。
语法格式:kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]
2.10、exec
exec是kubectl的一个子命令,用于在容器内执行命令或进入容器。
语法格式:kubectl exec POD-name [-c CONTAINER-name] [-i] [-t] [flags] [-- COMMAND [args...]]
exec命令中-c参数指定进入Pod中的某个容器,不加-c默认进入第一个容器。
2.11、explain(重要)
获取多种资源的文档。例如 pod, node, service 等,相当于帮助命令,可以告诉我们怎么创建资源。
语法格式:kubectl explain RESOURCE_NAME
例如:[root@master .kube]# kubectl explain pod.spec
KIND: Pod
VERSION: v1
FIELD: spec <PodSpec>
DESCRIPTION:
Specification of the desired behavior of the pod. More info:
https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
PodSpec is a description of a pod.
FIELDS:
activeDeadlineSeconds <integer>
Optional duration in seconds the pod may be active on the node relative to
StartTime before the system will actively try to mark it failed and kill
...
containers <[]Container> -required-
List of containers belonging to the pod. Containers cannot currently be
added or removed. There must be at least one container in a Pod. Cannot be
updated.
在书写yaml文件时候需要严谨的缩进格式,这个命令提供了在书写yaml文件时需要关键字段解释。
2.12、expose
expose命令用于创建一个新的Kubernetes服务,并将其公开到集群内部或外部。
语法格式: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]
例:kubectl expose deployment nginx-deployment --port=80 --target-port=8080 --name=nginx-service
2.13、get
get命令用于获取Kubernetes集群中的资源对象的详细信息。
语法格式:kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
2.14、label
label命令,它用于为Kubernetes资源对象添加或修改标签。
语法格式:kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
2.15、logs
logs用于查询Pod日志
语法格式:kubectl logs POD [-c CONTAINER] [--follow] [flags]
2.16、patch
patch是一种用于部分更新资源的操作。使用kubectl patch命令可以修改Kubernetes中的资源的部分属性,而不必重新提交整个资源对象。
语法格式:kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]
例: kubectl patch deployment my-deployment -p '{"spec":{"replicas":3}}'
2.17、port-forward(重要)
port-forward命令用于将本地端口与Kubernetes Pod之间建立端口转发,从而可以直接访问运行在Pod内部的服务。这个命令非常有用,特别是在调试和测试时。
语法格式:kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]
例如:要将名为 my-pod 的 Pod 的端口 8080 转发到本地的端口 8888,可以使用以下命令
kubectl port-forward my-pod 8888:8080
2.18、proxy
kubectl proxy命令用于创建一个代理服务器,允许通过本地主机访问Kubernetes集群中的AP 服务器。通过该代理服务器,您可以在本地访问 Kubernetes API,从而执行一些操作,如查看集群状态、调试应用程序等。
语法格式:kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]
例如,要启动代理服务器,可以使用以下命令:kubectl proxy
默认情况下,代理服务器将在本地主机的8001端口启动。您可以通过访问 http://localhost:8001 来查看 Kubernetes API服务器的信息。通过该代理服务器,您可以执行诸如查看Pod、Service、Deployment 等资源的操作。
2.19、replace
kubectl replace命令用于替换现有资源的配置。它将覆盖现有资源的所有字段,并将其替换为新的配置。如果资源不存在,则会创建新资源。
语法格式:kubectl replace -f FILENAM
2.20、run
kubectl run命令用于创建新的Deployment、Pod 或 Job 资源。它可以根据提供的参数自动生成相应的资源配置,并将其提交到 Kubernetes集群中。
语法格式:kubectl run NAME --image=image [--env=“key=value”] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags]
2.21、scale
kubectl scale命令用于动态调整 Deployment、ReplicaSet 或 StatefulSet 的副本数量。
语法格式:kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags]
–replicas=NEW_REPLICAS_COUNT 指定新的副本数量。
FILENAME 指定要扩展的资源的配置文件。
TYPE 指定要扩展的资源类型,如 Deployment、ReplicaSet 或 StatefulSet。
NAME 指定要扩展的资源的名称。
例如:要将名为 my-deployment 的 Deployment 的副本数量扩展为 3,可以使用以下命令
kubectl scale --replicas=3 deployment/my-deployment
三、资源类型
表列出所有受支持的资源类型及其缩写别名:
kubectl api-resources
四、输出选项
kubectl命令的默认输出格式是人类可读的明文格式,若要以特定格式向终端窗口输出详细信息,可以将-o或—out参数添加到受支持的kubectl命令中
五、排序列表对象
要将对象排序后输出到终端窗口,可以将–sort-by参数添加到支持的kubectl命令。通过使用–sort-by参数指定任何数字或字符串字段来对 对象进行排序。要指定字段,请使用jsonpath表达式。
语法:
kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
要打印按名称排序的pod列表,请运行:
例:kubectl get pods -n kube-system --sort-by=.metadata.name
更多推荐
所有评论(0)