Kubernetes入门了解
前言了解:
物理机模式:我们刚入门学习WEB项目的时候往往都是把项目直接部署到自己的主机上的Tomcat,根据业务需求进行多集群部署。
虚拟化模式:随着服务器的访问量上升,我们需要部署更多应用集群项目。当我们在一台物理机上部署一个应用的时候,很可能会大材小用,浪费掉了物理机上多余的性能。
那么我们开始在一台物理机上部署多台虚拟机,再在每台虚拟机上都部署上应用达到资源利用的效果。
云原生模式:拿我们的淘宝电商做例子。当我们双十一的时候淘宝的访问量会比往常大好几倍。那么我们如果按照日常的需求部署服务器的话肯定是会影响双十一的业务需求的。
那么我们就要考虑部署多台服务器,但是我们如果去购买服务器来部署又不值得,毕竟双十一过后又不需要那么多的资源了。此时我们就可以去租借多台云服务器。
我们如果按照原先虚拟机的方式,还需要去给各个服务器配置环境运行项目。这种方式过于耗时。这时候就产生了容器的概念,我们可以将应用以及环境一起部署
到应用之中。当需要在其他服务器上部署的时候只需要将容器打包部署即可。这样即简单又方便。
那么既然讲到了云原生模式的容器,我们在学习之前也要有容器的概念,这里可以阅读Docker快速入门进行学习。
当我们需要部署多个容器的时候,逐个的部署管理肯定是不切实际的。此时我们就需要一个平台可以去管理我们的容器。那么我们就需要了解到Kubernetes。
Kubernetes是什么?
Kubernetes一个用于容器集群的自动化部署、扩容以及运维的开源平台。通过Kubernetes,你可以快速有效地响应用户需求;
快速而有预期地部署你的应用;极速地扩展你的应用;无缝对接新应用功能;节省资源,优化硬件资源的使用。为容器编排管理提供了完整的开源方案。
Kubernetes服务流程图:
学习一门技术都是先从HelloWorld案例开始,这里我们拿HelloWorld举例,当我们外部想请求访问
HelloService的时候,会访问到Kubernetes集群上的HelloService后再又Kubernetes分配到Pod上进行相应。
k8s功能
-
自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
-
自我修复(自愈能力)
当容器失败时,会对容器进行重启
当所部署的Node节点有问题时,会对容器进行重新部署和重新调度
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
-
水平扩展
通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模剪裁
-
服务发现
用户不需要使用额外的服务发现机制,就能够基于Kubernetes自身能力实现服务发现和负载均衡
-
滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
-
版本回退
可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
-
密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
-
存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要
存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph、Cinder等)、公共云存储服务等
Node及Pod支持
Node(节点)数支持
早期版本管理100台
现版本可以管理2000台
pod管理支持
早期版本管理1000个
现版本管理150000个
K8s功能总结:
应用部署架构分类
应用部署架构的分类大致可以分为两种:
- 无中心节点架构:
1.GlusterFs
- 有中心节点架构:
1.HDFS
2.K8S
K8s集群架构
通过观察Kubernetes的集群架构图,我们可以观察出这里有两种节点,一种是Master node还有一种就是Worker node
在通过命令访问我们的k8s集群的时候会通过我们的Master node
Worker node主要是用来提供应用的运行工作,主要是服从Master node的安排
所以从这里可以看出来K8s是一种有中心节点的架构
K8s集群架构节点角色功能
Master Node
- k8s集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
- Master Node由APl Server、Scheduler、Cluster State Store ( ETCD数据库)和Controller Manger Server所组成;
Worker Node
- 集群工作节点,运行用户业务应用容器;
- Worker Node包含kubelet、kube proxy和Container Runtime;
##################
通过下面这张图我们就可以很清楚的了解到Master节点和Worker节点的不同,结合我们上面对两个节点的分析可以很清楚的看到
Master节点中由四个主要模块组成。而Worker中有许许多多的子节点进行工作。
Kubernetes架构总结: