kubernetes基本功能

1、LXC

LXC为Linux Container的简写。Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:
与宿主机使用同一个内核,性能损耗小;
不需要指令级模拟;
不需要即时(Just-in-time)编译;
容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;
避免了准虚拟化和系统调用替换中的复杂性;
轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
总结:Linux Container是一种轻量级的虚拟化的手段。

2、docker

Docker是Docker.inc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源(可以商业)。
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。
Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机VM额外的操作系统开销,提高资源利用率。

docker应用场景

1、简化配置,统一配置,通过镜像快速启动(Simplifying)
2、代码流水线管理,开发环境->测试环境->预生产环境->灰度发布->正式发布,docker在这里实现了快速迁移(Code Oioeline Management)
3、开发效率,对开发人员,有了镜像,直接启动容器即可(Developer Productivity)
4、应用隔离,相对于虚拟机的完全隔离会占用资源,docker会比较节约资源(Applsolation)
5、服务器整合,一台服务器跑多个docker容器,提高服务器的利用率(Server Consolidation)
6、调试能力,debug调试(Debugging Capabilties)
7、多租户,一个租户多个用户,类似于阿里公有云的一个project下多个用户(Multi-tenancy)
8、快速部署,不需要启动操作系统,实现秒级部署(Rapid Deplovment)

docker的功能限制

非常适合管理单个容器,或者一组容器,不过,一旦开始使用越来越多的容器封装和应用程序,必将会导致管理和编排变得越来月困难。最终,用户不得不对容器实施分组,以便跨所有容器提供网络、安全,监控等服务。

3、k8s

kubernetes是一种用于在一组主机上运行和协同容器化应用程序的系统,为的是提供课预测、可扩展和高可用的方法来完全管理容器化应用程序和服务的生命周期的平台。用户可自定义应用程序的运行方式,以及与其他应用程序或外部世界交互的途径,并能实现服务的扩容和缩容,执行平滑滚动更新,以及在不同版本的应用程序之间调度流量以及测试功能或回滚有问题的部署。Kubernetes提供了接口和可组合的平台原语,使得用户能够以高度的灵活性和可靠性定义及管理应用程序。

主要特性:
(1)、自动装箱

建构于容器之上,基于资源依赖及其他约束自动完成容器部署且不影响其可用性,并通过调度机制混合关键型应用的工作负载于同一节点以提高资源利用率。

(2)、自我修复(自愈)

支持容器故障后自动重启、节点故障后重新调度容器,以及其他可用节点,健康状态检查失败后关闭容器并重新创建等自我修复机制。

(3)、水平扩展(有可用节点)

支持通过简单命令或UI手动水平扩展,以及基于CPU、内存等资源负载率的自动水平扩展。

(4)、服务发现和负载均衡

Kubernetes通过其附加组件之一的KubeDNS为系统内置了服务发现功能(可以理解为内部的DNS服务),它会为每个Service配置DNS名称,并允许集群内的客户端直接使用此名称发出访问请求,而Service则通过Iptables或者ipvs内建负载均衡机制。

(5)、自动发布和回滚

支持灰度发布,这块需要自己做好镜像,每次发布的时候直接发布新镜像。回滚的时候用原先的镜像(代码放到docker里面,java,mvn用的比较多)

(6)、密钥和配置管理

ConfigMap实现配置数据与Docker镜像解耦,需要对配置做出变更无须重做docker镜像,可以为应用开放提供很大的灵活性。对敏感数据提供Secret对象为其解耦,提供一定安全机制。

扫描二维码关注公众号,回复: 9401189 查看本文章
(7)、存储编排

支持Pod对象按需挂载不同类型的存储系统 ,可以是本地存储,公有云服务商的云存储(aws和GCP),以及网络存储系统(例如,NFS、iSCSI、GlusterFS、Ceph等)

(8)、批量处理执行

除了服务型应用。kubernetes还支持批处理作业及CI(持续集成),这个也可以实现容器故障恢复(我暂时没用过)

现阶段我们使用的功能
1、网络插件flannel
2、Service,Deployment,Pod  
3、ingress
4、Pod资源调度
5、dashboard
6、资源指标服务metrics-server
7、资源限定和HPA
还需要做的
1、资源指标限定的合理性
2、健康状态检查(pod启动成功后才加入到service)(livenessProbe,readlinessProbe)
LivenessProbe:检查容器是否正常,不正常则重启POD
ReadlinessProbe:检查容器是否正常,不正常会标记特殊状态,不加入service的负载均衡里面。
3、调度模式(亲和性,反亲和性)(同一个引用的nginx+php加上亲和性,让其跑在同一个节点)
4、权限控制(一个用户只管理一部分资源,或者一个名称空间)
5、日志收集(EFK,ELK)
6、集群监控(G+P+ELK)
7、helm(下载模版,快速安装)
发布了4 篇原创文章 · 获赞 0 · 访问量 318

猜你喜欢

转载自blog.csdn.net/bjwf125/article/details/100738756