在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的对象。
还没有评论,来说两句吧...