第1章:Kubernetes架构概述

传统应用运维系统,Ansible(安装,配置,服务启动,完成playbook等应用编排工具),Puppet,Saltstack等
Docker出现之后,应用程序容器化;
容器编排工具:
Docker三剑客
Docker Compose,适用于单机编排;
Docker Swarm,适用于集群调度编排;
Docker machine,初始化docker主机,使其加入docker swarm集群,预处理工具;

Mesos,面向IDC/OS,用于资源统一管理和分配工具;
Marathon,提供IDC容器的编排框架;
RKT–>Fleet;放弃Fleet,直接原生支持Kubernetes;(Fleet属于CoreOS,但是CoreOS已经被红帽收购)

Kubernetes,占据超80%份额;(一般,超越35%即为自然垄断)

其他:
DevOps:Development + Operation;
CI/CD/CD:Continuous Integration / Continuous Deployment/Continuous Delivery,持续集成/持续部署/持续交付;
应用发布:蓝绿,灰度发布,金丝雀发布等;
Java应用编译/构建(Build):Ant,Maven,Gradle等;
持续集成,触发从Git中自动拉取,构建,测试(单元测试,功能测试,压力测试,或者特定测试由测试工程师完成),一旦出现问题,则打回程序员重新提交等;
持续部署,自动打包到制品仓库中,并且自动从仓库中拉取镜像,自动发布到目标平台;
Microserice,微服务;

开发模式:瀑布式开发,敏捷开发,精益开发……
应用架构:单体应用架构(所有功能在一个应用软件,功能相对简单,内部瓶颈无法横向扩展???),分层架构(AMT),微服务(服务拆分,虽与容器无直接关联,但微服务架构经常是构建在容器之上的,容器特性:构建,分发,部署,屏蔽底层异构环境等)……

当容器运行在不同主机上,哪些容器是内部通信,哪些容器是对外暴露服务,容器之间的依赖关系等,非常复杂;容器时代,传统人肉运维几乎不可能,需要容器编排工具;
DevOps,本身不是一种技术,是一种思想,一种文化,一种运动,一种趋势;

Kubernetes,寓意为舵手,飞行员,源自Google内部的Borg系统;
2015年7月份发布1.0版本;
每个版本都有Alpha,Beta,Release,Pre-release,Latest release等版本;
2017年,AWS,Azure,Aliyun等云计算平台开始原生支持Kubernetes;
2017年10月,docker宣布同时支持docker swarm和Kubernetes;
Kubernetes只是容器编排工具,尚不构成PaaS;没有Devops工具链等;
Openshift,红帽公司对于Kubernetes的PaaS发行版本;(Container as a service)

Kubernetes特性:
自动装箱(基于资源、依赖和约束,完成容器部署)
自我修复(基于容器比较轻量,故障自愈,直接Kill,更加关注群体,而不是个体,因为多数都是无状态)
水平扩展(只要资源足够)
服务发现和负载均衡(发现依赖)
自动发布和回滚
密钥和配置管理(非云原生应用:ENTRYPOINT脚本,传递环境变量,变量值替换为容器应用程序可读取的配置信息,通过读取配置文件来获取配置,用catch,echo等语句;云原生应用,直接使用环境变量,启动即拥有相应配置;满足一个镜像在不同环境,运行为不同配置的容器应用的需求;配置信息存在哪里呢?配置中心,直接加载,Configmap和Secret)
存储编排(PV动态供给)
任务批量处理和执行
……
Kubernetes是一个带有中心节点的集群架构系统,Maser / Node(worker)类型,对外提供计算,存储等服务;(集群模型:1,P2P服务,如RedisCluster,没有中心节点,每一个节点本身都可以直接接收或者路由用户请求;2,中心节点(名称节点),如MysqlCluster的主从复制,分布式系统中的HDFS等)
Kubernetes in Kubernetes(KOK自托管方式)
Kubernetes是一个RESTful风格的API,通过Http或者https协议对外提供API服务;
(通过套接字socket向外提供,一般都是API接口)
组件:
Master包含API-Server,Scheduler和Controller Manager等组件,整个集群的大脑,司令部;
Master节点:
API Server:接收外部请求,解析请求和处理请求等;
Scheduler:调度器,调度容器创建的请求,并且根据外部请求对资源的最低请求,通过二级调度算法(先预选再优选)找到最佳的工作节点;(观测节点上CPU,内存等的资源情况)
Controller Manager:负责周期性持续探测监控Controller的健康状态,确保Controller是健康的;需要冗余,需要高可用,需要至少三个;

Node节点:
Kubelet,负责和Master通信,并且接收和执行任务,集群代理,如启动pod,创建存储卷等;如果Node节点宕机,则需要控制器介入;
Docker,容器引擎,容器运行时,最常见的是Docker,还可以是Containerd,pouch等
Controller:控制器,负责周期性持续探测监控容器的健康状态,并确保容器的健康状态始终精确符合用户的期望;(不停的loop循环)

K8s的最小逻辑运行调度原子单元是Pod,可以理解为是容器的外壳,容器的抽象封装;
一个Pod中可以包含多个容器,多个容器共享同一个底层的网络名称空间,即Net,UTS和IPC,另外三个互相隔离,即:User,MNT和PID;Pod的工作机制类似模拟传统的虚拟机工作逻辑;同一个Pod内的容器共享同一个存储卷(类似虚拟机的同一个磁盘下面的同一个分区同一个目录);注意:同一个Pod内的所有容器,只能运行在同一个Node节点上。

一般,一个Pod内只放一个容器,除非容器有特别紧密的关系需要放在同一个pod中。
如果一个Pod中有多个容器,那么一定有一个是主容器,其他容器是为了辅助主容器完成更多功能;如Nginx容器,一般会配有辅助容器(Filebeat或Logstash),用于收集Nginx容器产生的日志,这类辅助容器被称为Sidecar(类似古老的带有挎斗的三轮摩托车)。

Label 和 Label Selector,用于各种资源对象(Node/Pod等)的分类、识别、选择和管理等;(Key Value,键值对;)。
类如:标签的key是APP,值为Nginx的pod;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davidwatt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值