[译] 什么是 Kubernetes?
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之间进行负载平衡