Kubernetes: K8S 容器集群管理系统
K8S
·
虚拟机 -> 容器技术
传统部署:直接将应用程序部署在物理机上。
虚拟机(vmware、openstack):可以在操作系统中模拟出多台子电脑(Linux),子电脑之间是相互隔离的(独立),但是虚拟机存在启动慢,占用空间大,不易迁移的缺点。
容器化技术(Docker):虚拟一个小规模的环境,共享操作系统。启动速度很快,除了运行其中应用以外,基本不消耗额外的系统资源。
Docker存在的问题:
- 一个容器故障停机了,怎么样保证高可用让另外一个容器立刻启动去替补上停机的容器。
- 当并发访问量上来的时候,是否可以做到自动扩容,并发访问量下去的时候是否可以做到自动缩容。
- …
随着应用越来越复杂,容器的数量也越来越多,由此衍生了管理运维容器的重大问题(容器编排问题)。而且随着云计算的发展,云端最大的挑战,容器在漂移。
=》k8s提出了一套全新的基于容器技术的分布式架构领先方案。
K8S介绍:容器编排工具
可以实现容器集群的自动化部署、自动扩缩容、维护等功能
通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。这使得从研发到测试、生产能提供一致环境。
- 服务发现与调度:服务可以通过自动发现的形式找到它所依赖的服务。
- 负载均衡:如果一个服务启动了多个容器,能够自动实现请求的负载均衡。
- 服务自愈:自动化容器恢复。一旦某一个容器崩溃,能够在1秒左右迅速启动新的容器。
- 服务弹性扩容:可以根据需要,自动对集群中正在运行的容器数量进行调整。
- 横向扩容:
- 存储卷挂载(存储编排):可以根据容器自身的需求自动创建存储卷。
组成:Master节点 + Node(Worker)节点
Master控制节点
集群控制节点,管理和控制整个集群。所有控制命令都发给它,它负责具体的执行过程。
组件
- ApiServer :资源操作的唯一入口,接收用户输入的命令,提供认证、授权、Api 注册和发现等机制。
- Controller Manager(kube-controller-manager):所有资源对象的自动化控制中心,维护管理集群的状态,比如故障检测,自动扩展,滚动更新等。
- Scheduler(kube-scheduler): 负责资源调度,按照预定的调度策略将Pod调度到相应的node上。
- etcd:负责存储集群中各种资源对象的信息,保存整个集群的状态。
Node工作节点
在master中使用命令 kubectl get nodes
查看集群中的node节点。
每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,该节点上的工作负载就会被Master自动转移到其它节点上。
组件
- kubelet:负责维护容器的生命周期,即通过控制 docker 来创建、更新、销毁容器。负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能。
- kube-proxy:负责提供集群内部的服务发现(service通信)和负载均衡。
- docker(Docker Engine):Docker引擎,负责本机的容器创建和管理。
搭建
一主多从:一台 master 节点和多台 node 节点,搭建比较简单,但是有可能出现 master 单机故障。
多主多从: 多台 master 节点和多台 node 节点,搭建比较麻烦,但是安全性高。
Katacoda:可在浏览器中使用真实环境学习和测试新技术
- Katacoda:已关闭
- Killercoda
- CloudYuga
- 知行动手实验室
- https://labs.play-with-k8s.com/
minikube: 单机版的Kubernetes集群
更多推荐
已为社区贡献1条内容
所有评论(0)