我尝试在 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 的帮助
没有发现 Pod 定义和标签有任何问题。 错误消息“错误:服务器没有资源类型“test-pod”,看来您已经尝试过类似的操作
$ kubectl get test-pod
error: the server doesn't have a resource type "test-pod"