内容次要摘自官网文档资料 官网地址

概述Kubernetes根本信息

前提条件

  • 把握容器或Docker常识

文档编写基于kubernetes v1.17版本

概述

要应用Kubernetes,你须要用KubernetesAPI对象来形容集群的预期状态(desiredstate):包含你须要运行的利用或者负载,它们应用的镜像、正本数,以及所需网络和磁盘资源等等。

能够应用命令工具kubectl来调用KubernetesAPI创建对象,通过所创立的这些对象来配置预期状态。也能够间接调用KubernetesAPI和集群进行交互,设置或者批改预期状态。

一旦设置了你所需的指标状态,Kubernetes Control Plane(集群管制面)会通过Pod生命周期事件生成器(PLEG),促成集群的以后状态合乎其预期状态。为此,Kubernetes会主动执行各类工作,比方运行或者重启容器、调整给定利用的正本数等等。

KubernetesKubernetes Control Plane由一组运行在集群上的过程组成:

  • Kubernetes主控组件(Master)蕴含三个过程,都运行在集群中的某个节上,主控组件通常这个节点被称为master节点。这些过程包含:kube-apiserver、kube-controller-manager和kube-scheduler
  • 集群中的每个非master节点都运行两个过程

    • kubelet,和 master 节点进行通信。
    • kube-proxy,一种网络代理,将 Kubernetes 的网络服务代理到每个节点上。

Kubernetes对象

Kubernetes蕴含若干用来示意零碎状态的形象层,包含:已部署的容器化利用和负载、与它们相干的网络和磁盘资源以及无关集群正在运行的其余操作的信息。这些形象应用KubernetesAPI对象来示意。

根本的Kubernetes对象包含:

  • Pod
  • Service
  • Volume
  • Namespace

Kubernetes也蕴含大量的被称作Controller的高级形象。控制器基于根本对象构建并提供额定的性能和方便使用的个性。具体包含:

  • Deployment
  • DaemonSet
  • StatefulSet
  • ReplicaSet
  • Job

Kubernetes Control Plane

对于Kubernetes Control Plane的各个局部,(如Kubernetes主控组件和kubelet过程),治理着Kubernetes如何与你的集群进行通信。Kubernetes Control Plane保护着零碎中所有的Kubernetes对象的状态记录,并且通过间断的管制循环来治理这些对象的状态。在任意的给定工夫点,Kubernetes Control Plane的管制环都能响应集群中的变动,并且让零碎中所有对象的理论状态与你提供的预期状态相匹配。

比方,当你通过KubernetesAPI创立一个Deployment对象,你就为零碎减少了一个新的指标状态。Kubernetes Control Plane记录着对象的创立,并启动必要的利用而后将它们调度至集群某个节点上来执行你的指令,以此来放弃集群的理论状态和指标状态的匹配。

Kubernetes Master节点

Kubernetes master节点负责保护集群的指标状态。当你要与Kubernetes通信时,应用如kubectl的命令行工具,就能够间接与Kubernetes master节点进行通信。

“master”是指治理集群状态的一组过程的汇合。通常这些过程都跑在集群中一个独自的节点上,并且这个节点被称为master节点。master节点也能够扩大正本数,来获取更好的可用性及冗余。

Kubernetes Node节点

集群中的node节点(虚拟机、物理机等等)都是用来运行你的利用和云工作流的机器。Kubernetes master节点管制所有node节点;你很少须要和node节点进行间接通信。

Kubernetes是什么

Kubernetes是一个可移植的、可扩大的开源平台,用于治理容器化的工作负载和服务,可促成申明式配置和自动化。Kubernetes领有一个宏大且快速增长的生态系统。Kubernetes的服务、反对和工具宽泛可用。

传统部署时代:晚期,组织在物理服务器上运行应用程序。无奈为物理服务器中的利用程序定义资源边界,这会导致资源分配问题。例如,如果在物理服务器上运行多个应用程序,则可能会呈现一个应用程序占用大部分资源的状况,后果可能导致其余应用程序的性能降落。一种解决方案是在不同的物理服务器上运行每个应用程序,然而因为资源利用有余而无奈扩大,并且组织保护许多物理服务器的老本很高。

虚拟化部署时代:作为解决方案,引入了虚拟化性能,它容许您在单个物理服务器的CPU上运行多个虚拟机(VM)。虚拟化性能容许应用程序在VM之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一应用程序自在地拜访。

因为虚拟化能够轻松地增加或更新应用程序、升高硬件老本等等,所以虚拟化能够更好地利用物理服务器中的资源,并能够实现更好的可伸缩性。

每个VM是一台残缺的计算机,在虚拟化硬件之上运行所有组件,包含其本人的操作系统。

容器部署时代:容器相似于VM,然而它们具备轻量级的隔离属性,能够在应用程序之间共享操作系统(OS)。因而,容器被认为是轻量级的。容器与VM相似,具备本人的文件系统、CPU、内存、过程空间等。因为它们与基础架构拆散,因而能够跨云和OS散发进行移植。

容器因具备许多劣势而变得流行起来。上面列出了容器的一些益处:

  • 麻利应用程序的创立和部署:与应用VM镜像相比,进步了容器镜像创立的简便性和效率。
  • 继续开发、集成和部署:通过疾速简略的回滚(因为镜像不可变性),提供牢靠且频繁的容器镜像构建和部署。
  • 关注开发与运维的拆散:在构建/公布时而不是在部署时创立应用程序容器镜像,从而将应用程序与基础架构拆散。
  • 可察看性不仅能够显示操作系统级别的信息和指标,还能够显示应用程序的运行状况和其余指标信号。
  • 跨开发、测试和生产的环境一致性:在便携式计算机上与在云中雷同地运行。
  • 云和操作系统散发的可移植性:可在Ubuntu、RHEL、CoreOS、本地、GoogleKubernetesEngine和其余任何中央运行。
  • 以应用程序为核心的治理:进步形象级别,从在虚构硬件上运行OS到应用逻辑资源在OS上运行应用程序。
  • 涣散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立局部,并且能够动静部署和治理-而不是在一台大型单机上整体运行。
  • 资源隔离:可预测的应用程序性能。
  • 资源利用:高效率和高密度。

为什么须要Kubernetes,它能做什么?

容器是打包和运行应用程序的好形式。在生产环境中,您须要治理运行应用程序的容器,并确保不会停机。例如,如果一个容器产生故障,则须要启动另一个容器。如果零碎解决此行为,会不会更容易?

这就是Kubernetes的救济办法!Kubernetes为您提供了一个可弹性运行分布式系统的框架。Kubernetes会满足您的扩大要求、故障转移、部署模式等。例如,Kubernetes能够轻松管理系统的Canary部署。

Kubernetes为您提供:

  • 服务发现和负载平衡

    Kubernetes能够应用DNS名称或本人的IP地址公开容器,如果到容器的流量很大,Kubernetes能够负载平衡并调配网络流量,从而使部署稳固。

  • 存储编排

    Kubernetes容许您主动挂载您抉择的存储系统,例如本地存储、公共云提供商等。

  • 主动部署和回滚

    您能够应用Kubernetes形容已部署容器的所需状态,它能够以受控的速率将理论状态更改为所需状态。例如,您能够自动化Kubernetes来为您的部署创立新容器,删除现有容器并将它们的所有资源用于新容器。

  • 主动二进制打包

    Kubernetes容许您指定每个容器所需CPU和内存(RAM)。当容器指定了资源申请时,Kubernetes能够做出更好的决策来治理容器的资源。

  • 自我修复

    Kubernetes重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况查看的容器,并且在筹备好服务之前不将其通告给客户端。

  • 密钥与配置管理

    Kubernetes容许您存储和治理敏感信息,例如明码、OAuth令牌和ssh密钥。您能够在不重建容器镜像的状况下部署和更新密钥和应用程序配置,也无需在堆栈配置中裸露密钥。

Kubernetes 不是什么

Kubernetes不是传统的、无所不包的PaaS(平台即服务)零碎。因为Kubernetes在容器级别而不是在硬件级别运行,因而它提供了PaaS产品共有的一些广泛实用的性能,例如部署、扩大、负载平衡、日志记录和监督。然而,Kubernetes不是繁多的,默认解决方案是可选和可插拔的。Kubernetes提供了构建开发人员平台的根底,然而在重要的中央保留了用户的抉择和灵活性。

Kubernetes:

  • Kubernetes不限度反对的应用程序类型。Kubernetes旨在反对极其多种多样的工作负载,包含无状态、有状态和数据处理工作负载。如果应用程序能够在容器中运行,那么它应该能够在Kubernetes上很好地运行。
  • Kubernetes不部署源代码,也不构建您的应用程序。继续集成(CI)、交付和部署(CI/CD)工作流取决于组织的文化和偏好以及技术要求。
  • Kubernetes不提供应用程序级别的服务作为内置服务,例如中间件(例如,消息中间件)、数据处理框架(例如,Spark)、数据库(例如,mysql)、缓存、集群存储系统(例如,Ceph)。这样的组件能够在- Kubernetes上运行,并且/或者能够由运行在Kubernetes上的应用程序通过可移植机制(例如,凋谢服务代理)来拜访。
  • Kubernetes不指定日志记录、监督或警报解决方案。它提供了一些集成作为概念证实,并提供了收集和导出指标的机制。
  • Kubernetes不提供或不要求配置语言/零碎(例如jsonnet),它提供了申明性API,该申明性API能够由任意模式的申明性标准所形成。
  • Kubernetes不提供也不采纳任何全面的机器配置、保护、治理或自我修复零碎。
  • 此外,Kubernetes不仅仅是一个编排零碎,实际上它打消了编排的须要。编排的技术定义是执行已定义的工作流程:首先执行A,而后执行B,再执行C。相比之下,Kubernetes蕴含一组独立的、可组合的管制过程,这些过程间断地将以后状态驱动到所提供的所需状态。从A到C的形式无关紧要,也不须要集中控制,这使得零碎更易于应用且性能更弱小、强壮、弹性和可扩展性。

总结

  • 为什么须要kubernetes

    kubernetes是弹性的,可能动静扩大、故障转移等。容器应用kubernetes能够做到主动发现、负载平衡、存储编排、主动部署和回滚、主动打包、自我修复、以及密钥与配置管理。

  • kubernetes主控组件(master)蕴含哪些次要过程

    kube-apiserver、kube-controller-manager、kube-scheduler

  • 非master节点(node)蕴含哪些次要过程

    kubelet、kube-proxy

  • 简述master与node节点各自的作用是什么

    master节点负责保护集群的指标状态;node节点都是用来运行利用和云工作流的机器