zoukankan      html  css  js  c++  java
  • 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的部署并维持其状态。

      

  • 相关阅读:
    Wicket框架使用小结
    【YII是个什么鬼】YII入门——URL Manager配置
    【碎碎念】你要做重要的工作
    【科普】五分钟分清网页钟各种长度单位px、em、rem
    【CSS】最简单的css3实现的水平导航栏的手风琴效果
    PYTHON__关于Socket中的Select使用理解
    PIG__Failed to create DataStorage解决方案
    MYSQL__Mysql免安装版的使用(Windows7)
    PYTHON__生成器和普通函数的区别
    vim status 颜色配置
  • 原文地址:https://www.cnblogs.com/songgj/p/14205198.html
Copyright © 2011-2022 走看看