在部署和管理pod中,只有先理解这些概念,才能更好的去进行控制器的学习和管理。
- 名称
- kubernetes rest api所有的对象都是由名称和UID组成。
- 名称
- UIDs
- kubernetes系统自动生成的字符串唯一标识对象。
- 命名空间
- 介绍
- kubernetes支持多个虚拟集群,他们底层依赖于一个物理集群。这些虚拟机群称为命名空间。
- 何时使用命名空间
- 命名空间适用于很多库团队、跨项目的用户场景。对于只有几个到几十个用户的集群,根本不需要创建命名空间。
- 不要使用命名空间来做轻微的资源隔离,例如软件的不同版本,请使用lables来区分。
- 使用命名空间
- 查看命名空间 kubectl get namespace
- default 没有指名使用其他命名空间的对象,会默认使用default
- kube-system kubernetes系统创建对象所使用的命名空间
- kube-public 这个命名空间是自动创建的,所有用户都可以读取他。主要用于集群使用。
- 为请求设置命名空间 kubectl run nginx --image=nginx --namespace= 命名空间
- 查看指定命名空间的pod kubectl get pods --namespace=命名空间
- 设置系统默认命名空间
- 设置默认命名空间 kubectl config set-context --current --namespace=命名空间
- 查看系统默认命名空间 kubectl config view | grep namespace:
- 命名空间和DNS
- 当您创建一个service时,kubernetes会创建一个相应的DNS条目
- 这对于跨多个命名空间(如开发、分级和生产)使用相同的配置非常有用。
- 并非所有的对象都在命名空间中
- 查看在命名空间中的对象
kubectl api-resources --namespaced=true
- 查看不在命名空间中的对象
kubectl api-resources --namespaced=false
- 命名空间的创建、删除等
- 标签和选择器
- 官网链接 https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/labels/
- 标签
-
选择器
- 通常一个对象携带多个标签,通过标签选择器来找到对象组。
- 标签过滤-运算符
- 标签过滤-指定一个集合
- in 示例:environment in (production,qa)
- notin 示例:environment notin(frontend,backend)
- exists
- 示例一:partition #所有包含partition标签的资源
- 示例二:!partition #所有不包含partition标签的资源
- API
- 查找指定标签的pod kubectl get pods -l app=useridentity,app=useridentity #同时指定多个标签
- 查找指定标签的pod kubectl get pods -l ‘app in (useridentity)‘ #集合方式查找
- 在API对象上设置引用
- 在一些kubernetes对象,例如:Pod,ReplicationController 等也使用标签选择器指定了其他的资源集合;
- 并且这些对象只支持相等性的方式设置;
设置格式一:
"selector": {
"component" : "redis",
}
设置格式二:
selector:
component: redis
目前job、deployment、Replica Set、Daemon Set支持集合的方式;
selector:
matchLabels:
component: redis
matchExpressions:
- {key: tier, operator: In, values: [cache]}
- {key: environment, operator: NotIn, values: [dev]}
- 注解
- 字段选择器
- 推荐使用的标签
Kubernetes(十八)名称、命名空间、标签和选择器、注解、字段选择器
原文:https://www.cnblogs.com/TSir/p/12257088.html