Kubernetes pod 未使用层标签创建

问题描述 投票:0回答:1

我尝试在 minikube 中创建一个如下所示的简单 Pod

    apiVersion: v1
    kind: Pod
    metadata:
        name: test-pod
        labels:
          tier: frontend
    spec:
        containers:
        - name: nginx
          image: nginx:latest
          ports:
          - containerPort: 80
        restartPolicy: OnFailure
        

Minikube 告知创建成功

pod/test-pod created

但是当我用

kubectl get pod
检查时,我找不到
test-pod
。我也尝试了
kubectl describe test-pod
它通知pod不存在

error: the server doesn't have a resource type "test-pod"

我还检查活动

kubectl get event

5m40s       Normal   Pulling            pod/test-pod                Pulling image "nginx:latest"
5m37s       Normal   Pulled             pod/test-pod                Successfully pulled image "nginx:latest" in 2.807s (2.807s including waiting)
5m37s       Normal   Created            pod/test-pod                Created container nginx
5m37s       Normal   Started            pod/test-pod                Started container nginx
2m41s       Normal   Killing            pod/test-pod                Stopping container nginx
20s         Normal   Scheduled          pod/test-pod                Successfully assigned default/test-pod to minikube

很奇怪为什么pod没有被创建。如果我去掉标签

tier: frontend

    apiVersion: v1
    kind: Pod
    metadata:
        name: test-pod
    spec:
        containers:
        - name: nginx
          image: nginx:latest
          ports:
          - containerPort: 80
        restartPolicy: OnFailure
        

或者改成这样的自定义标签

    apiVersion: v1
    kind: Pod
    metadata:
        name: test-pod
        labels:
          mylabel: frontend
    spec:
        containers:
        - name: nginx
          image: nginx:latest
          ports:
          - containerPort: 80
        restartPolicy: OnFailure
        

Pod 已成功创建,我可以看到

test-pod
kubectl get pod

据我了解,标签旨在用于指定对用户有意义且相关的对象的标识属性,但并不直接向核心系统暗示语义

那么谁能为我解释一下标签的作用

tier: frontend
以及为什么我不能用这个标签创建pod?

更新:作为@TalRofe的评论,我将标签值

tier: frontend
更改为
tier: test
,效果很好,但我仍然不明白这里的问题

更新2:在@TalRofe 评论的帮助下,我解决了问题。我的集群中有一个复制集,如下所示

    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
      name: myapp-replicas
      labels:
        app: myapp
        tier: frontend
    spec:
      replicas: 3
      selector:
        matchExpressions:
          - {key: tier, operator: In, values: [frontend, backend]}
      template:
        metadata:
          labels:
            app: myapp
            tier: frontend
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
            

如果我删除这个副本集,我可以创建带有标签 tier: frontend 的 pod。看来这个复制集控制集群,并且只允许 3 个带有标签层的 pod:前端。

感谢@TalRofe 的帮助

kubernetes minikube
1个回答
0
投票

没有发现 Pod 定义和标签有任何问题。 错误消息“错误:服务器没有资源类型“test-pod”,看来您已经尝试过类似的操作

$ kubectl get test-pod
error: the server doesn't have a resource type "test-pod"
© www.soinside.com 2019 - 2024. All rights reserved.