Kubernetes基础概念

、Kubernetes是什么?

         Kubernetes(简称K8S)是一个实现容器自动化操作的开源平台,包括部署、调度、滚动更新和节点集群扩展等操作。这些复杂的操作过程在K8S中均可通过一两行命令或者web端点击进行完成,不需要再使用脚本完成。Docker是K8S的一个基础组件,K8S除了支持Docker之外,也支持另外一种容器技术---Rocket。使用K8S可以实现:


  • 容器自动化部署和复制;
  • 随时随地对任意容器服务进行扩缩容操作;
  • 将提供同一服务的容器组织成组,对外实现服务的负载均衡;
  • 平滑升级应用程序容器的新版本,升级过程中对外服务不会中断;
  • 提供容器弹性,若宿主机挂掉,可自动在其他健康节点启动新的容器。

二、K8S架构

        K8S架构图如下: 

     

     上图中所包含的组件有:


  • Pod Container:容器
  • Kubernetes Master:集群控制节点
  • Node:集群工作节点
  • Labels:标签
  • Service:服务(可以认为是一组Pod的负载均衡器)
  • Kubelet:节点代理,运行与所有节点,与主节点进行通信的工具
  • kube-proxy:service使用其将链接路由至后端pod上
  • ApiServer:集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);
  • Replication Controller:复制控制器,控制pod个数

Pod


     Pod是K8S集群中的最小控制单元,运行于各个worker节点上,包含一组容器和数据卷。同一个pod里的各个容器共享一个网络命名空间和IP,但每个容器的端口是唯一的,各个容器间可以使用localhost:端口号进行通信。Pod并不是持久的,每个服务的Pod的个数由replication controller进行控制,Pod重启后IP可能会发生变化,这时就需要Service对前端提供服务,所以前端并不需要知道后端服务的具体IP。

Label


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

Replication Controller


      是否手动创建Pod,如果想要创建同一个容器的多份拷贝,需要一个个分别创建出来么,能否将Pods划到逻辑组里?这些问题在k8s中都将由Replication Controller给出答案。Replication Controller会确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,始终保持集群中有3个相同的Pod在提供服务。如果之前挂掉的Pod由恢复了,那么Replication Controller会在现有的Pod中剔除一个;如果将yaml文件中的Pod个数改为5个,那么Replication Controller会立即在Node节点上拉起两个新的Pod。也可以按照次方法进行缩容。这种特性在执行滚动升级时特别有用,它会根据你新的image建立起一个新版本Pod,然后剔除一个旧的版本,如此类推,就像灰度发布那样,用一个个新Pod逐渐代替旧的Pod,这样你的程序在提供服务时不会瞬间中断,即实现平滑发版。

Service


     如果Pods是短暂的,那么重启时IP地址可能会改变,怎么才能从前端容器正确可靠地指向后台容器呢? 这些事情将由Service来解决。假定有2个后台Pod,并且定义后台Service的名称为‘backend-service’,label选择器为(tier=backend, app=myapp) 的Service会完成如下两件重要的事情:

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值