Kubernetes概述

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

它的一个核心特点是:能够自主的管理容器来保证云平台中的容器按照用户期望的状态运行.打个比方:比如我希望我的某个服务一直运行,至于怎么去做,我不管,我想要达到的目的就是我的那个服务一直运行,那么Kubernetes就会自动去监控,重启,新建,总之,只要是你想要让它一直运行,那么它就会一直运行下去.

可以说,因为Kubernetes的存在,使得自动化成为了可能,可用以及可靠.

Kubernetes设计架构

Kubernetes集群包含有节点代理kubelet和Master组件(APIs,scheduler,etc),一切基于分布式的存储系统.来一张Kubernetes的架构图:

  • Kubernetes主要由以下几个核心组件组成:
    • etc保存了整个集群的状态;
    • controller manager负责维护集群的状态,比如故障检测,自动扩展,滚动更新等;
    • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
    • apiserver提供了资源操作的唯一入口,并提供认证,授权,访问控制,API注册和发现等机制;
    • kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
    • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
    • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
  • Kubernetes核心技术概念
  • API对象是K8s集群中的管理操作单元.K8s集群系统每支持一项新功能,引入一项新技术时,一定会新引入对应的API对象.每个API对象都有3大类属性:
    • 元数据(metadata):用来表示API对象,每个对象至少有3个元数据:namespace,name,uid
    • 规范(spec):描述了用户期望K8s集群中的分布式系统达到的理想状态
    • 状态(status):描述了系统实际当前达到的状态
  • Pod
    • Pod是在K8s集群中运行部署应用或服务的最小单元,它支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务.
    • Pod是K8s集群中所有业务类型的基础.不同类型的业务就需要不同类型的Pod去执行.
  • 复制控制器(Replication Controller,RC)
    • 通过监控运行中的Pod来保证集群中运行指定数目的Pod副本.
    • 一般情况下,通过RC运行Pod比直接运行Pod更明智,因为RC可以发挥它高可用的能力,保证永远有指定数目个Pod在运行.但它只适用于长期伺服型的业务类型
  • 副本集(Replica Set,RS)
    • 新一代RC,提供同样的高可用能力,但RS能支持更多种类的匹配模式.
    • 一般不单独使用,而是作为Deployment的理想状态参数使用
  • 部署(Deployment)
    • 部署表示用户对K8s集群的一次更新操作.
  • 服务(Service)
    • RC,RS和Deployment只是保证了支撑服务的微服务Pod数量,但是没有解决如何访问这些服务的问题.因为一个Pod只是一个运行服务的实例,随时可能在一个节点上停止,在另一个节点启动一个新的Pod,故而不能用确定的ip和端口号提供服务.
    • 为解决这个问题,就有了Service的概念.在K8s集群中,客户端需要访问的服务就是Service对象.每个Service会对应一个集群内部有效的虚拟ip,这样客户端就不需要考虑Pod运行在哪儿个节点,这个工作只需要由Service去完成就OK
  • 任务(Job)
    • Job是K8s用来控制批处理型任务的API对象.
    • Job管理的Pod根据用户的设置把任务成功完成就退出,成功完成的标志根据不同的spec.completions策略而不同
  • 如上图,Job Controller负责创建Pod,并持续监控Pod的状态,直至其成功结束。如果失败,则根据restartPolicy(只支持OnFailure和Never,不支持Always)决定是否创建新的Pod再次重试任务。

    Kubernetes核心设计理念

    从以上介绍,我们可以知道,Kubernetes的两个核心设计理念:一个是容错性,一个是易扩展性.

    容错性实际是保证K8s系统稳定性和安全性的基础,易扩展性是保证K8s对变更友好,可以快速迭代增加新功能的基础.

    感谢您的阅读~

    [Kubernetes]关于K8s,你应该知道的一些东西的更多相关文章

    1. Minikube之Win10单机部署Kubernetes(k8s)自动化容器操作的开源平台

      Minikube之Win10单机部署 Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作.如果你曾经用过Docker部署容器,那么可以 ...

    2. dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启

      kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/pkg/dns/dns.go:150: Failed to list *v1.Service: Get https:// ...

    3. kubernetes(K8S)创建自签TLS证书

      TLS证书用于进行通信使用,组件需要证书关系如下: 组件 需要使用的证书 etcd ca.pem server.pem server-key.pem flannel ca.pem server.pem ...

    4. Kubernetes(k8s)目录

      Kubernetes(k8s)目录 Kubernetes集群安装(亲测有效)

    5. kubernetes(K8S)快速安装与配置集群搭建图文教程

      kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

    6. (转)dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启

      转:https://blog.csdn.net/shida_csdn/article/details/80028905 kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/ ...

    7. Kubernetes --(k8s)入门

      k8s 简介: 什么是k8s? Kubernetes (k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术基础上,为容器化的应用提供部署运行.资源调度.服务发现和动 ...

    8. 使用国内的镜像源搭建 kubernetes(k8s)集群

      1. 概述 老话说的好:努力学习,提高自己,让自己知道的比别人多,了解的别人多. 言归正传,之前我们聊了 Docker,随着业务的不断扩大,Docker 容器不断增多,物理机也不断增多,此时我们会发现 ...

    9. Kubernetes(K8s)极速入门

      1. 概述 老话说的好:努力学习,努力提高,做一个有真才实学的人. 言归正传,之前我们聊了 如何使用国内的镜像源搭建 kubernetes(k8s)集群 ,今天我们来聊聊如何在 kubernetes( ...

    随机推荐

    1. python对象-多态

      调用不同的子类将会产生不同的行为,而无须明确知道这个子类实际上是什么. 比如,在一个可以播放音频文件的程序中,媒体播放器可能需要加载一个AudioFile对象然后play它,我们把一个play()的方 ...

    2. golang rpc介绍

      rpc包提供了通过网络或其他I/O连接对一个对象的导出方法的访问.服务端注册一个对象,使它作为一个服务被暴露,服务的名字是该对象的类型名.注册之后,对象的导出方法就可以被远程访问.服务端可以注册多个不 ...

    3. Spring_xml方式开发

      1. spring核心配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...

    4. ATPCS规则

      title: ATPCS规则 tags: ARM date: 2018-10-14 17:03:23 --- ATPCS规则 ARM指令集E004armproc.chm ATPCS介绍与使用.pdf ...

    5. 利用salt搭建hadoop集群

      自动化工具有很多..今天总结一下salt安装hadoop 步骤,学习过程. 1,机器列表 hosts文件    只需要将namenode的两台机器上配置 ,不解释了. 2.salt-master在10 ...

    6. VMware 无法打开内核设备 \\.\Global\vmx86

      无法打开内核设备 \\.\Global\vmx86: 系统找不到指定的文件.你想要在安装 VMware Workstation 前重启吗? vmware 安装完成后,打开现有虚拟系统时,报错. 无法打 ...

    7. ACM-ICPC 2018 焦作赛区网络预赛 I Save the Room(水题)

      https://nanti.jisuanke.com/t/31718 题意 问能否用1*1*2的长方体填满a*b*c的长方体. 分析 签到.如果a.b.c都是奇数,一定不能. #include< ...

    8. 如何比较一个类型【模板使用】【sizeof用法】

      #include <iostream> using namespace std; void testEmptyClass(); struct Empty { }; struct Dummy ...

    9. Javaweb学习笔记——(十五)—————— sql复习

      sql复习 数据库管理系统(DBMS)的概述 1.什么是DBMS:数据的仓库 *方便查询 *可存储的数据量大 *保证数据的完整.一致 *安全可靠 2.DBMS的发展:今天主流数据库为关系型数据库管理系 ...

    10. 【Python】Xml To Excel

      [Python3] 之前做的入门练习里有一题将excel文件转化为xml文件,这回补上逆向转换→xml to excel 用的还是beautifulsoup. 主要还是:①读取待处理文件文本内容 ②处 ...