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 APScheduler

      简介 APScheduler基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务 ...

    2. go tcp

      TCP编程 1.客户端和服务器 2.服务端的处理流程 监听端口 接收客户端的链接 创建goroutine,处理该链接 3.客户端的处理流程 建立与服务端的链接 进行数据收发 关闭链接 服务端代码 pa ...

    3. 基于jieba,TfidfVectorizer,LogisticRegression进行搜狐新闻文本分类

      一.简介 此文是对利用jieba,word2vec,LR进行搜狐新闻文本分类的准确性的提升,数据集和分词过程一样,这里就不在叙述,读者可参考前面的处理过程 经过jieba分词,产生24000条分词结果 ...

    4. Elastic Stack之kibana使用

      Elastic Stack之kibana使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客数据流走向:FileBeat ===>Redis  ===>log ...

    5. 《玩转Django2.0》读书笔记-编写URL规则

      <玩转Django2.0>读书笔记-编写URL规则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. URL(Uniform Resource Locator,统一资源定位 ...

    6. Spring+Mybatis+SpringMVC+Atomikos多数据源共存+不同数据库事物一致性处理

      网上找了一大堆的例子,没一个跑通的,都是copy转发,哎,整理得好辛苦..做个笔记,方便正遇到此问题的猿们能够得到帮助....废话不多说,贴代码..... 项目结构说明: 1.dao层的admin.w ...

    7. [Android] Android RxBus 用法学习总结

      事件总线的好处在于方便组件之间的交互,RxBus不是一个库,而是使用RxJava实现事件总线的一种思想. rxbus和eventbus相比较: RxJava 主要做异步.网络的数据处理,强大之处就是对 ...

    8. 开源框架.netCore DncZeus学习(一)npm安装

      今天看到一个不错的开源项目DncZeus, https://github.com/lampo1024/DncZeus 整个界面挺漂亮,而且权限做到了按钮级别,功能也较容易扩展,刚好学习VUE纯看文章很 ...

    9. luogu 2216 理想的正方形 单调队列(其实没有DP)

      #include<bits/stdc++.h> using namespace std; ; ; int a,b,n; int g[A][A],q[A][N],Q[A][N]; int h ...

    10. luogu 1550 [Usaco2008 Oct]打井 最小生成树+小技巧

      此题似乎显然最小生成树,小技巧需要注意: 在每个点出井水,需要花费,实际上可以把井水视作所有井下统一的一点,需要走路径到达此点,新图上再最小生成树 将点化作边处理 还有题目写的数据范围一般不可信,开大 ...