写点什么

人手一套的 K8S 命令集合,它来了!

作者:wljslmz
  • 2022 年 8 月 16 日
    江苏
  • 本文字数:3062 字

    阅读完需:约 10 分钟

人手一套的K8S命令集合,它来了!

你好,这里是网络技术联盟站。


上次给大家介绍了 Docker 常用的命令,反响不错,评论区有小伙伴想要 K8S 的命令合集,那么今天瑞哥就来安排一下!


在开始列举 K8S 命令集前,先给大家简单介绍一下 K8S 的基本理论。

什么是 K8S?

K8S 其实是 Kubernetes,由于Kubernetes读起来像K8S,所以久而久之,大家就将 Kubernetes 简称为 K8S 了。



K8S 最初由 Google 开发,其实就是一个容器或微服务平台,用于编排计算、网络和存储基础设施工作负载。


所谓容器,就是提供了一种打包代码、运行时、系统工具、系统库和配置的方法,也就是就是说有了这个容器,不管你将此放到哪个相同系统的服务器上,都能完好的运行程序,最好的例子就是 Docker。

K8S 的优势

K8S 的优势就是为啥大多数企业和组织选择 K8S,简单来说一般有以下四个优点:


1、提升工作效率


K8S 提供一个 PaaS 平台,创建了一个硬件抽象层,使用者可以快速有效地请求他们需要的资源,如果他们需要更多资源来处理额外的工作,也可以快速的扩展,只需点一点就能快速配置,并且可以利用 Kubernetes 开发的工具来实现自动化打包、部署和测试。


2、灵活性


容器引擎是运行容器的程序,K8S 支持多种类型的容器运行时和基础设施,只要它们具有某些版本的 Linux 或 Windows,K8s 的可移植性使开发团队可以轻松切换引擎、服务器或环境配置。


3、节约成本

K8S 不仅可以节省人力成本、还能节省物力成本,通过动态和智能的容器管理,K8S 可以帮助企业节省其生态系统管理,确保跨多个环境的可扩展性。资源分配会根据实际应用程序需求自动调整,同时减少基础架构上的低级手动操作。有了自动化,IT 团队不再需要执行大量与系统管理相关的操作任务,可以将大量的精力用在更有意义的事情上,这极大的节省了企业的成本。

4、开源

K8S 是一个完全开源的、由社区主导的项目,由 CNCF 监督,它有几家主要的企业赞助商,对于许多企业来说,这种开源策略使 K8S 优于闭源编排器。

K8S 命令备忘录

1、列举资源

生成所有命名空间的纯文本列表:


kubectl get namespaces
复制代码


显示所有 pod 的纯文本列表:


kubectl get pods
复制代码


生成所有 pod 的详细纯文本列表,包含节点名称等信息:


kubectl get pods -o wide
复制代码


显示在特定节点服务器上运行的所有 pod 的列表:


kubectl get pods --field-selector=spec.nodeName=[server-name]
复制代码


以纯文本形式列出特定的复制控制器:


kubectl get replicationcontroller [replication-controller-name]
复制代码


生成所有复制控制器和服务的纯文本列表:


kubectl get replicationcontroller,services
复制代码


显示所有守护程序集的纯文本列表:


kubectl get daemonset
复制代码

2、部署

创建一个新的部署


kubectl create deployment <deployment_name>
复制代码


列出一个或多个部署


kubectl get deployment
复制代码


列出一个或多个部署的详细状态


kubectl describe deployment <deployment_name>
复制代码


删除部署


kubectl delete deployment<deployment_name>
复制代码

3、命名空间相关

按给定名称创建命名空间


kubectl create namespace <namespace_name>
复制代码


列出集群中的当前命名空间


kubectl get namespace
复制代码


显示一个或多个命名空间的详细状态


kubectl describe namespace <namespace_name>
复制代码


删除命名空间


kubectl delete namespace <namespace_name>
复制代码


编辑和更新命名空间的定义


kubectl edit namespace <namespace_name>
复制代码

4、执行命令

接收在 pod 中的第一个容器上运行的命令的输出:


kubectl exec [pod-name] -- [command]
复制代码


从在 pod 中的特定容器上运行的命令获取输出:


kubectl exec [pod-name] -c [container-name] -- [command]
复制代码


从特定的 pod 运行/bin/bash 。接收到的输出来自第一个容器:


kubectl exec -ti [pod-name] -- /bin/bash
复制代码

5、守护进程

列出一个或多个守护程序集


kubectl get daemonset
复制代码


编辑和更新一个或多个守护程序集的定义


kubectl edit daemonset <daemonset_name>
复制代码


删除守护程序集


kubectl delete daemonset <daemonset_name>
复制代码


创建一个新的守护进程


kubectl create daemonset <daemonset_name>
复制代码


管理守护程序集的推出


kubectl rollout daemonset
复制代码


显示命名空间中守护程序集的详细状态


kubectl describe ds <daemonset_name> -n <namespace_name
复制代码

8、打印容器日志

打印 pod 的日志


kubectl logs <pod_name>
复制代码


打印 pod 上一小时的日志


kubectl logs --since=1h <pod_name>
复制代码


获取最近的 20 行日志


kubectl logs --tail=20 <pod_name>
复制代码


从服务获取日志并可选择选择哪个容器


kubectl logs -f <service_name> [-c <$container>]
复制代码


打印 pod 的日志并关注新日志


kubectl logs -f <pod_name>
复制代码


打印 pod 中容器的日志


kubectl logs -c <container_name> <pod_name>
复制代码


将 pod 的日志输出到名为“pod.log”的文件中


kubectl logs <pod_name> pod.log
复制代码


查看以前失败的 pod 的日志


kubectl logs --previous <pod_name>
复制代码


获取所有以 pod_prefix 命名的 pod 的日志


kubetail <pod_prefix>
复制代码


包括最近 5 分钟的日志


kubetail <pod_prefix> -s 5m
复制代码

11、其他命令

文档


获取 pod 清单的文档


kubectl explain pod
复制代码


获取服务清单的文档


kubectl explain service
复制代码


别名


在 linux 上创建别名


alias k=kubectl
复制代码


在 Windows 上创建别名


Set-Alias -Name k -Value kubectl
复制代码


节点


获取节点


kubectl get nodes
复制代码


获取特定节点


kubectl get nodes <node>
复制代码


显示节点指标


kubectl top node <node>
复制代码


服务帐号


列出服务帐号


kubectl get serviceaccounts
复制代码


获取服务帐号


kubectl get serviceaccount <serviceaccount>
复制代码


创建服务帐号


kubectl create serviceaccount <serviceaccount>
复制代码


删除服务帐号


kubectl delete serviceaccount <serviceaccount>
复制代码


描述服务帐号


kubectl describe serviceaccount <serviceaccount>
复制代码

10、格式化输出

如果想要以特定格式将详细信息输出到终端窗口,可以在 K8S 命令中加上-o 参数。


使用逗号分隔的自定义列列表打印表格


-o=custom-columns=<spec>
复制代码


使用文件中的自定义列模板打印表格


-o=custom-columns-file=<filename><filename>
复制代码


输出 JSON 格式的 API 对象


-o=json
复制代码


打印 jsonpath 表达式中定义的字段


-o=jsonpath=<template>
复制代码


打印文件中 jsonpath 表达式定义的字段<filename>


-o=jsonpath-file=<filename>
复制代码


仅打印资源名称,不打印其他内容


-o=name
复制代码


以纯文本格式输出任何附加信息,对于 pod,包括节点名称


-o=wide
复制代码


输出 YAML 格式的 API 对象


-o=yaml
复制代码


以上就是 K8S 的命令列表,下面给大家列举一下高频使用的命令,希望大家能够牢记!!!

K8S 高频使用的命令

1、列出所有命名空间服务


查看当前命名空间中所有服务的列表:


kubectl get services
复制代码


查看所有命名空间中的服务列表:


kubectl get pods --all-namespaces
复制代码


2、检索节点上的详细信息


查看节点的整体状态:


kubectl get nodes
复制代码


3、创建一个具有唯一名称的新命名空间


创建一个新的命名空间:


kubectl create ns hello-there
复制代码


4、利用文件来配置 Kubernetes


利用配置文件并更改资源:


kubectl apply -f config.yaml
复制代码


5、列出命名空间中所有正在运行的 pod


kubectl get pods --field-selector=status.phase=Running
复制代码


6、集群服务


显示集群主节点和服务的端点信息:


kubectl cluster-info
复制代码


7、服务日志 ⭐


kubectl logs -f <service_name>
复制代码


8、密钥


获取所有 Kubernetes 密钥的列表:


kubectl get secrets
复制代码


9、事件


查看所有基于资源的事件的列表:


kubectl get events
复制代码


10、创建新的 DaemonSet


kubectl create daemonset <daemonset_name>
复制代码

总结

K8S 在容器技术盛行的时代已经称为标配技术,本文瑞哥开始给大家介绍了 K8S 的基本知识,然后列举了 K8S 的命令列表,最后还给大家提炼出高频使用的命令,希望本文能够给您带来帮助。


最后感谢您的阅读,如果觉得文章对您有帮助,别忘了点赞👍、收藏⭐哦!有任何问题,欢迎在下方评论区与我讨论!!!

发布于: 刚刚阅读数: 4
用户头像

wljslmz

关注

极致主义者,追求技术的路上,勇往直前! 2021.05.24 加入

订阅号:网络技术联盟站 个站:https://www.wljslmz.cn

评论

发布
暂无评论
人手一套的K8S命令集合,它来了!_云计算_wljslmz_InfoQ写作社区