命名空间(Namespace)
命名空间是一种用于在Kubernetes集群中划分资源的虚拟化手段。每个资源都属于一个命名空间,使得多个团队或应用可以在同一个集群中独立运行,避免资源冲突。
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
kubectl create ns xxx
kubectl get namespaces
kubectl get pods -n my-namespace
所有未明确指定命名空间的资源都属于默认命名空间。使用 -n 或 --namespace 选项可以指定操作的命名空间。
标签是Kubernetes中用于对资源进行元数据标记的机制。标签是键值对,可以附加到Pod、Service、Node等各种资源上,以便于资源的分类、过滤和组织。
metadata:
labels:
app: my-app
environment: production
kubectl label [--overwrite] key1=value1 key2
kubectl label pod pod-kubectl key1=value1 key2=2
// 如果更新label值,则需要带上--overwrite
kubectl label pod pod-kubectl --overwrite key1=value1 key2=2
//查看定义的标签
kubectl get pod -owide --show-labels
kubectl get pods -l app=my-app
kubectl get pods -l environment=production
kubectl get pods -l app=my-app,environment=production
kubectl get pod -l 'key2 in(3,4)'
kubectl get pod -l 'key2 notin(3)' --show-labels
selector:
matchLabels:
component: redis
matchExpressions:
- { key: tier, operator: In, values: [cache] }
- { key: environment, operator: NotIn, values: [dev] }
标签和命名空间的结合使用,使得Kubernetes集群能够更好地组织和管理各种资源。标签可以帮助你根据不同的属性对资源进行分类,而命名空间则可以将资源分组到独立的隔离单元中。这种组织结构使得Kubernetes集群更加灵活和易于管理。