linux cpu占用率如何看
217
2022-10-13
使用Kubectl管理Kubernetes的全解教程
对不少IT人员来说,每天与Kubernetes交互的机制一般是通过kubectl——一种命令行工具。kubectl主要用于与Kubernetes API服务器通信,以在Kubernetes中创建、更新和删除工作负载。本教程的目的是概述您可以使用的一些常用命令,并提供管理Kubernetes的良好起点。
我们将介绍一些最常见的kubectl命令并提供一些示例。有关每个命令的更多详细信息,包括所有支持的标志和子命令,请查看kubectl参考文档:
的语法使用如下:
Command(命令):指你想要执行的操作(创建、删除等等)Type(类别):指你正在执行命令的资源类型(Pod、Service等)Name(名称):对象的名称(需区分大小写)。如果未指定名称,则可以获取有关命令匹配的所有资源的信息(例如Pod)Flags(标志):这个可以按需选择(非必须),不过它在查找特定资源时非常有用。例如,--namespacespace可以让你指定要在哪个特定的命名空间中执行操作。
kubeconfig
kubectl使用配置文件来访问Kubernetes集群。默认的kubectl配置文件位于〜/ .kube / config,称为kubeconfig文件。
kubeconfig文件组织有关集群、用户、命名空间和身份验证机制的信息。kubectl命令使用这些文件来查找它在选择集群并与之通信时所需要的信息。
加载顺序遵循以下规则:
如果设置了--kubeconfig标志,则仅加载给定文件。该标志只能设置一次,不会发生合并。如果设置了$ KUBECONFIG环境变量,则根据系统的正常路径分隔规则,将其解析为文件系统路径列表。否则,如果上述两项都未设置,则使用${HOME}/.kube/config 文件,不进行任何合并。
如果您看到类似于以下内容的消息,则意味着kubectl配置不正确或无法连接到Kubernetes集群。
The connection to the server
你可以通过多种方式创建配置文件,具体取决于你使用何种Kubernetes发行版。以下列出的是不同的K8S发行版及其位置:
RKE
使用RKE创建Kubernetes集群时,RKE会在本地目录中创建一个kube_config_rancher-cluster.yml文件,该文件包含使用kubectl等工具连接到新集群所需的凭据。
您可以将此文件复制到$ HOME / .kube / config,或者,如果您正在使用多个Kubernetes集群,请将KUBECONFIG环境变量设置为kube_config_rancher-cluster.yml的路径,如下所示:
Rancher统一管理的Kubernetes集群
在Rancher中,您可以通过Web UI下载kubeconfig文件,并使用它通过kubectl连接到Kubernetes环境。
在Rancher UI中,单击要通过kubectl连接的集群。在页面的右上角,单击Kubeconfig File按钮:
单击按钮以详细查看配置文件以及放置在~/.kube/config中的方向。
将配置复制到~/.kube/config后,你无需指定--kube-config文件位置,就可以运行kubectl命令:
一些基本命令的示例
以下我将重点介绍在典型环境中会用到的许多命令。我们将从概述集群开始,一直到探索Kubernetes环境中当前正在运行的内容的各种场景。
相信下文的内容将帮助您熟悉kubectl和典型输出的命令。
管理kubectl配置
kubectl命令包含一些不同的命令,可用来帮助查看和管理自己的配置。这些在初始设置期间,或在你需要处理的集群集发生变化时,将非常有用。
要查看当前配置,请键入:
apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: set-cluster、kubectl set-credentials和kubectl set-context以及各种标志来定义集群和上下文,不过我们在本文中就不赘述了。
要更改要连接的上下文,请使用use-context命令:
检查集群组件的状态
为集群选择好适当的上下文后,可以使用get componentstatuses(缩写为get cs)命令检查核心主组件的状态:
输出的内容将显示调度程序、控制器管理器和etcd节点的状态以及从每个服务收集的最新消息和错误。如果你的集群运行不正常,这是一个很好的、进行第一次诊断检查的机会。
可以使用cluster-info命令收集其他连接和服务信息:
Kubernetes master is running at master的端点以及KubeDNS服务端点的端点。
要查看有关作为集群成员的每个单个节点的信息,需使用get nodes命令:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-1 Ready controlplane,etcd,worker 34d v1.13.5
这列出了在每个节点上运行的核心软件的状态、角色、连接信息和版本号。如果需要在集群节点上执行维护或登录以调试问题,此命令可以帮助您提供所需的信息。
查看资源和事件信息
要概述集群中可用的命名空间,请使用get namespaces命令:
这显示了当前集群中定义的命名空间分区。
要跨所有命名空间概述集群上运行的所有资源,使用以下命令:
输出的内容会显示部署了每个资源的命名空间信息,以及加上了资源类型前缀的资源名称(例如上面显示的示例中的pod)。之后,有关每个资源的就绪和运行状态的信息将有助于确定进程是否运行正常。
要查看与资源关联的事件,请使用get events命令:
NAMESPACE LAST SEEN TYPE REASON KIND MESSAGE cattle-system 9m31s Normal BackOff Pod Back-off pulling image "miguelgt/k8s-demo:v2" cattle-system 24m Warning Failed Pod Error: ImagePullBackOff cattle-system 14m Normal BackOff Pod Back-off pulling image "miguelgt/k8s-demo:v2" cattle-system 9m30s Warning Failed Pod Error: ImagePullBackOff
输出内容将列出资源记录的最新事件,包括事件消息及其触发的原因。
示 例
为了更具体地演示您在使用kubectl时可能参与的工作流程,我们将在这一部分介绍将容器部署到集群的快速方案,并将其部署到非默认命名空间中。
默认情况下,如果在未指定命名空间的情况下部署集群,kubectl会将资源放在名为default的命名空间中。如果要部署到其他名称空间,则需要指定所需的替代项。
虽然我们可以为创建命令提供命名空间,但如果我们要使用命名空间来处理多个命令,更改上下文的方法会更为容易。更改与上下文关联的命名空间将自动将命名空间规范应用于任何其他命令,直到更改上下文。
要更改当前上下文的命名空间,请使用带有--currentand --namespace标志的set-context命令:
这将改变当前上下文,以自动将未来的操作应用于rancher命名空间。
接下来,我们可以创建一个名为nginx的部署,它基于默认的nginx容器镜像运行容器。因为我们改变了我们的上下文,所以它会在rancher命名空间中运行:
您可以通过列出当前部署的pod来检查部署是否成功:
在这里,我们可以看到Nginx部署正常运行。READY那一列显示容器已就绪,状态是“正在运行”,没有出现故障。
虽然我们已经验证了pod正在运行,但我们还没有得到关于它部署到了哪个命名空间的信息。但是,我们可以通过添加--all-namespaces标志来稍微改变输出:
这将显示在每个命名空间中运行的pod,并另外添加一个NAMESPACE列,列出每个资源部署到了哪个命名空间。在这里,我们看到Nginx pod已正确部署到我们的rancher命名空间而不是通常的default命名空间。
这表明我们的上下文操作和我们的部署都按预期工作了。
你还可以通过键入以下内容来清理已部署的资源:
其他参考信息
虽然本章中深入讨论这些内容可能超出了本文原意的范围,但我们还是为大家列出了一些非常有用的命令。
Pod
资源删除
服务
事件&指标
命名空间&安全
中级命令
其他资源
kubectl的官方概述:kubeconfig文档:https://rancher.com/docs/rancher/v2.x/en/cluster-admin/kubeconfig/有关使用kubectl访问集群的Rancher文档:https://rancher.com/docs/rancher/v2.x/en/cluster-admin/kubectl/kubectl配置命令:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#config使用kubeconfig文件组织集群:https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~