码迷,mamicode.com
首页 > 其他好文 > 详细

k8s架构与原理介绍

时间:2020-12-25 11:50:50      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:开发环境   分析   linux   重构   上线   优势   stack   elk日志分析   容器化   

K8s概述

? 我清晰地记得曾经读到过的一篇博文,上面是这样写的:
? “云端教父AWS云端架构策略副总裁Adrian Cockcroft曾指出,两者虽然都是运用容器技术,但最大的差异是,Docker是要解决应用程序开发(Developing)问题,而Kubernetes是要解决更上层的应用程序运维问题(Operation)。开发问题是早期的痛点,但随着企业越来越依赖容器技术,内部应用越来越多是云原生应用时,运维会是企业IT的新痛点。”大佬的一番话,明确地指出K8S的生存土壤!

学习一项技术,除了需要明确这项技术的应用场景和发展方向之外,最主要的是理解她的工作原理。

1、什么是K8s

  • k8s是一个docker集群的管理工具

  • k8s是容器的编排工具

    Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg),目前已经成为容器编排一个标准。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩、高可用等一系列完整功能,提高了大规模容器集群管理的便捷性

     Kubernetes优势:

    • 容器编排
    • 轻量级
    • 开源
    • 弹性伸缩
    • 负载均衡

    2、K8s 设计架构

Kubernetes借鉴了Borg的设计理念,比如Pod、Service、Labels和单Pod单IP等。Kubernetes的整体架构跟Borg非常像,如下图所示:

技术图片

3、 k8s重要节点描述

master节点

Master 是 Cluster 的大脑,它的主要职责是调度,即决定将应用放在哪里运行。Master 运行 Linux 操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个 Master。

node节点

Node 的职责是运行容器应用。Node 由 Master 管理,Node 负责监控并汇报容器的状态,并根据 Master 的要求管理容器的生命周期。Node 运行在 Linux 操作系统,可以是物理机或者是虚拟机。

4、 过程原理:

  1. 用户通过kubectl提交需要运行的docker container(pod);
  2. master节点的api server把请求存储在etcd数据库中;
  3. scheduler调度器进行扫描 ,将合适的node节点机器分配出去;
  4. node节点的kublet找到自己要跑的container,在本机上运行

5、 k8s的核心功能

自愈: 重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播。

弹性伸缩: 通过监控容器的cpu的负载值,如果这个平均高于80%,增加容器的数量,如果这个平均低于10%,减少容器的数量

服务的自动发现和负载均衡: 不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个DNS 名称,并可以在它们之间进行负载均衡。

滚动升级和一键回滚: Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。

私密配置文件管理: web容器里面,数据库的账户密码(测试库密码)

6、 k8s的历史

  • 2014年 docker容器编排工具,立项

  • 2015年7月 发布kubernetes 1.0, 加入cncf基金会 孵化

  • 2016年,kubernetes干掉两个对手,docker swarm,mesos marathon 1.2版

  • 2017年 1.5 -1.9

  • 2018年 k8s 从cncf基金会 毕业项目1.10 1.11 1.12

  • 2019年: 1.13, 1.14 ,1.15,1.16 1.17

  • cncf :cloud native compute foundation 孵化器

    kubernetes (k8s): 希腊语 舵手,领航者 容器编排领域,

    谷歌15年容器使用经验,borg容器管理平台,使用golang重构borg,kubernetes

    7、 k8s的安装方式

    1. yum安装 1.5 最容易安装成功,最适合学习的
  1. 源码编译安装---难度最大 可以安装最新版
  2. 二进制安装---步骤繁琐 可以安装最新版 shell,ansible,saltstack
  3. kubeadm 安装最容易, 网络 可以安装最新版
  4. minikube 适合开发人员体验k8s, 网络

8、 k8s的应用场景

k8s最适合跑微服务项目!
微服务:一个功能一个站点,一个功能就是一个域名
微服务相当于拆业务,将一个网站拆成很多个小网站
微服务的好处: 支持更大的用户访问量,业务的稳定性更强,代码的更新和发布更加快捷

微服务对于运维的影响:工作量变大,因为架构多需要ansible自动化代码上线.ELK日志分析处理,微服务部署复杂度,维护工作量变大很多 开发环境一套微服务,测试环境一套微服务,预生产环境一套微服务,生产环境一套微服务,工作量倍增,所以需要docker快速部署微服务,docker多的时候用k8s解决docker的管理问题

k8s架构与原理介绍

标签:开发环境   分析   linux   重构   上线   优势   stack   elk日志分析   容器化   

原文地址:https://www.cnblogs.com/MarkGuo/p/14163381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!