Kubernetes介绍及使用

一. Kubernetes简介

  Kubernetes(简称K8s)是以Google Borg为原型重新设计和实现的基于容器技术的容器管理和编排调度工具,它支持自己部署,大规模可伸缩,可应用容器化管理,和docker公司的swarm和Apache的Mesos项目一样,2014年由Google开源。

  2015年,谷歌将Kubernetes捐赠给Linux基金会下属的云原生计算基金会(CNCF)。

  2018年初CNCF宣布Kubernetes正式毕业,标志着Kubernetes项目的成熟并可以用于生产环境使用。

  Kubernetes最终使命是成为云计算新一代应用上的云的首选平台。

  官网:https://kubernetes.io/

   

             官网上面也有Kubernetes基本介绍

  Borg和Kubernetes

    在Kubernetes之前谷歌公司就有了10多年使用大规模容器管理使用经验,这些经验就是来源于谷歌内部Borg系统的使用。Borg是一个比较顶层的集成管理系统,它功能就是负责谷歌内部很多服务的调度和管理,在它上面跑了谷歌大部分的应用程序,框架包括Gmail、Google Docs、Web Search等这样直接面对客户的一些应用程序,这些应用程序都需要通过它来管理底层的这些物理机。

    Borg的特点

       1. 隐藏的资源管理和故障处理的细节,让用户不用关心资源管理的问题,不用操心底层的系统是怎么操作的(运行在Borg的程序,就算挂了也会被启动起来,可以专注自己的业务

       2. Borg一个典型的分布式平台的架构,可以提供高可靠性和高可用性的操作,并支持应用程序做到高可靠高可用。

       3. Borg可以在数以万计的机器上高资源利用率运行,就是可以将资源最大化的利用。

    

     图片来源:https://imgedu.lagou.com/ca6e2b48f7a64829aea24d788349e01b.jpg

     

     Kubernetes设计思想就是源自于Google Borg系统,例如Kubernetes继承了Borg项目中集群管理的理念。Kubernetes如今的成功是离不开Google Borg这么多年的使用经验积累。

     为什么使用Kubernetes

      1. Google业内最成熟容器编排技术管理经验的输出。包括先进的Workload管理经验模型:Pod和Controllers。

      2. 2017年战胜Docker Swam和Apache Mesos,成为云原生应用首选容器编排管理平台。

      3. 传统云平台提供商Google k8s engine,Red Hat的OpenShift,Microsoft的Azure container service,IBM的cloud container service全面支持。

二. Kubernetes能做什么

  1.容器自动化部署和复制,随时扩展或者收缩容器规模(资源配额和分配管理),并提供负载均衡。比如当某个容器内存使用不够,会自动扩展出一个副本出来。当多个副本提供服务的时候,能够保证负载均衡。

  2健康检查,自愈,容器滚动升级。

  3.提供容器弹性,方便容器替换,比如有容器失效了Kubernetes就可以很容易将损害的容器从集群中替换掉。

  4.将容器组织成组,并且提供容器间的负载均衡。

  5.方便测试。可以将测试服务器集中化,自动化管理。可分配资源将各种平台的服务器加入集群,按需部署或者销毁。

  6.持续集成时候方便对应用部署。

  7.提供了对微服务的支撑 ,包括服务发现,服务编排,内部路由支持,服务快速部署,自动负载均衡等。

  8.面向云原生可移植的新"云平台"。

三. Kubernetes核心概念及架构设计

  

                 Kubernetes总体架构图

   Kubernetes基本概念:

    1. Cluster(集群):Kubernetes作为一个服务调度平台,需要资源/机器等资源才可以进行调度,所以是Kubernetes一个集群架构,Kubernetes可以利用集群上的资源运行各种基于容器的应用。下面这篇文章就是说Kubernetes Cluster:https://www.redhat.com/en/topics/containers/what-is-a-kubernetes-cluster

      

    Master node是主服务器,Work node是用于部署应用容器的服务器。

      

      

      Master节点

        上图中间六边形就是Master节点。Master是Cluster 的大脑,是控制整个Kubernetes集群的核心,它的主要职责是调度,即决定将应用放在哪里运行。运行着如下一系列Daemon服务:

          1. kube-apiserver

          2. kube-scheduler

          3. kube-controller-manager

          4. etcd

          5. Pod网络

          

        Node节点

          Node是Pod运行的实际节点,Node职责是运行容器应用。Kubernetes本身知道Docker和rkt等容器的运行。 在Node节点中,运行的Kubernetes组件包括:

           1. kubelet

           2. kube-proxy

           3. Pod网络

    2. Pod:Pod是kubernetes中一个非常重要的概念,Pod是放置容器的地方,因为所有的应用最终都是运行在Pod里的。

        Pod里可以运行容器,那么Pod运行在哪呢?

        Pod运行在一个node上。只要资源足够,一个node上可以有任意个pod。kubelet负责调度pod。

        位于Work node里面,Pod是基本操作单元,也是应用运行的载体,比如可以存放web服务器的容器。整个Kubernetes系统都是围绕着Pod展开,比如如何部署和运行Pod,如何保证Pod数量,如何访问Pod等。而之前所说的副本就是指Pod。另外Pod是有生命周期的。

                分离关注点,每个容器只做一件事。

    3. Deployment:Deployment控制器定义了Pod部署信息,并控制Pod的部署并维持其状态。

  

原文地址:https://www.cnblogs.com/songgj/p/14205198.html