Kubernetes 学习

优于主管要求这周进行Kubernetes的相关学习,首选我们来了解下什么是Kubernetes,

什么是Kubernetes?

Kubernetes,是目前流行的一种开源容器编排技术。目前采用阿里云容器服务来为项目提供Kubernetes集群支持

我们可以通过容器服务管理控制台创建以安全高可用的Kubernetes集群,能够阿里云虚拟化/存储/网络/安全能力,提供高性能可伸缩的应用管理能力,简化集群的搭建和扩容等工作。

Kubernetes支持对容器化应用程序的部署、扩展和管理。有如下功能

  • 弹性扩展和自我修复
  • 服务发现和负载均衡
  • 服务发布与回滚
  • 机密和配置管理

在实际使用过程中,使用Kubernetes只要一个部署文件,使用一条命令来部署多层容器(前端,后端等)的完整集群。

$ kubectl create -f single-config-file.yaml

Kubernetes相关核心概念


集群


集群是一组节点,可以是物理服务器或者虚拟机,在从基础上再安装了Kubernetes平台。如下图所示:


其中,有若干组件

  • Pod
  • Container(容器)
  • Label(label)标签
  • Replication Controller(复制控制器)
  • Service(enter image description here)(服务)
  • Node(节点)
  • Kubernetes Master(Kubernetes主节点)

Pod


pod(绿色的)安排在节点上,包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用使用localhost互相通信。Pod是短暂的,不是持续性实体。

  • Pod是短暂的,那如何保证持久化容器数据使其能够跨重启而存在+++++++++++++++kubernetes支持卷的概念,所以可以使用持久化的卷类型(persistent volume
  • 是否需要手动创建Pod,如果要创建桐一个容器的多个拷贝,需要一个个分别创建出来吗++++++++++++++++可以手动,也可以使用Replication Controller使用Pod模板创建多份拷贝
  • 如果Pod是短暂的,那么重启时IP地可能会改变,那么怎么才能从前端容器正确可靠的地使用纸箱后端容器+++++++++++++++++++++可以使用service

Lable

一些Pod有label。一个label是attach到Pod的一对键值对,用来传递用户定义的属性。比如,你可能创建了一个 tier 和 app 的标签,通过Label(tier = frontend ,  app = kevinapp)来标记前端 pod 容器,(tier = backend ,  app = kevinapp)标记后台Pod。然后。可以使用Selectors选择带有特定Label的Pod,并且将Service或者Replication Controller应用到上面

Replication Controller

2.gif

Replication Controller确保任意时间都有指定数量的Pod“副本”在运行。如果为某

个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续

监控它们。如果某个Pod不响应,那么Replication Controller会替换它,保持总数

为3.如上面的动画所示:

一旦原来的Pod恢复的,使得目前的Pod的数量为4超过了3,Replication Controller

就会终止其中一个保持数量为3。还可以按照这样的方式缩小pod,这个特性在执行

滚动升级时很有 用。

当创建Replication Controller时,需要指定两个东西:
  1. Pod模板:用来创建Pod副本的模板
  2. Label:Replication Controller需要监控的Pod的标签

目前我们已经可以创建Pod的一些副本了,如何在这些副本上实现负载均衡呢,我们

需要的时Service


   Service

处理重启时IP地址改变的情况

Service是定义一系列Pod以及这些pod策略的一层 抽象 。Service通过Label找到pod

组。因为Service时抽象的,所以在图表里通常看不到他们的存在,


下面举个例子来详细的说明这个过程:

现在假设后台有两个后台Pod,并且定义后台Service的名称为“backend-service” 

,label的选择器(tier=backend, app=myapp)。backend-service的Service会完

成如下两件重要的事情:

  • 会为Service创建一个本地集群的DNS入口,因此前端pod只需要DNS查找主机名为“backend-Service”,能够解析出前端应用程序可用的IP地址。
  • 现在前端得到了后端服务的IP地址,但是他要访问其中的哪一个Pod呢 ,Service在这两个Pod之间提供透明的负载均衡,会将请求发送给其中的任意一个。通过每个Node上运行的代理完成。

3.gif

Node

节点为物理或者虚拟机器,作为kubernetes的worker,通常称为Minion。每个节点

运行如下kubernetes关键组件

  • Kubelet:是主节点代理
  • Kube-proxy:Service使用将其链接路由到Pod,如上文所述
  • Docker或者Rocket:kubernetes使用容器技术来创建容器

Kubernetes Master

集群拥有一个Kubernetes Master(紫色方框)。Kubernetes Master提供集群的独

特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用

来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication 

Controller。

猜你喜欢

转载自blog.csdn.net/kevin_loving/article/details/80897885