zoukankan      html  css  js  c++  java
  • k8s架构与原理介绍

    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 最容易安装成功,最适合学习的

    2. 源码编译安装---难度最大 可以安装最新版

    3. 二进制安装---步骤繁琐 可以安装最新版 shell,ansible,saltstack

    4. kubeadm 安装最容易, 网络 可以安装最新版

    5. minikube 适合开发人员体验k8s, 网络

    8、 k8s的应用场景

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

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

    在下学的专业是IT相关专业,现在刚进入IT行业不久,可以说还是菜鸟一枚,希望在以后能在IT的大军海洋中摸爬滚打,不断前行,喜欢IT,喜欢Linux的各位小伙伴我们一起奋进呀!
  • 相关阅读:
    CSS的一些单位,如rem、px、em、vw、vh、vm
    js判断浏览器的类型
    VUE项目引入jquery
    安装搭配VUE使用的UI框架ElementUI
    VUE环境搭建,项目配置(Windows下)
    纯CSS写的各种小三角和小箭头
    改变input的placeholder字体颜色
    LR
    使用WebKit.net加载HTML编辑器
    c# 打开指定的网址
  • 原文地址:https://www.cnblogs.com/MarkGuo/p/14163381.html
Copyright © 2011-2022 走看看