在kubernetes中,有一个定义叫做名称。这个名称其实就是对应的是对象的名称。我们每一个对象都会有一个唯一的uid,但是在真实查看的时候,我们知道这些id看起来不太直观,所以就需要定义一个名称,让我们一看就知道这对象是什么,而不是去看uid知道这个对象是什么。
下面举个例子,我们贴一个演示环境的yml样例讲解下。
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
k8s.kuboard.cn/displayName: nginx
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: nginx
name: nginx
namespace: kuboard
resourceVersion: '11532'
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: nginx
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: nginx
spec:
containers:
- image: 'nginx:1.7.9'
imagePullPolicy: IfNotPresent
name: nginx
ports:
- containerPort: 80
hostPort: 8080
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30这是我们创建一个nginx所需要定义的配置文件,我们可以在这个配置文件里面看到有两个name,那么分别是对应的什么呢?
第一个name(在第10行),这里的name叫做nginx,是我们自定义的。他的含义就是需要在kubernetes里面创建一个名称为nginx的pod容器对象。
第二个name(在第36行),这里的name也叫做nginx,也是我们自定义的。他的含义就是运行一个docker容器,名称叫nginx。
所以虽然上面两个名称在表现上是一模一样的(两者都是nginx,字面是一样的),但是他对应的含义确不一样。
备注:
1、在同一个名称空间里面,对象的名称不能出现重复的,例如在kuboard的名称空间下,一旦创建了名称为nginx的对象,则不能再创建名称为nginx的对象。只能继续创建nginx-1这样不同名称的对象。
2、在同一个名称空间里面,如果之前创建了一个名称为nginx的对象,那么我们把他删除后,可以再创建一个名称为nginx的对象。
3、在不同的名称空间里面,例如在kuboard1的名称空间下创建了一个名称为nginx的对象,那么我们可以在kuboard2的名称空间下继续创建一个名称为nginx的对象。









还没有评论,来说两句吧...