kubernetes学习笔记——k8s概念和架构
Posted Demonwuwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes学习笔记——k8s概念和架构相关的知识,希望对你有一定的参考价值。
突然想了解一下k8s(kubernetes,是因为取第1个和最后1个字母,中间有8个字母,所以叫k8s),以此系列文章记录一下,分享给大家,也便于后期自己复习查看。
参考视频:哔哩哔哩K8S教程由浅入深-尚硅谷
K8S概念和架构
一、k8s概述和特性
1、概述
- k8s是谷歌在2014年开业的容器化集群管理系统
- 使用k8s进行容器化应用部署
- 使用k8s利于应用扩展
- k8s让部署容器化应用更加简洁和高效
2、k8s特性
- 自动装箱:基于容器对应用环境的资源配置要求自动部署应用容器
- 自我修复:容器失败时会对容器进行重启;当部署节点有问题时,会对容器进行重新部署和重新调度;当容器未通过监控检查时,会关闭容器直到容器正常运行时才对外提供服务。
- 水平扩展:通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应容器进行规模扩大会规模裁剪。
- 服务发现:用户不需要使用额外的服务发现机制,就能够给予Kubernetes自身能力实现服务发现和负载均衡
- 滚动更新:可以根据应用的变化,对应容器运行的应用,进行一次性或批量式更新
- 版本回退:可以根据应用部署情况,进行历史版本即时会退
- 密钥和配置管理:在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署
- 存储编排:自动实现存储系统挂载及应用,特别对有状态应用实现水持久化非常重要,存储系统可以来自本地目录、网络存储(NFS、Gluster、Ceph等)、公共云存储服务
- 批处理:提供一次性任务,定时任务;满足批量处理和分析的场景。
二、K8S架构组件
Master(主控节点,主要做管理操作)和node(工作节点,主要做具体工作)
1) master组件:
Master指的是集群的控制节点,是整个集群的大脑,如果其宕机或不可用,则对集群内容器应用的管理都无法实施。
- API server:集群统一入口,以restful风格,传给etcd存储,对资源进行增、删、改、查等操作的唯一入口,也是集群的控制入口进程,负责资源(pod)调度的进程。
- scheduler:进行节点调度,选择node节点进行应用部署。
- controller-manager:处理集群中常规后台任务,一个资源对应一个资源控制器。
- etcd:存储系统,用于保存集群相关数据。
2)node组件:
是kubernetes集群的工作节点,每个Node都会被Master分配一些工作负载(docker容器),当一个宕机时,其上的工作负载会被Master自动转移到其他Node上
- kubelet:master派到node节点代表,管理本机容器。负责Pod对应容器的创建、启停等任务,与Master密切协作完成集群管理的基本功能
- kube-proxy:实现kubernetes service的通信与负载均衡机制的服务。
- docker容器:容器运行环境是负责运行容器的软件;Kubernetes支持多个容器运行环境:Docker、containerd、cri-o、rktlet以及任何实现Kubernetes CRI (容器运行环境接口) 的软件。
三、K8S核心概念
1、 Pod:
- 最小部署单元
- 一组容器的集合
- 共享网络 (一个Pod中的所有容器共享同一网络)
- 生命周期短暂(服务器重启后,就找不到了)
2、 Controler
- 确保预期的pod副本数量
- 无状态应用部署,不需要依赖于网络或者ip
- 有状态应用部署,需要特定的条件
- 确保所有的node运行同一个pod
- 一次性任务和定时任务
3、Service
- 定义一组pod的访问规则
- Pod的负载均衡,提供一个或多个Pod的稳定访问地址
以上是关于kubernetes学习笔记——k8s概念和架构的主要内容,如果未能解决你的问题,请参考以下文章