[译]什么是 Kubernetes?

1,758 阅读3分钟

[译] 什么是 Kubernetes?

原文: github.com/ajeetraina/…

Kubernetes(通常称为K8s)是容器技术的编排引擎,例如Docker和rkt,它们在过去几年中接管了DevOps场景。它已作为托管服务在Azure和Google Cloud上提供。

Kubernetes 可以通过简单,自动化的部署,更新(滚动更新)以及几乎零停机时间管理我们的应用程序和服务来加速开发过程。它还提供自我修复。当进程在容器内崩溃时,Kubernetes可以检测并重新启动服务。Kubernetes最初由谷歌开发,自推出以来一直是开源的,并由大量的社区贡献者进行管理。

任何掌握了 Docker 基本知识的开发者都轻松可以打包他们的应用然后部署到 K8s 上

K8s 由什么组件组成?

Kubectl:

  • K8s 命令行工具

主节点:

  • 控制节点的主机
  • 所有管理进程的入口点
  • 他负责所有工作节点的调度编排

工作节点

  • 他是K8s的工作机器 (曾经被叫做从机)
  • 这个设备处理所有的任务。所有的节点都由主节点进行控制
  • 运行容器在Pods中
  • 这是Docker运行的地方,负责下载镜像运行容器。

Kubelet

  • 主节点代理
  • 确保容器的正常工作

Kubernetes Pod:

  • 可以托管多个容器和存储卷
  • Pod 是Deployments的实例
  • 一次部署可以有多个 Pod
  • 使用 Pod 水平自动伸缩,可以根据CPU使用情况自动启动和暂停部署的Pod.
  • 同一个 Pod 中的容器可以访问共享卷
  • 每一个 Pod 在集群中都拥有唯一的ip地址
  • Pod 会一直运行 直到有人或者调度器销毁他
  • 保存在 Pod 中的数据在没有持久化存储的情况下都会清空

Deployment:

  • Deployment是要创建 Pod 的蓝图(请参阅Pod)
  • 处理其各自 Pod 的更新.
  • Deployment 将根据模板中的规范创建 Pod.
  • 他们的目标是让 Pods 保持运行并以更加可控的方式更新它们(使用滚动更新).
  • 可以在 Deployment 中规定 Pod 的资源使用.
  • Deployment 可以扩展 Pod 的副本.
  • kubernetes Deployment

Secret:

  • Secret是一个对象,我们可以在其中存储敏感信息,如用户名和密码.
  • 在机密文件中,value都是base64编码过的.
  • 要使用Secret,我们需要参考Pod中的 Secret
  • 或者我们可以将其放入卷中并将其安装到容器中。 .
  • 默认情况下,密码不加密。对于加密,我们需要创建EncryptionConfig.

Service:

  • Service 负责使我们的Pod在网络内可被发现或将其暴露给互联网
  • Service 通过其LabelSelector标识Pod
  • 有3种类型的服务:

ClusterIP:

  • Deployment 仅在集群内可见
  • Deployment 获得分配给它的内部 ClusterIP
  • 流量在部署的 Pod 之间进行负载平衡

节点端口:

  • Deployment 在集群内部可见
  • Deployment 绑定到主节点的端口
  • 每个节点都会将该端口代理到您的服务
  • 服务可使用 http(s)://:/
  • 流量在部署的Pod之间进行负载平衡

负载均衡:

  • Deployment 获得公开的ip地址
  • 服务可用 http(s)://:<80||42>/
  • 流量在部署的Pod之间进行负载平衡

参考: