Kubernetes一词来源于希腊语,翻译来的意思就是舵手或者船长的意思,而它的logo也是很符合这个词的



至于k8s则是通过将ubernetes这8个字母替换为8而导出的缩写

Kubernetes是什么?

k8s是Google开源的容器集群管理系统(思想来源于谷歌内部系统Borg)。在Docker技术的基础上,为容器化的应用提供以下一系列功能来提高大规模容器集群管理的便捷性:

  • 服务发现
  • 负载均衡
  • 自动发布与回滚
  • 资源调度
  • 弹性伸缩
  • 自动恢复
  • 健康检查
  • 。。。

现在的k8s托管于CNCF基金会,也是CNCF的第一个项目。下面是CNCF的全景图

Kubernetes的架构组成

k8s由 Master 和 Node 两种节点组成,而这两种角色分别对应着控制节点和计算节点

其中最上方是UI和CLI代表了两种操控k8s的方式,即dashboar和命令行方式

Master节点是集群中的控制节点,它是由以下几个独立组件组合而成的:

  • 负责 API 服务的 kube-apiserver

    • 提供集群管理的 REST API 接口,包括认证授权、数据校验以及集群状态变更
    • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据
  • 负责调度的 kube-scheduler
    • 负责分配调度 Pod 到集群内的节点上,它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点
    • 调度器需要充分考虑诸多的因素:
      • 公平调度
      • 资源高效利用
      • QoS
      • affinity 和 anti-affinity
      • 数据本地化
      • 内部负载干扰
      • deadlines
  • 负责容器编排的 kube-controller-manager
    • 由 kube-controller-manager 和 cloud-controller-manager 组成,是 Kubernetes 的大脑,它通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态
  • 整个集群的持久化数据,则由 kube-apiserver 处理后保存在 Etcd中
  • 分布式存储Etcd
    • 分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障

计算节点上是运行所有业务容器的节点

  • 在 Kubernetes 项目中,每个节点上都运行一个 kubelet 服务进程,默认监听 10250 端口,接收并执行 master 发来的指令,管理 Pod 及 Pod 中的容器。每个 kubelet 进程会在 API Server 上注册节点自身信息,定期向 master 节点汇报节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源
  • 每台机器上都运行一个 kube-proxy 服务,它监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载均衡

除了主节点和计算节点还有一些组件是全局通用的

  • 负责整个集群dns服务的CoreDNS
  • 提供跨 Region 跨服务商 K8s 集群服务的集群联邦(Federation)
  • Kubernetes 的命令行工具(CLI)kubectl

Kubernetes的组件通信

以用户需要操作一个pod为例:

  1. 当用户在k8s的ui界面或者是通过命令行与APIServer交互
  2. APIServer首先会把用户的命令存储到etcd中
  3. 调度器kube-scheduler会通过watch机制从APIServer获取到需要调度一个pod的信息
  4. kube-scheduler得到信息后根据自身的内存状态进行一次决策,然后再通知到APIServer
  5. APIServer得到kube-scheduler的通知同样先把命令存储到etcd中
  6. 相应节点的kubelet通过watch机制得知需要操作的pod去调用相应的存储插件、网络插件来操作响应的pod

Kubernetes是什么东西?的更多相关文章

  1. Kubernetes 之上的架构应用

    规划并运转一个兼顾可扩展性.可移植性和健壮性的运用是一件很有应战的事情,尤其是当体系杂乱度在不断增长时.运用或体系 本身的架构极大的影响着其运转办法.对环境的依靠性,以及与相关组件的耦合强弱.当运用在 ...

  2. 微服务下的容器部署和管理平台Rancher

    Rancher是什么 Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台.Rancher提供了在生产环境中使用的管理Docke ...

  3. [Jenkins]CentOS7下Jenkins搭建

    最近在倒腾Kubernetes的一些东西,这次需要用到Jenkins来实现自动化构建.来讲一讲搭建的整个过程. Jenkins是什么 Jenkins提供了软件开发的持续集成服务.它运行在Servlet ...

  4. Kubernetes 笔记 04 架构是个好东西

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  5. Kubernetes 学习笔记-- kafka往couchdb里倒东西

    首先吐槽下国内这些论坛的技术精神,不是我崇洋媚外,有些复读机烦不烦啊,别人的东西吃进去吐出来好玩么? 还有一些不懂装懂,这种最可恶,明明自己都不明白自己在写什么,还是往精华区发,简直离谱,知道自己多挣 ...

  6. [Kubernetes]关于K8s,你应该知道的一些东西

    Kubernetes概述 Kubernetes(也常称K8s,用8代替8个字符"ubernete"而成的缩写),是一个开源的,用于管理云平台中多个主机上的容器化应用. 它的一个核心 ...

  7. 基于Python+Django的Kubernetes集群管理平台

    ➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...

  8. Apache的Mesos和Google的Kubernetes 有什么区别?

    Apache的Mesos和Google的Kubernetes 有什么区别?本文来自StackOverFlow上的一个问题,主要讨论Mesos和Kubernetes的区别,相信我们很多人也有同意的疑问. ...

  9. kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps

    本教程受Kubernetes官方最新更新的文档所触发,之所以没有做单纯的翻译是因为如下几个原因: Kubernetes官方此教程基于minikube,个人对minikube可能有偏见,觉得像玩具. M ...

随机推荐

  1. 程序员代码面试指南 IT名企算法与数据结构题目最优解

    原文链接 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现.针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮 ...

  2. 唐敬博-201871010118 《面向对象程序设计(java)》第六、七周学习总结

    在博客园撰写博客(随笔),总结6-7周学习内容(包括实验内容),作业格式要求如下: 博文名称:学号-姓名<面向对象程序设计(java)>第四周学习总结(1分) 博文正文开头格式:(2分) ...

  3. 201871010111-刘佳华《面向对象程序设计(java)》第二周学习总结

    201871010111-刘佳华<面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 <https://www.cnblogs.com/nwnu-daiz ...

  4. csp 201709-2 优先队列模拟

    数据规模: 用优先队列对各个事件的发生先后记录即可: #include<iostream> #include<queue> using namespace std; ]; st ...

  5. Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

    上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌. 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后, ...

  6. ionic-环境搭建-入门

    环境搭建 1.官方推荐: npm install -g cordova ionic 使用npm国内安装小坑,下载慢,还是失败 2.先安装cnpm,使用淘宝镜像:: npm install -g cnp ...

  7. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级

    实现功能概要 前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级. 这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级 ...

  8. Linux基于FPM制作RPM包(以Nginx为例)

    1.搭建Epel  Yum源  安装在线yum源 [root@localhost ~]# rpm -ivh epel-release-latest-.noarch.rpm //安装扩展源 [root@ ...

  9. NLP之词向量

    1.对词用独热编码进行表示的缺点 向量的维度会随着句子中词的类型的增大而增大,最后可能会造成维度灾难2.任意两个词之间都是孤立的,仅仅将词符号化,不包含任何语义信息,根本无法表示出在语义层面上词与词之 ...

  10. [LeetCode] 72. Edit Distance 编辑距离

    Given two words word1 and word2, find the minimum number of operations required to convert word1 to  ...