内容导读
- Kubernetes概述
- Kubernetes集群的组件
- Kubernetes集群的部署方式和工具
- 使用部署工具创建Kubernetes集群
一、Kubernetes概述
1.1 什么是Kubernetes
Kubernetes:用于自动部署、扩缩和管理容器化应用程序的开源系统;
Kubernetes:简称为K8S或K8;
Docker:集装箱货轮;
Kubernetes:船舵(船的方向盘)。
1.2 为什么要使用Kubernetes
1、Kubernetes是业界领先的容器编排解决方案
(1)Mesos——Apache的开源分布式资源管理框架
由于大数据计算调度领域的局限性,Mesos只在特定的小范围使用。
(2)Docker Swarm——Docker原生集群解决方案
紧密集成到Docker的生态系统中,适合规模不大的应用程序环境。随着Docker企业版被Mirantis公司收购,Mirantis更倾向于编排工具Kubernetes,Docker Swarm面临被逐步淘汰的命运。
(3)Kubernetes——谷歌公司推出的开源容器集群管理系统
(4)具有超前的核心基础特性,构建与众不同的容器编排和管理的生态。
Kubernetes内部最底层最核心的Borg/Omega系统是使用golang语言重新设计开发的,并对外开源。发展成为容器编排和管理领域的事实标准。
2、使用Kubernetes具有极大的优势
(1)大大提升开发和运维复杂系统的人效。
(2)全面拥抱微服务架构,解决复杂业务系统的架构问题。
(3)随时随地将系统整体迁移到公有云上。
(4)利用Kubernetes服务弹性扩容机制轻松应对突发流量。
(5)系统架构具有横向扩容能力,便于在线完成集群扩容,在多个云环境中进行弹性伸缩。
1.3 Kubernetes的主要特性
1.4 Kubernetes与云原生
1、什么是云原生
微服务、DevOps、持续交付、容器化
2、云原生的代表技术
容器、服务网格、微服务、不可变基础设施、声明式API
3、云原生应用程序的特点
4、Kubernetes是云原生技术的基石
(1)Docker实现了容器的可移植、轻量化、虚拟化,为容器技术的普及作出了重要贡献。
(2)Kubernetes解决容器编排的全生命周期管理。
(3)CNCF致力于培育和维护开源生态系统来推广云原生技术,Kubernetes成为CNCF托管的第一个开源项目。
(4)作为管理云容器平台的工具,Kubernetes简化容器化应用程序的部署,成功解决了应用上云的效率和可移植性等问题,从而被称为云原生技术的基石。
(5)云原生的Kubernetes架构可以连续多次处理应用程序的部署。
二、Kubernetes集群的组件
2.1 控制平面组件
1、kube-apiserver——API服务器(API Server)负责公开Kubernetes API,处理接受请求的工作。
2、etcd——所有集群数据的后台数据库,持久化存储集群中所有的资源对象以及配置数据。
3、kube-scheduler——Kubernetes调度器(Scheduler)负责Pod在集群节点中的调度分配。
4、kube-controller-manager——Kubernetes控制器管理器(Controller Manager)负责运行控制器进程。
5、cloud-controller-manager——云控制器管理器(Cloud Controller Manager)利用云基础设施技术,在公有云、私有云或者混合云环境中运行Kubernetes。
2.2 工作节点组件
1、kubelet——在集群中每个节点上运行,是负责启动容器的重要的守护进程,用于保证容器在Pod中健康运行。
2、kube-proxy ——集群中每个节点上所运行的网络代理,是实现Kubernetes服务(Service