k8s第一章

1.0基础设施的迭代

1.1单机场景

传统的部署方案,硬件(戴尔的r620服务器)上部署操作系统(windows,linux等),操作系统上部署应用程序(apache,mysql,nginx等),可能会造成的问题,如果有一天apache被劫持了,那么同一台机器上的mysql数据目录等可能会泄露,而如果在不同的机器上部署不同的应用,可能会造成单台物理机的资源以及性能浪费,会造成大量闲置。

而为了解决这个相悖点,我们会进行虚拟化的部署,会虚拟出一个虚拟化层(虚拟化引擎),虚拟出一个个虚拟机,每个虚拟机可以运行相对隔离的应用程序,这样即使单个程序被劫持,也不会对其他应用程序造成影响,但是会造成另一个问题,现在企业中最关心的是自己的应用可不可以被进行安全可靠的访问(简单可靠稳定便宜),对于底层的架构是不关心的,linux操作系统之所以流行就是因为它便宜,而操作系统层其实是不提供资源给应用服务的,但是它本身不可避免的需要被消耗资源,所以随着虚拟机数量增加,它会有一定量级的资源会因为支撑虚拟化而被消耗,而不是你的应用消耗,所以随着服务器集群数量的增加,造成的资源浪费会极为可观。

所以最后容器的部署应运而生,既可以进行隔离,也不会造成资源的浪费,安全性上稍逊于传统虚拟化,但是资源利用率远超传统虚拟化。

1.2集群化部署场景-IAAS

为了应对用户数量呈指数型上升,当前云计算提供了一种服务叫做基础设施既服务,IAAS的实现如上图,由多台物理机组合在一起,当我们要在其中一台服务器上安装应用,我们会选择其中资源利用率最少的一台,通常会安装一个openstack,在物理机上组件一个集群或者说叫管理器,当我的用户想创建虚拟机的时候,会向openstack平台发送一个请求,openstack(规模越大,成本越低)会自动的帮你在资源剩量最大的一台中创建一个虚拟机,再将虚拟机的访问接口返回给你。

1.3集群化部署场景-PAAS(重点)

平台即服务,容器化部署,不需要部署系统和环境,直接把程序扔进去就行,该集群需要像open stack一样的管理器去管理,比如kubernetes、rancher、mesos等。

1.4平台对比

1.5kubernetes的优势

服务发现以及负载均衡

默认自带上述功能,传统想要实现负载均衡可能需要手动部署一个nginx或者说是lvs,但是kubernets一条命令就可以解决。

存储编排(添加任何本地或者云服务器)
自动部署和回滚

比如说定义一个任务,检测远程的代码仓库有没有更新,再通过调用kubernetes的接口进行自动化部署,回滚的意思是将1.1版本回滚到1.0版本,只需要一条命令即可。

自动分配CPU/内存资源-弹性伸缩

选择资源最充足或者说最合适的节点去运行这个应用,亦可以设定一个阈值,超出设定值自动扩展节点。

自我修复(需要时启动新容器)

传统虚拟化做自我修复的代价太大,容器的一个最大的特点时秒级启动,如果一个容器内的应用死了,我可以立即创建一个新的来把它顶替掉,代价很低。

Secret(安全相关信息)和配置管理

会针对敏感数据做编码。

大型规模的支持

每个节点的数量不超过110个,节点数不超过5000,pod总数不超过150000,容器总数不超过300000。

2.0kubernetes组件

2.1kubernetes宏观架构

master:管理端和控制端,维稳整个服务器集群

2.2kubernetes微观架构

k8s的作用:如果我们想运行一定的应用的话,可以直接向kubernetes集群下达命令,集群会自动帮我们选择合适的节点去部署容器,scheduel调度器去决定,绑定我们需要运行的容器与节点的关系,controller manage,如果一个容器被杀死了,控制器会保证有一个新的进行顶替,保证集群的高可用

API server:k8s集群的访问接口,请求通过以后将请求的数据存储到后端的etcd存储中,并将执行的结果返回

ETCD:键值对数据库,记录当前的集群配置以及信息参数,master节点之所以多个,就是因为如果其中一个损坏,etcd保存的数据不会丢失

集群工作的完整流程:用户通过kubectl命令行管理工具下发命令,api server验证权限,将任务信息存储到etcd当中,sheduel定期从etcd中查看是否有任务还未在节点上创建容器,如果没有会进行预选和优选的绑定,控制管理器检查容器运行状态。

kubelet的作用:承上启下的作用,监听当前节点需不需要创建容器,会通过接口调用docker创建容器,本身并不能创建容器。

kube proxy:监听API server,解决网络(防火墙)以及负载均衡的问题。

2.3k8s组件、插件、附件

CoreDNS:给集群内部提供域名解析功能

Ingress Controller:提供七层的负载均衡的服务

普罗米修斯:kubernetes集群的监控能力

Dashboard:图形化界面

Federation: k8s集群跨空间的管理能力

相关推荐
被程序耽误的胡先生几秒前
java中 kafka简单应用
java·开发语言·kafka
刀客1231 分钟前
python小项目编程-中级(1、图像处理)
开发语言·图像处理·python
卷卷的小趴菜学编程5 分钟前
c++之多态
c语言·开发语言·c++·面试·visual studio code
F202269748612 分钟前
Spring MVC 对象转换器:初级开发者入门指南
java·spring·mvc
冷琴199625 分钟前
基于Python+Vue开发的反诈视频宣传管理系统源代码
开发语言·vue.js·python
楠枬34 分钟前
网页五子棋——对战后端
java·开发语言·spring boot·websocket·spring
kyle~36 分钟前
thread---基本使用和常见错误
开发语言·c++·算法
YXWik61 小时前
23种设计模式
java·设计模式
不修×蝙蝠1 小时前
Tomcat理论(Ⅰ)
java·服务器·java-ee·tomcat