《Kubernetes 集成外部服务实践》- 第三期 Docker 技术沙龙主题剖析系列 [第一篇]

2016-03-16 15:50:21 +08:00
 Tenxcloud10

分享嘉宾:柴宗三,亚信大数据云平台部高级研发工程师。目前负责亚信 DataFoundry 大数据 PaaS 云平台。本文源自于 3 月 12 号《第三期 Kubernetes 沙龙》四个 Topic 之一,是《第三期 kubernetes 沙龙主题剖析系列·第一篇》。本文对如何将后端服务( backend service )接入kubernetes进行了比较详尽的介绍。

Part I. Kubernetes 简介

Kubernetes 不同组件的交互是异步的,不同组件负责不同的功能模块。 Kubernetes 集群目前为单 master 结构,一般情况下 master 节点上运行 APIServer 、 kube-controller-manager 、 kube-scheduler 、 etcd , node 节点上运行 kubelet 、 kube-proxy 、 flannel 。 Etcd 和 flannel 用于网络管理,不是 kubernetes 本身的组件,这里不做介绍。虽然 k8s 是单 master 结构,但是 master 的宕机并不会导致导致集群应用 service unavailable ,只是暂时无法从管理层面对容器应用进行操作。

• APIServer ( master 组件)的功能是作为集群的 Master ,提供集群管理的 API ,接收客户端的 REST 请求,读写 etcd 中的数据。
• kube-controller-manager ( master 组件)监听 Replication Controller 的变化,并创建对应的 Pod ,使其达到期望的运行状态。
• kube-scheduler ( master 组件)根据节点的资源和限制条件将 pod 分配给特定 slave 节点的 kubelet 。
• Kubelet ( node 组件)作为 daemon 运行在每个 slave 节点上,用来维持节点上的容器,保持与 APIServer 、 etcd 的数据同步。 Kubelet 默认集成 cadvisor 组件,用于搜集主机和容器的监控数据。
• kube-proxy ( node 组件)用于接收打给 service 的流量,根据 podSelector 分发给特定的 backend pods 。如果配置了 service 的 external endpoint ,则会将请求分发给外部服务。

Part II. 将外部服务接入 kubernetes

backend service ,即后台服务,具有持久化、插件化、服务化的特点。对于 PaaS 平台,其 backend service 还要满足四个需求:需求多样、服务共享、按需分配、开箱即用。为了满足 PaaS 平台的这些需求,必须对 backend service 做一些规范规范。对此,亚信的 PaaS 平台采用了 CloudFoundry 的规范(如下)。每个 backend service 都会暴露自己的 REST API 供其它服务调用。通过 REST API 的方式,极大方便了 Resource Register 、 Controller Handler 、 Api Router 、 CLI 的实现。

Backend service(后台服务)与 kubernetes 通过两种方式集成。第一种,每个 backend service 作为 Pod 中的一个 container 运行在 kubernetes 中,不同的后端服务可以使用 Pod 级别的编排相互串联起来。 Backend service 的 REST API 通过 service 映射到外部,对外提供服务。为了保持服务的持久性,不能采用本地存储,建议将分布式文件系统的块挂载到后端服务对应的 Pod 上。第二种方式, backend service 作为一个独立的服务,与 kubernetes 集群分开。在 kubernetes 集群中创建 service ,将后台服务的访问方式设置到 service 的 external endpoint 中。

Part III. 访问 REST API

无论后端服务在 kubernetes 集群中作为 Container 运行,或者处于 kubernetes 集群之外,都通过 kubernetes 的 service 做请求分发。 Kubernetes 的 Service 本身非常灵活,可以选择暴露到外网,或者只是在内网访问。同时 Service 具备 load balance 功能,如果后端服务独立于 kubernetes 集群,那么可以充当简化版的 haproxy 使用。

1863 次点击
所在节点    云计算
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/263955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX