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. MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解

      MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...

    2. JAVA核心技术I---JAVA基础知识(查漏补缺private,static)

      一:private对于类和对象(同C++) private是只有这个类内部可以访问(类的成员函数和定义初始化) private是类之间的限制,而不是对对象的限制<重点> 同类对象是可以直接 ...

    3. openstack服务启动之nova-compute

      在openstack中,消息的传递一共有两种方式,分别是:服务之间的传递调用Restful api,服务中模块之间的传递使用消息队列.每一个模块在启动是都会启动消息队列,等待队列中的有消息到来.所以模 ...

    4. vue-if与vue-show的区别

      两者都是动态显示DOM元素   不同点: 1.使用方式 v-if是根据后面数据的真假,来判断DOM的添加删除等操作 v-show只是在修改元素的css样式(display属性值)   2.实现过程 v ...

    5. IIS回收时间设置

      IIS默认回收时1740分钟,这样的话,有可能在访问高峰期时时回收,可以设置为定时回收

    6. [译]Use Dependency Injection In WebForms Application

      怎么在已用的WebForm应用中使用DI 假设有一个电影网站,有个页面会列出最近热门的电影.这个项目中使用了仓储模式来获取数据. public partial class Default : Syst ...

    7. RIPS PHP源码静态分析(转)

      0x00背景 对于PHP代码审计的需求,我们当然需要一款好的php代码审计分析工具--RIPS,它使用了静态分析技术,能够自动化地挖掘PHP源代码潜在的安全漏洞如XSS ,sql注入,敏感信息泄漏,文 ...

    8. asp.net mvc && asp.net 页面跳转

      1.使用传统的Response.Redirect例如string url = "/account/create";Response.Redirect(url); 1.Server. ...

    9. 查看 Centos 7 的MAC 地址

      查看 Centos 7 的 MAC 地址  ens*** 网卡名称# cat /sys/class/net/eno16777736/address  查看内核版本 uname -a 查看系统版本 ca ...

    10. 虚拟环境jupyter notebook使用【virtualenv环境】

      一.进入虚拟环境 source tf1/bin/activate 二.安装 IPykernel python2版本: pip install ipykernel python3版本: pip3 ins ...