day2
kubernetes基本概念和术语
kubernetes中的大部分概念如Node,Pod,Replication Controller,Service等都可以看做一种资源对象,几乎所有的资源对象都可以通过Kubernetes提供的kubctl工具(或者API编程调用)执行增删改查等操作并将其保存在etcd中持久化存储。从这个角度看Kubernetes是一个高自动化的资源控制系统,它通过跟踪对比etcd库里保存的“资源期望状态”与当前环境中的“实际资源状态”的差异来实现自动控制和自动纠错的高级功能。
1.master
master(指的是集群控制节点)
kube-apiserver(集群控制的唯一接口)
kube-controller-manager(所有资源对象的自动化控制中心)、】
kube-scheduler(pod资源调度)
另外master上还启动了etcd server进程,因为kubernetes里所有的资源对象的数据都是保存在etcd中的。
2.Node
kublet(负责pod容器的创建,启停等服务,同时与master节点密切合作)
kube-proxy(实现kubernetes Service的通信与负载均衡的重要)
docker Engine(docker):Docker引擎,负责本机容器的创建于管理工作。
查看集群中有多少个Node:
#kubectl get nodes
......
查看详细的信息
#kubectl describe node ( Node name)
...................
3.Pod
Pod》》》》Pause container(根容器) + 多个用户业务容器
pod拥有唯一IP 业务容器共享 pause的网络、volume
Pod之间可以通过Tcp/ip直接通信(通常是通过虚拟二层网络技术实现的)如
Flannel,Openvswich
注意 :一个Pod里的容器与另外主机上的Pod容器能够直接通信。
Pod有两种类型:普通的Pod及静态的Pod( static Pod),后者比较特殊,它并不存放在etcd存储里,而是存放在某个具体的Node上的具体文件里,并且只能在此node上运行,而普通的pod创建后就会被存放到etcd,随后被调度到某一个node上绑定,随后被实例化一组相关的Docker容器并启动.
*:kubernetes里的所有资源对象都可以采用yaml或者JSON格式的文件来定义或者描述。
4.标签
一个Label是一个key=value的键值对,label可以附加到各种资源对象上,可以定义任意数量的资源对象上。
@版本标签:“release”:“stable”,“release”:“canary”。。。
@环境标签:“environment”:“dev”..
@架构标签:“tier”:“frontend”...
@分区标签:“partition”:“customerA”....
@质量管控标签:“track”:“daily”....
label selector 可以查询和筛选拥有某些label的资源对象,selector可以被类比为 sql里的where 查询条件,例如:
name=redis-slave
env!=production
name in (redis-master,redis-slave)
name not in (php-frontend),env!=production
selector应用场景:
1.controller进程通过RC定义的pod筛选pod副本数量。
2.proxy通过service的label selector来选择相应的pod自动创建每个service到对应的pod的请求转发路由表,从而实现智能负载均衡。
3.scheduler可以通过label实现定向调度
day2
最新推荐文章于 2022-08-02 13:38:12 发布