收集云服务器优惠信息
记录云服务器使用心得

用于管理Kubernetes集群的常用Kubectl命令汇总整理

Kubectl是Kubernetes中的一个命令行实用程序,用于针对Kubernetes集群运行命令。你可以使用它来执行各种任务,包括部署应用程序/微服务、查看和管理资源、检查日志文件等。在本教程中,小编将介绍用于管理Kubernetes ( K8S ) 集群的常用kubectl命令。

另外,小编是在Ubuntu 22.04上使用Minikube作为本地Kubernetes集群,以下整理所有的kubectl命令仅供参考。

创建Kubernetes对象/资源

在Kubernetes中,对象是持久实体,可确保你的集群达到所需状态。它们是集群中工作负载的构建块。对象包括副本集、部署、pod、守护进程集、服务、命名空间、配置映射和机密以及持久卷等。创建对象的最常见方法是使用通常带有.yaml或.yml文件扩展名的YAML清单文件。

要从YAML清单文件创建对象,请运行以下命令:

$ kubectl apply -f ./file1.yaml

要从多个YAML文件创建资源,请运行:

$ kubectl apply -f ./file1.yaml -f ./file2.yaml

要从目录中的所有清单文件创建资源,请运行:

$ kubectl apply -f ./dir

要从 URL 创建资源,请执行:

$ kubectl apply -f https://sample-url.io

Kubernetes集群中的节点

节点是物理机或虚拟机,支撑工作负载的Pod和其它资源在其上运行。每个节点都由一个称为控制面板的主节点进行管理,其中包含运行Pod所需的多个服务。一个集群通常有多个节点。要获取集群上的节点数,请运行以下命令:

$ kubectl get nodes

要让Pod在节点上运行,请执行:

$ kubectl get pods -o wide | grep <node_name>

列出Kubernetes集群上运行的Pod

要将节点标记为不可调度,请运行以下命令:

$ kubectl cordon minikube
 node/minikube cordoned

要将节点标记为可调度,请运行以下命令:

$ kubectl uncordon minikube
node/minikube uncordoned
$ kubectl top node <node_name>

要删除一个或多个节点,请运行以下命令:

$ kubectl delete node <node_name>

集群管理和上下文

Kubernetes集群是一组运行容器化应用程序的节点或服务器。一个节点可以运行一个或多个包含一个或多个正在运行的容器的Pod。列出有关集群的信息,请运行以下命令:

$ kubectl cluster-info

检查kubectl版本,命令如下:

$ kubectl version --short

显示Kubernetes集群配置,命令如下:

$ kubectl config view

查看Kubernetes集群配置

显示上下文,命令如下:

$ kubectl config get-contexts
$ kubectl api-resources

列出可用的API版本,命令如下:

$ kubectl api-versions

查看API版本

Kubernetes Pod

在Kubernetes中,Pod是用户可以在集群中创建和管理的最小可部署单元。Pod包含一组具有共享卷和网络资源的容器,以及有关如何运行应用程序的说明。Pod是短暂且一次性的,这意味着它们的寿命很短,因此不会持续很长时间。因此,部署Pod的最佳方法是使用YAML文件进行声明性配置。

由于可以重复使用,因此更具可重复性和方便性。此外,它还确保Kubernetes持续监控YAML文件中定义的资源并按指定运行。

列出/删除Pod

要获取集群中正在运行的Pod列表,请运行以下命令:

$ kubectl get pods

要在标签旁边显示Pod,请运行以下命令:

$ kubectl get pods --show-labels

要列出所有命名空间中的所有Pod,请运行以下命令:

$ kubectl get pods --all-namespaces

要列出当前命名空间中的Pod并提供更多详细信息,请附加-oWide参数。

$ kubectl get pods -o wide

要显示特定Pod的详细状态,请运行以下命令:

$ kubectl describe pod <pod-name>
查看Pod状态

要将标签添加到Pod,请运行以下命令:

$ kubectl label pods my-pod new-label=awesome

要删除标签,请执行以下命令:

$ kubectl label pods my-pod new-label-

删除Pod标签

要获得带有容器Pod的交互式shell,请运行以下命令:

$ kubectl exec -it <pod_name> /bin/sh

要删除特定Pod,请运行以下命令:

$ kubectl delete pod <pod name>

集群中的ReplicaSet

ReplicaSet ( RS ) 确保在任何给定时间始终有稳定数量的运行Pod,它保证YAML清单文件中定义的特定数量的Pod的可用性。要获取集群中ReplicaSet的数量,请运行以下命令:

$ kubectl get replicasets

要获取有关特定副本集的更多信息,请运行以下命令:

$ kubectl describe replicasets <replicasetname>

列出ReplicaSet信息

Pod中的服务

服务是Pod上的网络抽象,服务提供Pod之间的发现和路由。例如,服务可以将应用程序的前端连接到其后端,每个后端都在单独的部署中运行。要列出运行的服务:

$ kubectl get services

要获取有关服务的更多详细信息,请运行以下命令:

$ kubectl describe services

列出Pod中服务的详细信息

Pod中的服务帐户

服务帐户是集群中的Pod用于访问Kubernetes API服务器的对象。要列出服务帐户,请运行以下命令:

$ kubectl get serviceaccounts

要获取有关服务帐户的更多详细信息,请运行以下命令:

$ kubectl describe serviceaccounts

列出服务帐户信息

要删除服务帐户,请使用以下语法命令:

$ kubectl delete serviceaccounts <serviceaccount>

命名空间

命名空间是提供一种方法的单元,通过该方法可以将单个集群进一步细分为多个子集群,然后可以单独管理这些子集群。要列出名称空间,请运行以下命令:

$ kubectl get namespaces

要显示有关命名空间的详细信息,请使用以下语法:

$ kubectl describe namespace <namespace_name>

获取有关命名空间的详细信息

要创建命名空间,请运行以下命令:

$ kubectl create namespace <namespace_name>

要编辑或修改命名空间,请运行以下命令:

$ kubectl edit namespace <namespace_name>

要显示命名空间的资源使用情况,请运行以下命令:

$ kubectl top namespace <namespace_name>

要删除命名空间,请运行以下命令:

$ kubectl delete namespace <namespace_name>

Kubernetes Secrets

在Kubernetes中,Secrets是保存敏感和机密信息(例如用户名和密码)的对象。要列出现有机密,请运行以下命令:

$ kubectl get secret

要列出有关现有机密的详细信息,请执行以下命令:

$ kubectl describe secrets

要创建机密,请运行以下命令:

$ kubectl create secret [flags] [options]

要删除机密,请运行以下命令:

$ kubectl delete secret <secret_name>

Kubernetes部署

部署是一个对象,使用户能够声明应用程序的所需状态。你可以定义副本数量、Pod镜像、Pod数量以及其它资源。要获取部署数量,请运行以下命令:

$ kubectl get deployment

列出特定部署的详细状态,请运行以下命令:

$ kubectl describe deployment <deployment-name>

检查Kubernetes部署的状态

要删除部署,请运行以下命令:

$ kubectl delete deployment <deployment-name>

要创建新的部署,请执行以下命令:

$ kubectl create deployment <deployment-name>

Kubernetes事件

在Kubernetes中,事件是响应资源(例如Pod、容器或节点)状态变化而生成的对象。一个很好的例子是Pod的状态从挂起更改为运行,或者从成功更改为失败。要列出所有事件,请运行以下命令:

$ kubectl get events

要列出事件但排除Pod事件,请运行以下命令:

$ kubectl get events --field-selector involvedObject.kind!=Pod

要列出事件及其时间戳并根据创建时间排序,请运行以下命令:

$ kubectl get events --sort-by=.metadata.creationTimestamp

按时间戳列出Kubernetes事件

Kubernetes日志

日志对于记录集群事件以及帮助调试和排除故障至关重要,你可以使用以下命令查看或配置日志详细程度,要打印特定Pod运行的日志:

$ kubectl logs <pod_name>

要打印并跟踪特定Pod的实时日志,请执行以下命令:

$ kubectl logs -f <pod_name>

要打印Pod过去X小时(例如3小时)的日志,请运行以下命令:

$ kubectl logs --since=3h <pod_name>

要打印Pod内特定容器的日志,请运行以下命令:

$ kubectl logs -c <container_name> <pod_name>

生成最近20行日志,命令如下:

$ kubectl logs --tail=20 <pod_name>

生成Pod日志并将日志保存在名为pod.log的日志文件中:

$ kubectl logs <pod_name> pod.log

总结

以上这些都是用于管理Kubernetes集群的一些最常用kubectl命令,在管理Kubernetes集群时应该都会用到,特意整理出来供大家参考使用。

当然,以上只是一些Kubectl命令的概览,实际使用中还有更多命令和选项可以用于不同的操作和管理任务。可以通过kubectl –help或者kubectl <command> –help来查看更详细的命令帮助信息。

赞(0)
网站声明:本文内容由趣云笔记原创,部分资源收集于网络,如有侵权请联系企鹅:2472781824删除。
文章名称:《用于管理Kubernetes集群的常用Kubectl命令汇总整理》
文章链接:https://www.ecscoupon.com/1390.html
本站资源仅供个人学习交流,未经允许不得转载,更不允许用于商业用途。如需转载,请注明来源,感谢理解!