Kubernetes理论01

摘要:
1.什么是Kubernetes•Kubernete是谷歌于2014年开放的容器集群管理系统,•Kubernet旨在使容器应用程序的部署简单高效。K8S通过使用命令、UI或根据CPU使用情况自动快速扩展和缩小应用程序实例,为多个容器提供统一的访问门户(内部IP地址和DNS名称),因此用户无需考虑容器IP问题。管理机密数据和应用程序配置。

1、Kubernetes是什么

•Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。
•K8S用于容器化应用程序的部署,扩展和管理。
•K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能。
•Kubernetes目标是让部署容器化应用简单高效。
官方网站:http://www.kubernetes.io

2、Kubernetes特性

1. 自我修复:在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。
2. 弹性伸缩:使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。
3. 自动部署和回滚:K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务。
4. 服务发现和负载均衡:K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。
5. 机密和配置管理:管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。
6. 存储编排:挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如NFS、GlusterFS、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。
7. 批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景。

 3、Kubernetes集群架构与组件

Kubernetes理论01第1张

 Kubernetes理论01第2张

Master组件
1. kube-apiserver:Kubernetes API,集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。
2. kube-controller-manager:处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。
3. kube-scheduler:根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。
4. etcd:分布式键值存储系统。用于保存集群状态数据,比如Pod、Service等对象信息。


Node组件
1. kubelet:kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。
2. kube-proxy:在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。
3. docker或rocket:容器引擎,运行容器。

4、Kubernetes核心概念

Kubernetes理论01第3张

Pod
•最小部署单元
•一组容器的集合
•一个Pod中的容器共享网络命名空间
•Pod是短暂的

Controllers(控制器):更高级层次对象,部署和管理Pod
•ReplicaSet :确保预期的Pod副本数量
•Deployment :无状态应用部署
•StatefulSet :有状态应用部署
•DaemonSet :确保所有Node运行同一个Pod
•Job :一次性任务
•Cronjob :定时任务

Service
•防止Pod失联
•定义一组Pod的访问策略

Label :标签,附加到某个资源上,用于关联对象、查询和筛选
Namespaces:命名空间,将对象逻辑上隔离
Annotations :注释

5、官方提供的三种部署方式


1. minikube
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于尝试Kubernetes或日常开发的用户使用。
部署地址:https://kubernetes.io/docs/setup/minikube/


2. kubeadm
Kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/


3. 二进制包
推荐,从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
下载地址:https://github.com/kubernetes/kubernetes/releases

6、Kubernetes多master规划图

Kubernetes理论01第4张

 Node节点原理图

Kubernetes理论01第5张

免责声明:文章转载自《Kubernetes理论01》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.net core 使用事务vue中Axios的封装和API接口的管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Win10 UWP 开发系列:使用多语言工具包让应用支持多语言

之前我在一篇blog中写过如何使用多语言工具包,见http://www.cnblogs.com/yanxiaodi/p/3800767.html 在WinEcos社区也发布过一篇详细的文章介绍多语言工具包的使用,但因社区改版那篇文章已经找不到了。 当时写的时候还没有出Win10的SDK,都是基于UAP框架写的。微软早已经发布了Win10的SDK,相应的项目...

keycloak~自定义rest接口

rest资源 对于我们集成keycloak来说,你可能会遇到它没有实现的功能,这时需要对kc进行扩展,资源的扩展是其中一个方面,它需要实现RealmResourceProvider和RealmResourceProviderFactory两个接口,然后在KC启动之后,它可以被注册到IOC容器里,方便以后我们直接使用。 KC里的扩展是开闭原则OCP的完美体现...

Docker从入门到放弃

  为什么要学习 docker 呢?深有体会,由于一些原因只能在他人电脑上搭建环境,明明在自己电脑上的程序跑的好好的,在他人的电脑上就是死活出错。折磨人呀!!!!!可是能怎么办,工作还得继续,曲线救国呗,折腾了一天终于搞好了,那么以后呢?想到了之前搭建靶机时候用到的docker,时间长了也忘了,准备好好梳理学习入门一波。《十分感谢大神的文章,本文基于大神的...

C++ 容器与继承

如果容器类型定义为基类类型,那么虽然可以把派生类装进容器中,但是不能通过容器访问派生类自己的public成员,派生类将会倍切掉,只保留派生类的基类部分; 如果把容器定义为派生类类型,那么不能把基类类型装进容器中,没有从基类类型到派生类类型的标准转换。虽然可以显式的使用强制类型转化把基类转化成派生类,放入容器,但是如果使用这些元素的派生类成员时,它们将会是未...

kubernetes之健康状态检测

1.说明容器探针: kubelet 对容器执行的定期诊断探针执行方式: LivenessProbe: 判断容器是否存活 running状态, 如果不健康kubelet就会杀掉pod,根据重启策略RestartPolicy进行相应的处理 ReadinessProbe: 判断容器是否处于可用Ready状态, 达到ready状态表示pod可以接受请求, 如果...

系统综合实践 第2次实践作业 ——学习Dockerfile

目录 (一)实现一个自定义的web容器服务 (1)镜像拉取 (2)配置文件 (3)镜像构建及容器运行 (二) 实现一个自定义的数据库容器服务 (1)拉取镜像 (2)配置文件 (3)镜像构建及容器运行 (4)mysql基本操作 (三) 心得体会 (一)实现一个自定义的web容器服务 要求:推荐apache或nginx,要求标明镜像作者...