为了管理异构和不同配置的主机,为了便于Pod的运维管理,Kubernetes中提供了很多集群管理的配置和管理功能,通过namespace划分的空间,通过为node节点创建label和taint?于pod的调度等
Node是kubernetes集群的?作节点,可以是物理机也可以是虚拟机。
Node的状态
Node包括如下状态信息
Node管理
禁?pod调度到该节点上
kubectl cordon
驱逐该节点上的所有pod
kubectl drain
该命令会删除该节点上的所有Pod(DaemonSet除外),在其他node上重新启动它们,通常该节点需要维护时使?该
命令。直接使?该命令会?动调? kubectl cordon
在?个Kubernetes集群中可以使?namespace创建多个“虚拟集群”,这些namespace之间可以完全隔离,也可以通过某种?式,让?个namespace中的service可以访问到其他的namespace中的服务,我们在CentOS中部署kubernetes1.6集群的时候就?到了好?个跨越namespace的服务,?如Traefik ingress和 kube-system namespace下的service就可以为整个集群提供服务,这些都需要通过RBAC定义集群级别的??来实现
哪些情况下适合使?多个namespace
因为namespace可以提供独?的命名空间,因此可以实现部分的环境隔离。当你的项?和?员众多的时候可以考虑根据项?属性,例如?产、测试、开发划分不同的namespace
Namespace使?
获取集群中有哪些namespace
kubectl get ns
集群中默认会有 default 和 kube-system 这两个namespace。
在执? kubectl 命令时可以使? -n 指定操作的namespace。
?户的普通应?默认是在 default 下,与集群管理相关的为整个集群提供服务的应??般部署在 kube-system 的
namespace下,例如我们在安装kubernetes集群时部署的 kubedns 、 heapseter 、 EFK 等都是在这个namespace下?。另外,并不是所有的资源对象都会对应namespace, node 和 persistentVolume 就不属于任何namespace
Label是附着到object上(例如Pod)的键值对。可以在创建object的时候指定,也可以在object创建后随时指定。Labels的值对系统本身并没有什么含义,只是对?户才有意义
Label能够将组织架构映射到系统架构上(就像是康威定律),这样能够更便于微服务的管理,你可以给object打上如下类型的label
"release" : "stable" , "release" : "canary"
"environment" : "dev" , "environment" : "qa" , "environment" : "production"
"tier" : "frontend" , "tier" : "backend" , "tier" : "cache"
"partition" : "customerA" , "partition" : "customerB"
"track" : "daily" , "track" : "weekly"
"team" : "teamA" , "team:" : "teamB"
语法与字符集
Label key的组成:
Label value的组成:
Label selector
Label不是唯?的,很多object可能有相同的label。
通过label selector,客户端/?户可以指定?个object集合,通过label selector对object的集合进?操作
Label selector有两种类型:
$ kubectl get pods -l environment=production,tier=frontend
$ kubectl get pods -l ‘environment in (production),tier in (frontend)‘
$ kubectl get pods -l ‘environment in (production, qa)‘
$ kubectl get pods -l ‘environment,environment notin (frontend)‘
在API object中设置label selector
在 service 、 replicationcontroller 等object中有对pod的label selector,使??法只能使?等于操作,例如:
selector:
component: redis
在 Job 、 Deployment 、 ReplicaSet 和 DaemonSet 这些object中,?持set-based的过滤,例如
selector:
matchLabels:
component: redis
matchExpressions:
- {key: tier, operator: In, values: [cache]}
- {key: environment, operator: NotIn, values: [dev]}
注解。Annotation可以将Kubernetes资源对象关联到任意的?标识性元数据。使?客户端(如?具和库)可以检索到这些元数据
Label和Annotation都可以将元数据关联到Kubernetes资源对象。Label主要?于选择对象,可以挑选出满?特定条件的对象。相?之下,annotation 不能?于标识及选择对象。annotation中的元数据可多可少,可以是结构化的或?结构化的,也可以包含label中不允许出现的字符。
annotation和label?样都是key/value键值对映射结构:
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
可以记录在 annotation 中的对象信息
原文:https://www.cnblogs.com/g2thend/p/12745145.html