为什么Kubernetes定义了多个Selector



我对Kubernetes(AKS(完全陌生,我创建了一个服务,如下所示:https://learn.microsoft.com/it-it/azure/aks/internal-lb

The Yaml file looks like this :
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
**service.beta.kubernetes.io/azure-load-balancer-internal: "true"**
spec:
type: LoadBalancer
loadBalancerIP: **10.240.0.25**
ports:
- port: 80
selector:
app: internal-app

几分钟后,创建了负载平衡器,并正确分配了静态ip。问题是选择器似乎不起作用。我无法将吊舱连接到此服务。提前感谢您的帮助。

这是POD部署yaml文件:

{
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "internal-app-6b587d746d-kstrx",
"generateName": "internal-app-6b587d746d-",
"namespace": "default",
"selfLink": "/api/v1/namespaces/default/pods/internal-app-6b587d746d-kstrx",
"uid": "03389261-a8b6-4d17-ba7f-231fd09682ec",
"resourceVersion": "544508",
"creationTimestamp": "2020-03-17T07:11:00Z",
"labels": {
"k8s-app": "internal-app",
"pod-template-hash": "6b587d746d"
},
"ownerReferences": [
{
"apiVersion": "apps/v1",
"kind": "ReplicaSet",
"name": "internal-app-6b587d746d",
"uid": "5099da2e-8a7a-4483-b752-3baccffe6d64",
"controller": true,
"blockOwnerDeletion": true
}
]
},
"spec": {
"volumes": [
{
"name": "default-token-kbhrk",
"secret": {
"secretName": "default-token-kbhrk",
"defaultMode": 420
}
}
],
"containers": [
{
"name": "internal-app",
"image": "xxxxxxxxxxxxxxxxxx.azurecr.io/projtest:20293",
"resources": {},
"volumeMounts": [
{
"name": "default-token-kbhrk",
"readOnly": true,
"mountPath": "/var/run/secrets/kubernetes.io/serviceaccount"
}
],
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"imagePullPolicy": "IfNotPresent",
"securityContext": {
"privileged": false
}
}
],
"restartPolicy": "Always",
"terminationGracePeriodSeconds": 30,
"dnsPolicy": "ClusterFirst",
"serviceAccountName": "default",
"serviceAccount": "default",
"nodeName": "aks-agentpool-47203187-vmss000000",
"securityContext": {},
"imagePullSecrets": [
{
"name": "acrazure"
}
],
"schedulerName": "default-scheduler",
"tolerations": [
{
"key": "node.kubernetes.io/not-ready",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 300
},
{
"key": "node.kubernetes.io/unreachable",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 300
}
],
"priority": 0,
"enableServiceLinks": true
},
"status": {
"phase": "Running",
"conditions": [
{
"type": "Initialized",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2020-03-17T07:11:00Z"
},
{
"type": "Ready",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2020-03-17T07:11:02Z"
},
{
"type": "ContainersReady",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2020-03-17T07:11:02Z"
},
{
"type": "PodScheduled",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2020-03-17T07:11:00Z"
}
],
"hostIP": "10.240.0.4",
"podIP": "10.244.0.40",
"startTime": "2020-03-17T07:11:00Z",
"containerStatuses": [
{
"name": "internal-app",
"state": {
"running": {
"startedAt": "2020-03-17T07:11:01Z"
}
},
"lastState": {},
"ready": true,
"restartCount": 0,
"image": "axxxxxxxxxxxxxxxazurecr.io/projtest:20293",
"imageID": "docker-pullable://xxxxxxxxxxxxxxxxxxxxxxx/projtest@sha256:cxxxxxxxxxxxxxx315464984f7e0fe10ecef57xxxxxxxxxxxxxxxxxxxb7d227a4",
"containerID": "docker://c4d74c2xxxxxxxxxxxxxxxxxxxxxxx878337823dc"
}
],
"qosClass": "BestEffort"
}
}

检查服务是否有端点。如果选择器是正确的,它将有Pod IP作为端点。

kubectl describe svc internal-app

服务中的选择器与吊舱上的任何标签都不匹配

selector:
app: internal-app

要么在吊舱中添加标签app: internal-app,要么将服务中的选择器更改为

selector:
k8s-app: internal-app

pod标签和服务选择器不匹配。

pod has below label
"k8s-app": "internal-app",
You need to correct service selector 
selector:
app: internal-app

更新服务定义,如下所示。它应该工作

apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
**service.beta.kubernetes.io/azure-load-balancer-internal: "true"**
spec:
type: LoadBalancer
loadBalancerIP: **10.240.0.25**
ports:
- port: 80
selector:
k8s-app: internal-app

最新更新