Kubernetes 备忘单:架构、组件、命令表

已发表: 2020-12-15

Kubernetes 已成为行业的重要组成部分,并正在改变技术世界。 KubeCon 的联合主席 Janet Kuo 谈到了 Kubernetes 的特性及其在未来的重要性。 她谈到了将改变世界的 Kubernetes 扩展和解决方案

这份备忘单将为 Kubernetes 实施的专业人士提供参考。 它包含所有必要的详细信息,以帮助刚接触 Kubernetes 的初学者。 Kubernetes 备忘单是一种快速便捷的媒介,可以参考 Kubernetes 的所有基本概念和命令。

目录

关于 Kubernetes

用于跨主机集群自动部署和扩展容器以提供以容器为中心的基础设施的开源平台称为 Kubernetes(也称为“Kube”或 k8s)。 它允许通过集群来轻松有效地管理运行 Linux 容器的不同主机。

Kubernetes 是一个旨在完全管理容器化应用程序和服务的生命周期的平台。 Kubernetes 用户可以定义应用程序运行和与不同应用程序交互的方式。

用户可以使用 Kubernetes 在不同版本的应用程序之间切换流量、执行更新、扩展和缩减服务等。 它在管理应用程序方面为用户提供了高度的灵活性、可靠性和强大的功能。

Kubernetes 的一些主要特性是:

  • 通过更好地利用硬件来最大化资源。
  • 跨多个主机的容器编排器。
  • 自动化部署过程和更新。
  • 能够运行 Linux 容器。
  • 自动缩放有助于在集群节点上启动容器。
  • 根据需要放大和缩小。
  • 通过替换、重新调度和重新启动死容器来进行自我修复。
  • 自动回滚和推出。
  • 负载平衡和服务发现。
  • 自动重启、自动放置、自动复制等

阅读:深度学习算法

Kubernetes 架构

Kubernetes 的架构由层组成:高层和低层。 抽象较高层的复杂性可以在较低层中找到。 单独的物理机或虚拟机被汇集到一个集群中。 共享网络用于每个服务器之间的通信。 因此,就像其他分布式平台一样,Kubernetes 有一个(至少)一个主节点和多个计算节点。

  • Kubernetes 的 master 调度部署,公开 API 并管理整个 Kubernetes 集群。
  • 节点运行容器运行时、与主节点通信的代理以及其他监控组件、日志记录等。

Kubernetes 架构的组件

让我们看一下 Kubernetes 架构中 master 和 node 的用途和组成部分。

掌握

主节点维护集群的期望状态。 由于它管理整个集群,所以它被称为master。 它包含了:

  • API 服务器: Kubernetes API 服务器
  • 调度器:用于工作节点中的 pod 调度
  • 控制器:管理 pod 复制
  • etcd:元数据服务

节点

它包含对运行 pod 很重要的必要服务。 主节点管理节点。 它也被称为小黄人。 它包含了:

  • Pod:容器组
  • Docker:基于容器的技术,操作系统的用户空间。
  • Kubelet:负责维护一组 pod 的容器代理。
  • Kube-proxy:路由从服务进入节点的流量

现在,让我们了解一下 Kubernetes 的重要命令。

Kubectl 命令

Kubectl 是 Kubernetes 的命令行工具。 基本的 Kubectl 命令可以分为:

  • Pod 和容器内省
  • 集群内省
  • 调试
  • 快速命令
  • 对象

Pod 和容器内省

功能性命令
用于描述 pod 名称Kubectl 描述 pod<名称>
用于列出所有当前的 pod Kubectl 获取 pod
用于列出所有复制控制器kubectl 获取 rc
用于显示复制控制器名称Kubectl 描述 rc <名称>
用于列出命名空间中的复制控制器Kubectl 获取 rc –namespace=”namespace”
用于显示服务名称Kubectl 描述 svc<名称>
用于列出服务kubectl 获取 cvc
用于连续观察节点。 Kubectl 获取节点 -w
用于删除 pod Kubectl 删除 pod<名称>

集群内省

功能性命令
用于获取版本相关信息Kubectl 版本
用于获取配置详细信息Kubectl 配置 g 查看
用于获取集群相关信息Kubectl 集群信息
用于获取有关节点的信息Kubectl 描述节点<节点>

调试命令

功能性命令
用于显示 pod 的指标Kubectl 顶部吊舱
用于显示节点的指标Kubectl 顶级节点
用于观看 Kubelet 日志watch -n 2 cat/var/log/kublet.log
从容器的服务中获取日志Kubectl 记录 -f<名称>>[-c< $container>]
通过选择容器在服务上执行命令Kubectl exec<service><commands>[-c<$container>]

快速命令

以下快速命令经常使用,因此非常有用。

功能性命令
用于启动具有名称和图像的 pod。 Kubectl 运行<名称> — image=<图像名称>
用于创建 <manifest.yaml> 中描述的服务Kubectl create -f <manifest.yaml>
用于扩展复制计数器以计算实例数。 Kubectl scale –replicas=<count>rc<name>
用于将外部端口映射到内部复制端口。 公开 rc<name> –port=<external>–target-port=<internal>
用于停止 <n> 中的所有 pod kubectl drain<n>--delete-local-data--force--ignore-daemonset
用于创建命名空间。 Kubectl 创建命名空间 <命名空间>
用于允许主节点运行 pod。 Kubectltaintnodes –all-node-role.kuernetes.io/master-

对象

Kubernetes 中使用的一些熟悉的对象如下:

常见对象列表
全部控制器修订
cm=conf gmaps 集群角色绑定
定时任务cs=组件状态
部署=部署限制=限制范围
ev=事件hpa= 水平 pod 自动缩放
工作ds= 守护程序集
否 = 节点ns= 命名空间
po=豆荚Pod 预设
psp= pod 安全策略Pv= 持久卷
quota= 资源配额rs = 副本集
角色rc=复制控制器
sc= 存储类pdb= pod 分配预算
集群角色秘密
crd=自定义资源定义Pod 模板
csr= 证书签名请求sa= 服务帐户
Netpol- 网络政策角色绑定
ing=入口pvc= 持久卷声明
ep=终点sts=有状态集

另请阅读:深度学习中的正则化

Kubernetes 命令备忘单

关于 Kubernetes 的所有基本信息,它的架构和命令都显示在下面的 Kubernetes 备忘单中:

如果您有兴趣了解有关深度学习技术、机器学习的更多信息,请查看 IIIT-B 和 upGrad 的机器学习和人工智能 PG 文凭,该文凭专为在职专业人士设计,提供 450 多个小时的严格培训、30 多个案例研究和任务、IIIT-B 校友身份、5 个以上实用的实践顶点项目和顶级公司的工作协助。

什么是 Kubernetes?

Kubernetes 是一个用于自动部署、扩展和管理容器的开源平台。 容器是一个可立即运行的软件包,其中包含运行应用程序所需的一切:代码、运行时环境、应用程序和系统库。 容器就像应用程序的逻辑单元,当 Kubernetes 对它们进行分组时,管理和发现容器变得很容易。 这些容器跨主机部署和扩展,以提供以容器为中心的基础架构。 简而言之,它是一个管理容器化应用程序整个生命周期的平台。

Kubernetes 架构的主要组件是什么?

Kubernetes 架构中有两个主要组件——主节点和工作节点。 节点是主要的工作机器,对于运行一组称为 pod 的集群很重要。 整个集群由主节点管理,而工作节点执行主节点分配的任务。 这些节点中有许多内置组件。 主节点包含 Kubernetes API Server、Kubernetes Scheduler、Kubernetes Controller 和 Etcd。 工作节点有 pod、docker、kubelet 和 kube-proxy。

kubelet 和 kube-proxy 是做什么的?

Kubelet 存在于每个节点中,可确保容器在 pod 中运行良好。 它通过获取一组主要通过 apiserver 提供的 PodSpecs 并检查这些 PodSpecs 中存在的容器来做到这一点。 PodSpec 是描述 pod 的 YAML 或 JSON 对象。 Kubernetes Network Proxy,也称为 kube-proxy,维护节点上的网络规则。 通过这些网络规则,可以从集群内部或外部的网络会话与 Pod 进行通信。 如果 OS 包过滤层不可用,Kube-proxy 会转发流量。