Docker 与 K8S学习笔记(十三)—— K8S的基本概念
前面我们学习了Docker的基本知识,从今天开始将进入Kubernetes的内容学习,今天我们将整体梳理下Kubernetes的相关基本概念,为后续的内容学习打基础。
一、什么是Kubernetes
Kubernetes源自谷歌内部的容器管理系统Borg,是一个全新的基于容器技术的分布式架构解决方案,并且也是一个一站式的完备的分布式系统开发与支撑平台,
二、为什么需要Kubernetes,它能解决什么问题?
前面我们在讲Docker时说过,容器技术可以解决应用程序打包和部署问题,但是在生产环境中,我们不光是把应用部署上去就完事了,我们还需要确保我们的应用能够稳定提供服务,即使挂掉也能快速恢复,当高并发下时能够扩容,低并发下能够缩容以节约资源,试想一下,如果这些工作仅仅靠容器技术它能很好解决吗?这还仅仅是部署一个应用,如果集群中部署大量应用又该如何处理呢?很明显这些工作必须要通过自动化的方式解决,而Kubernetes正是解决这类问题的绝佳方案。Kubernetes具备以下能力:
1、服务发现与负载均衡
Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
2、存储编排
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
3、自动部署与回滚
你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为期望状态。例如,你可以自动化的方式让 Kubernetes 为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
4、自动完成装箱计算
Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
5、自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
6、密钥与配置管理
Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。
三、Kubernetes的架构与基本组件
一个 Kubernetes 集群由一组被称作节点的机器组成。这些节点分为Master节点和Node节点,Master节点也叫控制平面,负责管理集群中的工作节点和 Pod ,为集群提供故障转移和高可用性。Node节点即工作节点,集群具有至少一个工作节点,工作节点负责管理Pod。
1、Master节点
Master节点对集群做出全局决策(比如调度),以及检测和响应集群事件,Master节点上运行如下一组关键进程:
kube-apiserver:提供HTTP Rest接口,是用户对集群所有资源增删改查的入口,也是集群控制入口进程。
kube-scheduler:负责资源调度,即控制新创建的未指定运行节点的Pods在哪个节点上运行。
kube-controller-manager:Kubernets里面所有资源对象的自动化控制中心。
etcd:etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
2、Node节点
Node节点是Kubernetes集群的工作负载节点,每个Node会被Master分配一些工作负载(Docker容器),当Node宕机时,其上所有工作负载会被Master自动转移到其它Node。每个Node节点中都运行着以下关键进程:
kubelet:负责Pod对应的容器的创建、起停操作,同时与Master紧密协作实现集群管理基本功能。
kube-proxy:实现Kubernetes服务与负载均衡机制的重要组件。
Docker Engine:提供容器运行时环境。
OK,以上就是本篇的内容,后续我们将深入进行Kubernetes的学习。