学习《Kubernetes in Action》 系列一

学习《Kubernetes in Action》 系列一

第一章 绪论

1、什么是Kubernete:是一个软件系统,允许你在 Kubernetes 上轻易地部署和管理容器化的应用。

2、主节点:承载 Kubernete 的控制和管理整个集群系统的控制面板(可以拥有多个主节点,来确保可用性)
3、工作节点:是运行用户实际部署的应用
开发者将一个应用列表提交给主节点,Kubernetes 会将应用列表部署在集群的工作节点中。
学习《Kubernetes in Action》 系列一
上图展示了运行在这两种节点上的组件。

  • 控制面板(master):控制集群工作,包含多个组件。控制面板的组件持有并控制集群状态,但是不运行用户的应用程序,应用程序是在工作节点上完成的

    • Kebernetes API 服务器:工作人员和其他控制面板组件都要和服务器进行通信
    • Scheduler: 调度应用(分配工作节点)
    • Controller Manager: 执行集群级别的功能
    • etcd: 可靠的分布式数据存储,能够持久化存储集群的配置
  • 工作节点:是运行容器化应用的机器

    • Docker、rtk或者其他容器的类型
    • Kubelet: 与 API服务器通信,并管理它所在节点的容器
    • Kubernetes Service Porxy(kube-proxy): 负责组件之间的均衡网络流量

4、在 Kubernetes 上运行应用

  • 将一个应用打包进一个或者多个容器镜像中
  • 上传到镜像仓库看中
  • 将应用的描述发布到 Kubernetes API服务器中
    • 其中,应用的描述包括:容器镜像中的组件如何关联?哪些组件应该运行在同一个节点?哪些组件不用同时运行?哪些组件为内部/外部提供服务,且应该通过单个IP地址暴露,使得可以被其他组件所发现。
  • 描述信息在 API服务器上会被处理、调度。

5、Kubernetes 可能在集群中移动容器:如果容器A向集群中的其他容器或者外部客户提供服务,那么当容器A被集群调度的时候,其他容器或者外部客户要如何才能连接到提供给服务的容器A?

  • Kubernetes 将通过一个静态IP暴露所有的容器,,将这个静态IP(通过配置环境变量)暴露给集群中的所有应用程序,或者客户端也可以通过DNS查找服务IP,kube-proxy将会确保服务会连接在可跨的提供服务的容器,实现负载均衡。提供服务的IP地址不变,所以客户端始终都可以连接到它所需要的容器。

学习《Kubernetes in Action》 系列一
上图可以更好地理解如何在 Kubernetes 中部署应用程序:

  • 应用描述符列出4种容器,将分为三组集合(集合被称为 pod ),前两个 pod 只包含了一个容器,而最后一个pod 包含了两个容器,说明最后一个 pod 中的容器是相互协作的,不应该相互隔离。Pod 旁边的数字表示了每个 pod 需要运行的副本数量,向 Kubernetes 提交描述符后,将会把指定数量的 pod 调度到可用的工作节点上,节点上的 Kubelet 将会告诉 Docker 从镜像仓库中拉取容器镜像,并且运行容器。