kubernetes学习笔记

kubernetes学习笔记

Kubernetes是多年前由谷歌创造的,基于他们在大规模云计算领域的容器编排经验。kubernetes在古希腊语中意为”舵手“,被简称为”k8s“或者”kube“。
K8s是容器编排引擎,用于在一个集群中控制大量容器生命周期的工具。并非意味着它只用于启动和停止容器进程。还负责管理包括容器持久化卷和网络连接等在内的多种资源并协调这些资源的相互关系以帮助应用容器完成工作,
比如,k8s可以帮助管理应用程序及其生命周期各方面,如持久化卷、“secret”等资源。它可以为你管理容器各方面,你只需要描述所期望系统的最终状态,k8s去实现这个状态。

K8S的基本概念和术语
1.Master
它属于集群中的控制节点,每个k8s集群里需要一个master借点来控制整个集群的控制和管理,基本上k8s所有的控制命令都发给它master节点通常会占据一个独立的服务器,后面所执行的所有命令基本都是在master节点上进行的。
Master节点上运行着以下一组关键的进程:
A:kubernetes API Server(kube-apiserver):提供HTTP REST接口的关键服务进程,是kubernetes里所有资源的增、删、查、改等操作的唯一入口,也是集群控制的入口进程。
B:kubernetes Controller Manager(kube-controller-manager):kubernetes所有资源对吸收那个的自动化控制中心,可以理解为资源对象的”大总管“。
C: kubernetes Scheduler(kuber-scheduler):负责资源调度(pod)的进程,相当于公交公司的”调度室“。
在master节点上,还需要启动一个etcd服务,它是kubernetes的数据库。

2.Node
除master节点之外,在k8s集群中的其他机器被称为node,它是集群中的工作负载节点,每个node会被master分配一些工作负载(docker容器),当每个node宕机时,工作负载会被master转移到其他节点上。node跟master一样,可以是一台物理机,也可以是一台虚拟机。
Node节点上运行着一下一组关键进程:
A:kubelet:负责pod对应容器的创建、启动、停止等任务。与master密切协作,实现集群管理的基本功能。
B:kube-proxy:实现kubernetes的通信与负载均衡的重要机制。
C:Docker Engine:docker引擎,负责本机的容器创建和管理工作。

Node节点在运行期间可以动态地加入到kubernetes集群中。前提是这个节点上已经安装、配置、启动上述关键进程。默认情况下,kubelet会想master注册自己,这正是kubernetes推荐node管理的方式。
当node加入集群管理范围后,kubelte进程会定时向master节点汇报自身情况。如操作系统、docker版本、机器的cpu和内存情况,实现高效均衡的资源调度策略。若某个node在指定时间内没有向master上报信息,会被master定为”失联“状态被标记为 Not ready,随后master会自行组织”工作负载大迁移“流程。
执行命令查看集群中node:
屏幕快照 2018-08-17 上午10.57.24.png ¬
查看node的详细信息:
屏幕快照 2018-08-17 上午10.57.37.png ¬

3.Pod
Pod是kubenetes中最重要最基本的概念。每个pod都有一个唯一的ip 称为pod IP,pod里的容器共享pod IP跟资源。任意两个pod间的tcp/ip直接通信,通常采用虚拟二层网络来实现。如Flannel、open vswitch等。同一台主机上的两个pod间可直接通信。
Pod分为普通pod跟静态pod。静态pod并不存放在etcd里而是放在某个具体的node上的一个具体文件中,并且只能再此node上运行;普通pod一旦被创建就会被放入到etcd中存储,随后被master调度到某个具体的node上进行绑定。随后该pod被对应node上的kubelet进程实例化成一组相关的docker容器并启动。
如果pod中的某个容器宕机时,kubernetes会自动检测到这个问题,然后重启这个pod。若pod所在的node宕机,master则会将这个node上的pod重新调度到其他节点上。

4.Label
Label是kubernetes集群中另外一个核心概念。它是一种key=value的方式,key跟value都有用户自己指定。label可附加到各种资源上,如node、pod、service、rc等,同一个资源可以定义任意数量的label,同一个label也可被添加到任意数量的资源对象上。label通常在资源定义是确定,也可在对象创建后动态添加或者删除。
通过对资源对象捆绑label来实现多维度的资源分组管理功能,以便灵活、方便地进行资源分配、调度、配置、部署等管理工作。
下面例子:
Name = redis-slave:匹配所有具有标签name=redis-slave的资源对象。
还可以采用集合操作的表达式匹配标签如:namr in (redis-master,redis-slave):匹配所有具有标签name=redis-master或者name=redis-slave的资源对象。
Label Selector定义name=XXX,资源调用时便可以直接通过它选择合适的pod。提高集群的高效性。

5.Replication Controller
Replication controller简称 RC,它定义一个期望的场景既声明某种pod的副本数量在任意时刻都符合某个预期值。RC定义包括以下几个部分:
A:pod期待副本数量。
B:用于筛选pod的Label Selector。
C:当pod的副本数量少于预期数量时用于创建新的pod的pod模板(template)。
当定义一个RC并提交到kubernetes集群中后,master节点上的controller manager组件得到通知,会定期巡视系统中当前存活的目标pod,并确保当前pod数量刚好是期望值,若多,则停掉一些pod;若少,则会自动创建pod。在运行时通过修改RC的副本数量,来实现pod的动态缩放。
命令:kubectl scale rc redis-slave --replicas=3
删除RC并不会影响RC已经创建的pod。若需要删除所有的pod,可将replicas设为0,然后更新该RC。kubectl提供了stop和delete命令来一次性删除RC和RC控制的全部pod。此外RC还可实现滚动升级。

6.Deployment
可把deployment看做RC的一次升级,它的引入是为更好地解决pod的编排问题,在deployment内部使用Replica Set(RC在v.12中名称)来实现目的。
运行下述命令创建deployment:
Kubectl create -f tomcat-deployment.yaml

查看deployment信息:
Kubectl get deployments

查看replica set:
Kubectl get rs

7.Service
Service是最核心的资源对象之一, 每个service便是一个微服务。service定义一个服务的访问入口地址,前端的应用通过这个入口地址访问其背后由一群pod集群实例;service与其后端pod副本集群之间则是通过label selector来实现“无缝对接
”。RC的作用实际上则是保证service的服务能力和服务质量始终处于预期标准。

每个pod都会被分配一个单独的ip,而且每个pod都提供了一个独立的endpoint(podip +Contiainerip)以被客户端访问,后端则由一个集群来提供服务。具体地,部署一个负载均衡器(kube-proxy)为这组pod开启一个对外服务端口(如8000),并将这些pod的endpoint列表加入8000端口的转发列表中,客服端就可以通过负载均衡器的对外ip(cluster ip)+服务端口来访问此服务,而客户端请求最后会被转发到哪个pod,则由负载均衡器的算法决定。
8.Volume
Volume(计算资源一部分)是pod中能够被多个容器访问的共享的目录,它被定义在pod上,然后被一个pod’里的多个容器挂载到具体的文件目录下。它的生命周期与pod的生命周期相同。Volume还扩展出一种非常实际的应用功能,即容器配置文件集中化定义与管理,通过ConfigMap这个新资源对象来实现。

9.Persistent Volume
Persistent Volume简称PV,可以理解为kubernetes集群中的某个网络存储中对应的一块存储。它只存储网络,不属于任何node,但可以在每个node上访问;它并不是定义在pod上,而是独立于pod之外定义。

10.Namespace
Namespace是kubernetes中另一个非常重要的概念,在很多情况下用于实现多租户的资源隔离,namespace通过将集群内部的资源对象“分配”到不同的namespace中,形成分组上不同的不同项目、小组或者用户组,便于不同的分组在共享使用整个集群的资源同时还能被分别管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值