10分钟了解kubernets基本概念

(一)定义

首先,什么是kubernetes?

Kubernetes(简称k8s),官网地址:https://kubernetes.io/

是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.

(二)功能
使用Kubernetes可以:
  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 提供容器弹性,如果容器失效就替换它,等等...
#一条命令就可以部署多层容器(前端,后台等)的完整集群
$ kubectl create -f single-config-file.yaml

(三)Kubernetes Cluster的架构设计图

(四)基本概念
k8s架构基于三个基本的管理对象( pod、service、replication Controller
pod对象也是有自己的架构,也是基于三角模型的管理对象(container、 kubelet、proxy
1. Pods
在Kubernetes系统中, 调度的最小颗粒 不是单纯的容器,而是抽象成一个Pod, Pod是一个 可以被创建、销毁、调度、管理的 最小的部署单元 比如一个或一组容器
2. Replication Controllers
Replication Controller是Kubernetes系统中最有用的功能,实现 复制多个Pod副本 ,往往一个应用需要多个Pod来支撑,并且可以保证其复制的副本数,即使副本所调度分配的宿主机出现异常,通过Replication Controller可以保证在其它主宿机启用同等数量的Pod。Replication Controller可以 通过repcon模板来创建多个Pod副本 ,同样 也可以直接复制已存在Pod,需要通过Label selector来关联
3. Services
Services是Kubernetes最外围的单元,通过虚拟一个访问IP及服务端口,可以访问我们定义好的Pod资源,目前的版本是通过iptables的nat转发来实现,转发的目标端口为Kube_proxy生成的随机端口,目前只提供GOOGLE云上的访问调度,如GCE。如果与我们自建的平台进行整合?请关注下篇《kubernetes与HECD架构的整合》文章。
4. Labels
Labels是用于区分Pod、Service、Replication Controller的key/value键值对,仅使用在Pod、Service、Replication Controller之间的关系识别,但对这些单元本身进行操作时得使用name标签。
5. Proxy
Proxy不但解决了同一主宿机相同服务端口冲突的问题,还提供了Service转发服务端口对外提供服务的能力,Proxy后端使用了随机、轮循负载均衡算法。

Kubernetes Master
集群拥有一个Kubernetes Master(紫色方框)。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。

Replication Controller
Kubernetes的Replication Controller(简称RC),主要作用是根据yaml文件维持pod总数不变


Kubernetes Service
主要是提供一系列服务,现在,假定有2个后台Pod,并且定义后台Service的名称为‘backend-service’,lable选择器为(tier=backend, app=myapp)。backend-service 的Service会完成如下两件重要的事情:
  • 会为Service创建一个本地集群的DNS入口,因此前端Pod只需要DNS查找主机名为 ‘backend-service’,就能够解析出前端应用程序可用的IP地址。
  • 现在前端已经得到了后台服务的IP地址,但是它应该访问2个后台Pod的哪一个呢?Service在这2个后台Pod之间提供透明的负载均衡,会将请求分发给其中的任意一个(如下面的动画所示)。通过每个Node上运行的代理(kube-proxy)完成。这里有更多技术细节。


(五)kubernetes常用命令
# kubectl get minions    #查查看minion主机
# kubectl get pods    #查看pods清单
# kubectl get services 或 kubectl get services -o json    #查看service清单
# kubectl get replicationControllers    #查看replicationControllers清单
# for i in `kubectl get pod|tail -n +2|awk '{print $1}'`; do kubectl delete pod $i; done    #删除所有pods
或者通过Server api for REST方式(推荐,及时性更高):
# curl -s -L  http://192.168.1.200:8080/api/v1beta1/version | python -mjson.tool    #查看kubernetes版本
# curl -s -L  http://192.168.1.200:8080/api/v1beta1/pods | python -mjson.tool    #查看pods清单
# curl -s -L  http://192.168.1.200:8080/api/v1beta1/replicationControllers | python -mjson.tool    #查看replicationControllers清单
# curl -s -L  http://192.168.1.200:8080/api/v1beta1/minions | python -m json.tool    #查查看minion主机
# curl -s -L  http://192.168.1.200:8080/api/v1beta1/services | python -m json.tool    #查看service清单
注:在新版Kubernetes中,所有的操作命令都整合至kubectl,包括kubecfg、kubectl.sh、kubecfg.sh等

刚接触k8s不久,把学到的一些东西整理出来,所以本文很多内容来自于网络,主要是下面这一篇文章,欢迎交流学习。

原文链接:Learn the Kubernetes Key Concepts in 10 Minutes


  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值