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的管理问题

k8s架构与原理介绍的更多相关文章

  1. HBase的基本架构及其原理介绍

    1.概述:最近,有一些工程师问我有关HBase的基本架构的问题,其实这个问题仅仅说架构是非常简单,但是需要理解.在这里,我觉得可以用HDFS的架构作为借鉴.(其实像Hadoop生态系统中的大部分组建的 ...

  2. K8s架构|全面整理K8s的架构介绍

    K8S架构与核心技术介绍 1. 架构图 1.1 整体结构图 1.2 组件间的协议 CNI: CNI是Container Network Interface的是一个标准的,通用的接口 ;用于连接容器管理 ...

  3. K8s Service原理介绍

    Service的工作方式有三种: 第一种: 是Userspace方式 如下图描述, Client Pod要访问Server Pod时,它先将请求发给本机内核空间中的service规则,由它再将请求, ...

  4. 云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍

    云原生 • Kubernetes 认识 k8s.k8s 架构.核心概念点介绍 一.Kubernetes 简介Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌.谷歌早在十几年之 ...

  5. [转帖]我花了10个小时,写出了这篇K8S架构解析

    我花了10个小时,写出了这篇K8S架构解析 https://www.toutiao.com/i6759071724785893891/   每个微服务通过 Docker 进行发布,随着业务的发展,系统 ...

  6. 03 Yarn 原理介绍

    Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理   Hadoop的1.X架构的介绍   在1.x中的NameNodes只可能有一个,虽然可以通过Se ...

  7. HDFS原理介绍

    HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Googl ...

  8. [转]MySQL主从复制原理介绍

    MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ...

  9. 分布式文件系统FastDFS原理介绍

    在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以 ...

  10. 高性能消息队列 CKafka 核心原理介绍(上)

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:闫燕飞 1.背景 Ckafka是基础架构部开发的高性能.高可用消息中间件,其主要用于消息传输.网站活动追踪.运营监控.日志聚合.流式 ...

随机推荐

  1. MYSQL索引-上

    前言 今天同事做数据清理的时候发现我这边有一张表没有主键,这个表有两个字段,ID和Name,ID作者唯一索引,在我印象里,一个数据表如果没有主键索引,它会内部创建主键索引,创建的标准就是唯一性,我觉得 ...

  2. Spring事务(六)-只读事务

    @Transactional(readOnly=true)就可以把事务方法设置成只读事务.设置了只读事务,事务从开始到结束,将看不见其他事务所提交的数据.这在某种程度上解决了事务并发的问题.一个方法内 ...

  3. java中webSocket发送图片文件数据非常慢

    一.问题由来 目前在开发的这个小程序中有一个功能需要和Unity客户端进行互动操作,互动的大致流程为在微信小程序中点击一个操作,发送一个HTTP请求, Java后台收到这个请求后,会给Unity客户端 ...

  4. vscode 切换页签快捷键 自定义 Ctrl+H Ctrl+L 左右切换

    今天需要整理写资料,需要在多个页签之间切换,发现自定义了快捷. 好久不用这个快捷键,都快忘了. vscode 切换页签快捷键 自定义 Ctrl+H Ctrl+L 左右切换

  5. 记一次docker安装Jenkins

    docker安装Jenkins 0. 下载docker镜像 docker search jenkins docker pull jenkins/jenkins:lts 1. 安装步骤 创建映射文件夹 ...

  6. 提升地理空间分析效率,火山引擎ByteHouse上线GIS能力

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在数字化时代,地理空间分析(Geospatial Analytics)成为辅助企业市场策略洞察的重要手段.无论是广 ...

  7. k8s安全之Network Policy

    K8s Network Policy 是一种资源,它用于在 Pod 之间以及从其他网络实体到 Pod 的通信中进行网络级别的访问控制.它允许您定义一组规则,这些规则可以指定允许或拒绝网络流量. 具体来 ...

  8. 实时渲染大赛结果将于3月31日晚8点B站直播公布,敬请期待!

    根据评选标准,经过评委组层层选拔,首届实时渲染3D动画创作大赛,最终获奖结果出炉啦! 本次赛事报名人数达212人,入围作品共40份,其中Omniverse组11份,专业组15份,学生组14份. 我们将 ...

  9. JDBC反序列化

    JDBC反序列化攻击 介绍 JDBC(Java DataBase Connectivity)是一种用于执行Sql语句的Java Api,即Java数据库连接,是Java语言中用来规范客户端程序如何来访 ...

  10. 记录--分享并解析一个倒计时组件(Vue)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.前言 入职的第一个需求是跟着一位前端大佬一起完成的一个活动项目. 由于是一起开发,当然不会放过阅读大佬的代码的机会. 因为我的页面中需 ...