Kubernetes 0-1 简单介绍K8S

简介

我们的应用部署趋势由大型单体应用向微服务演变,微服务应用之间解耦,形成可被独立开发、部署、升级、伸缩的软件单元。

另一方面容器技术由于它的轻量级,资源隔离,可移植、部署高效等特性得到了迅速的发展和普及。越来越多的应用选择使用容器来部署,微服务更不例外。

这时,便有了管理微服务+容器的需求,Kubernetes开始大放异彩。

Kubernetes是基于容器技术的服务器集群管理系统,通过它,可以托管数量庞大的应用集,并且内置完备的集群管理能力,它有能力帮你做到这些:

  • 应用的容器化部署、健康检查、自我修复、自动伸缩、滚动更新、资源分配等
  • 服务的注册、发现、均衡负载等

Kubernetes对于运维团队来说,是一个强大的帮手,更自动化的部署和管理应用,更高效的利用硬件资源。

基本概念

Kubernetes集群,后面简称为K8S,主要是由控制节点(Master)和工作节点(Node)组成。

在Master节点中运行着三大组件:kube-api-serverkube-controller-managerkube-scheduler,通常也会将etcd数据库部署在Master节点。

在Node节点中,也是需要部署三个主要组件,容器引擎(基本默认docker了)、kubeletkube-proxy

K8S的组成结构大致如下图:

Master节点

负责K8S资源的调度管理,由Master向Node下达控制命令,并且一般运维人员使用Master操作和执行命令。

Master节点扮演的角色相当于K8S的大脑,其重要性可想而知,因此建议部署3台Master节点保证K8S的高可用性。

  • kube-api-server:http rest接口服务,与K8S其他组件通信,负责K8S资源的CURD的操作入口;

  • kube-controller-manager:K8S资源的自动化控制管理中心,如跟踪资源状态,资源修复等;

  • kube-scheduler:应用调度,为应用自动分配节点等;

  • etcd:分布式的数据库系统,存储K8S中的各种资源信息。

Node节点

负责K8S应用资源的容器化部署和运行,Node节点配置要求一般高于Master,当其中一个Node不可用时,部署在其上的K8S资源会自动被迁移到可用的Node。

  • docker:部署应用的容器引擎;
  • kubelet:与kube-api-server通信,向master注册自己,定时汇报自身Node信息,Master下达调度命令,同时负责容器生命周期的管理;
  • kube-proxy:实现service代理pointend和负载均衡,分配Node端口等。

其实了解了K8S的整个组成和相关组件服务的功能,我们就能知道如何来管理我们的K8S节点了。例如,我们要新增Node节点,该如何操作?

原理上新扩Node只需要在一台新的机器上安装以上三个服务,然后配置kubectl和kube-proxy的启动参数,通过kubelet向Master的kube-api-server提交Node注册信息,就可以将Node纳入Master的调度中心了。

工具

  • kubeadm

    使用kubeadm快速创建K8S集群,一般仅用于学习测试使用。

  • kubectl

    使用kubectl命令工具对K8S下达操作指令,一般将这个工具安装在Master节点。

结束语

这篇算是第一次写K8S,其实K8S技术流行时间也不短了,起初它便发展迅猛,现在依然活力四射,DevOps对它视若珍宝,Developer也大多对它心生向往。在我眼里,K8S不是万能钥匙,而是指纹解锁。

先写到这吧,下篇见。

相关文章